我使用实例化的 Amazon EC2 虚拟 Ubuntu 12.04 服务器作为我的单个 Riak 节点。我已经使用 basho 网站上的指南完成了在实例上设置 Riak 的所有适当阶段。x.x.x.x
实例的私有 IP 地址在哪里,包括:
安装
用于获得 root 权限(EC2将
sudo su -
我登录为“Ubuntu”)。使用以下命令安装 SSL Lib:
sudo apt-get install libssl0.9.8
下载 12.04 的 64 位软件包:
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):
vm.args
- 更改
-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'
第二天,我启动了实例,使用实例的新 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
在 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,...]},...]}])
y.y.y.y
新的实例 IP 地址在哪里x.x.x.x
,旧的 IP 地址在哪里。
我已经为此苦恼了一段时间,找不到任何关于该主题的内容,我能想到的唯一解决方案是重新安装 Riak,以防我的 PATH 目录出错。如果失败了,我最后的办法是终止实例并在新实例上重新配置 Riak。所以在我开枪之前,我想问的是:
使用新的实例 IP 地址更新字段后
app.config
,vm.args
为什么riak start
命令不再成功?有没有办法为 Ubuntu EC2 实例分配静态私有 IP?这不仅有助于解决问题,而且节省了我每次更新
app.config
和启动/停止实例的时间。vm.args