@Chrskly 给出了 Rabbit 社区普遍共识的好答案:
- 我听到的主要是处理 DNS 或识别其他服务器的初始化脚本。
- 如果没有 DNS 或主机名别名的帮助,我们将无法使用弹性 IP,因为亚马逊上的内部 IP/DNS 仍在轮换,并且保持静态的公共 IP/DNS 名称不能用作 rabbit 的主机名,除非别名正确。
- 通过脚本进行主机文件操作也是一种选择。这需要附带一个脚本,该脚本可以在启动时识别其他服务器的 DNS,因此在使事情更加“固态”配置方面不会节省太多工作。
我在做什么:
由于 DNS 方面的一些限制,我选择使用引导脚本来初始化机器并使用在启动时分配的默认内部 dns与任何其他可用机器进行集群。如果我们丢失了一台机器,就会出现一台新机器,准备 rabbit 并查找要集群的机器的 DNS 名称。然后它将从集群中删除死节点以进行内务处理。
我在 Python 中使用了一些自制的初始化脚本。但是,这可以通过 Chef/Puppet 之类的工具轻松完成。
更新:来自文档的详细信息
从:
http://www.rabbitmq.com/ec2.html
主机名问题
RabbitMQ 使用系统的当前主机名命名数据库目录。如果主机名更改,则会创建一个新的空数据库。为避免数据丢失,设置固定且可解析的主机名至关重要。例如:
sudo -s #成为root
回声“兔子”> /etc/主机名
回声“127.0.0.1 兔子”>>/etc/hosts
主机名 -F /etc/主机名