分布式系统中的 IP 地址

IP addresses in distributed systems

我遇到了三种情况,认为它们有共同的解决方案:

1) 我唯一的 vps 机器上有繁重的后台任务,因此决定将它们分配给多个 vps。

根据负载,我想使用云提供商动态添加新机器。

2) 我决定将 rabbitmq 服务器移动到其他机器上。首先,我需要更改生产者和消费者的 IP 地址。

3) 我决定 docker 调整我的基础架构。 Docker 容器可以位于不同的网络中。 Docker 可以动态创建容器。有时我会把dockermastermysql、rabbitmq、搜索引擎等容器移动到不同的主机上。

问题:

我想我的问题可以使用 DNS 服务器来解决。 但是我不知道如果我决定将 mysql server/rabbitmq/search 引擎移动到其他机器,DNS 服务器如何自动更新。

我确定有一些概念可以解决我的问题。

尽管您的问题范围很广,但您可能需要研究各种解决方案:

  1. 关于动态添加新机器,如果您使用的是 AWS,则可能需要查看类似 AutoScaling 组的内容。甚至其他云提供商也支持 VM 的自动缩放。要使自动缩放工作,您必须配置监控阈值(如果您使用的是 AWS,请参考 CloudWatch)以便根据负载缩放工作负载 out/in。您可以参考您选择的任何平台。
  2. 关于IP地址问题,您应该将服务绑定到虚拟IP而不是服务器IP。而且,在分布式系统的情况下,您可能希望使用 Zookeeper、consul 等服务发现工具来避免硬耦合并动态发现服务。

希望这些指点有所帮助!

其中一个概念称为服务发现

这是一组不错的幻灯片: http://www.slideshare.net/nustiueudinastea/service-discovery-in-docker-environments

实现这一目标的一些工具是:ETCD、Consul、Zookeeper...