我拥有的:
两台运行 Wheezy/OpenVZ 的服务器
- 每台主机上都有一个 MySQL 容器,主/主复制(mysql1/mysql2)
- 每个主机上复制的 DNS(dns1/dns2)
- 每个主机上都有不同的 Web 容器,但定期备份到另一个主机上。
我想要的是:
每个容器都应使用“本地”MySQL 服务器(在同一硬件节点上运行的服务器)。我希望能够在主机之间移动 Web 容器。每个容器都应自动选择 MySQL 服务器(半自动)。如果一台主机停机,此方案应继续工作。
我尝试过的:
目前,我正在通过脚本查询的 DNS 条目来跟踪哪个容器应该在哪个主机上运行,例如类似这样的问题:“哪个容器应该备份在哪个主机上/备份到哪个主机”。
为了选择正确的 MySQL 服务器,我有一个额外的条目,如“mysql.container_abc”,它解析为 mysql1/mysql2。因此,在容器中的应用程序中,我可以使用“mysql.container_abc”来表示 mysql_connect,如果我想移动容器,我只需更改 dns 即可。
现在我注意到这种方法的一个问题:每个 mysql_connect 都会生成一个 DNS 查询,因为 DNS 没有被缓存,这会不必要地减慢请求速度。
我更希望的是:
某种方式将我们正在运行的主机的信息传递给容器并直接使用它,而不是使用 DNS。例如,某种方式在容器中设置自定义 /etc/hosts 条目。或者任何其他好主意。不必包含 DNS,但不应该要求容器内部有太多特殊的“魔法”。也许可以从外部在容器启动时创建 /etc/hosts?
答案1
你应该读一下控制寄存器命令,您可以设置 /etc/hosts,甚至可以在启动时、启动前等为其指定自定义主机名。
一切都取决于您设置什么或如何设置,并且它是可编写脚本的。