我想在EC2(amazon linux)上设置一个3节点Rabbit集群。我们希望实施恢复,因此如果我们丢失了服务器,它可以自动替换为另一台新服务器。我们可以使用默认主机名(ip-xx-xx-xx-xx)轻松手动设置群集,以便代理ID为rabbit @ ip-xx-xx-xx-xx。这是因为主机名可通过网络解析。
问题是:如果我们丢失/重启服务器,该主机名将会更改,从而使群集无效。我们在设置自定义static hostname方面没有运气,因为它们无法被群集中的其他计算机解析;这是该文章中唯一有意义的部分。
有没有人在EC2上完成了具有恢复实施的RabbitMQ群集?任何建议都表示赞赏。
答案 0 :(得分:1)
您可以在外部DNS服务中为这三个框创建三条A记录,并在配置中使用它们。例如,rabbit1.alph486.com,rabbit2.alph486.com和rabbit3.alph486.com。这些甚至可能是ec2私有IP地址。如果所有的盒子都在同一个区域,它会更快更便宜。如果您丢失了一个框,只需更新DNS记录。
此外,您可以为三个框分配弹性IP。然后,当你丢失一个盒子时,你需要做的只是将弹性IP分配给它。
当然,如果你有少量的客户端,你可以在每个盒子的/ etc / hosts文件中添加条目,并根据需要进行更新。
答案 1 :(得分:0)
@Chrskly给出了很好的答案,这是Rabbit社区的普遍共识:
我在做什么:
由于DNS前端的一些限制,我选择使用引导脚本使用启动时分配的默认内部dns 来使用任何其他可用计算机初始化计算机和群集。如果我们丢失一台机器,将会出现一台新机器,准备兔子并查找要与其集群的机器的DNS名称。然后它将从集群中删除死节点以进行内务管理。
我在Python中使用了一些自制的init脚本。但是,这很容易用像Chef / Puppet这样的东西来完成。
更新:文档详细信息
自:
http://www.rabbitmq.com/ec2.html
主机名
的问题RabbitMQ使用当前主机名命名数据库目录 系统。如果主机名更改,则会创建一个新的空数据库。 为避免数据丢失,设置固定和可解析是至关重要的 主机名。例如:
sudo -s#成为root
回声“兔子”>的/ etc /主机名echo“127.0.0.1 rabbit”>>的/ etc /主机
hostname -F / etc / hostname
答案 2 :(得分:0)
自:
http://www.rabbitmq.com/ec2.html
主机名问题
RabbitMQ使用系统的当前主机名命名数据库目录。如果主机名更改,则会创建一个新的空数据库。为避免数据丢失,设置固定且可解析的主机名至关重要。例如:
sudo -s#成为root
回声"兔子" >的/ etc /主机名 回声" 127.0.0.1兔子" >>的/ etc /主机hostname -F / etc / hostname