Kil*_*705 5 amazon-ec2 riak ubuntu-12.04
我正在使用实例化的Amazon EC2虚拟Ubuntu 12.04服务器作为我的单个Riak节点.我已经通过关于使用芭蕉网站上的引导实例设置了Riak的所有适当的阶段了这里.x.x.x.x 实例的私有IP地址在哪里,其中包括:
使用
sudo su -获得root权限(EC2以"Ubuntu"身份登录).使用以下命令安装SSL Lib:
sudo apt-get install libssl0.9.8下载64位软件包12.04:
wget http://downloads.basho.com.s3-website-us-east-1.amazonaws.com/riak/CURRENT/ubuntu/precise/riak_1.2.1-1_amd64.deb然后通过以下方式解压缩:
sudo dpkg -i riak_1.2.1-1_amd64.deb
按照basho指南中的说明,我更新了这两个文件(使用vi):
- 更改
-name riak@x.x.x.x为我的实例的私有IP.
更改
{http, [ {"x.x.x.x", 8098 } ]}为我的实例的私有IP.更改
{pb_ip, "x.x.x.x"}为我的实例的私有IP.
当我第一次设置服务器并执行上述操作时,Riak节点工作正常,我可以连接到节点,然后使用,riak start然后riak-admin test成功返回:
>Attempting to restart script through sudo -H -u riak
>Successfully completed 1 read/write cycle to 'riak@x.x.x.x'
Run Code Online (Sandbox Code Playgroud)
第二天,我启动了实例,重复上述过程(忽略安装),使用实例的新IP地址y.y.y.y(实例的私有IP每次停止/启动时都会更改)并输入riak start到终端中,只有接受以下内容:
>Attempting to restart script through sudo -H -u riak
>Riak failed to start within 15 seconds,
>see the output of 'riak console' for more information.
>If you want to wait longer, set the environment variable
>WAIT_FOR_ERLANG to the number of seconds to wait
Run Code Online (Sandbox Code Playgroud)
在riak控制台中,给出的错误是:
>gen_server riak_core_capability terminated with reason: no function clause matching orddict:fetch('riak@y.y.y.y', [{'riak@x.x.x.x',[{{riak_core,staged_joins},[true,false]},{{riak_core,vnode_routing},[proxy,...]},...]}])
Run Code Online (Sandbox Code Playgroud)
y.y.y.y新实例IP地址在哪里,是旧实例x.x.x.x.
我一直在摸不着头脑,现在找不到任何关于这个主题的内容,我能想到的唯一解决办法是重新安装Riak,因为我的PATH目录出错了.如果失败了,我的最后一招就是终止实例并在新实例上重新配置Riak.所以在我开枪之前,我想问的是:
在更新字段后app.config,并vm.args用新的实例IP地址,为什么是riak start命令不再成功?
有没有办法为Ubuntu EC2实例分配静态专用IP?这不仅有助于解决这个问题,但节省了我的时间不必更新app.config和vm.args每次启动/停止时间的实例.
因此,经过一些更深入的阅读和激烈的阅读,我找到了一个解决方案:
您需要删除Riak环并再次启动Riak以重置riak_core.
您可以在终端中使用此命令来执行此操作:
rm -rf /var/lib/riak/ring/*
- 注意: 这应该在您更新后完成
app.config和vm.args使用新的服务器IP,否则会发生令人讨厌的副作用.
然后
riak start
我不再被抛出"连接失败"错误,并且在发出riak-admin test命令之后我愉快地收到了(y.y.y.y我的实例的私有IP 在哪里):
>Attempting to restart script through sudo -H -u riak
>Successfully completed 1 read/write cycle to 'riak@y.y.y.y'
Run Code Online (Sandbox Code Playgroud)
我应该注意,此解决方案适用于虚拟服务器以及物理服务器.虽然我认为IP的重新分配在物理服务器中会非常罕见.
现在虽然这解决了问题,但仍然意味着每当我需要重新启动实例时,我必须通过编辑app.config和vm.args文件来更改私有IP地址(记住每次启动/停止Ubuntu实例时私有IP都会更改)然后使用上面的命令清除Riak环,所以它不是一个优雅的解决方案.
如果有人知道如何设置静态私有IP到EC2实例(或另一个解决这两个障碍的解决方案?),它将彻底解决这个问题.
编辑:12/12/12
Amazon Web Services允许将弹性IP与EC2实例(任何类型)相关联.因此,如果实例具有与之关联的弹性IP,即使重新启动,该IP仍将与该实例关联.您可以在此处找到有关弹性IP的文档.
如果您使用的是亚马逊的免费使用套餐,那么创建弹性IP不应该向您收费,只要它与正在运行的实例相关联即可.如果弹性IP被解除关联,则只要该弹性IP保持解除关联,亚马逊就会对未使用的弹性IP的每个运行小时收取费用.例如,终止实例将解除弹性IP的关联,除非重新关联或释放弹性IP,否则上述情况适用.完全停止您的实例然后在以后启动它也将解除弹性IP的关联.
每个实例最多可以有一个弹性IP,这将产生费用.
对于那些有兴趣,你可以找到更多信息,弹性IP的定价这里下弹性IP地址.
| 归档时间: |
|
| 查看次数: |
3700 次 |
| 最近记录: |