分布式系统中的 IP 地址
IP addresses in distributed systems
我遇到了三种情况,认为它们有共同的解决方案:
1) 我唯一的 vps 机器上有繁重的后台任务,因此决定将它们分配给多个 vps。
根据负载,我想使用云提供商动态添加新机器。
2) 我决定将 rabbitmq 服务器移动到其他机器上。首先,我需要更改生产者和消费者的 IP 地址。
3) 我决定 docker 调整我的基础架构。 Docker 容器可以位于不同的网络中。 Docker 可以动态创建容器。有时我会把dockermastermysql、rabbitmq、搜索引擎等容器移动到不同的主机上。
问题:
- 在创建新机器之前我不知道它们的 IP 地址;
- 我不想在我的应用程序、配置文件中手动编辑 IP 地址;
- 如果 Mysql 服务器更改其位置,我希望我的应用程序不依赖于 IP 地址 mysql 位置。
我想我的问题可以使用 DNS 服务器来解决。
但是我不知道如果我决定将 mysql server/rabbitmq/search 引擎移动到其他机器,DNS 服务器如何自动更新。
我确定有一些概念可以解决我的问题。
尽管您的问题范围很广,但您可能需要研究各种解决方案:
- 关于动态添加新机器,如果您使用的是 AWS,则可能需要查看类似 AutoScaling 组的内容。甚至其他云提供商也支持 VM 的自动缩放。要使自动缩放工作,您必须配置监控阈值(如果您使用的是 AWS,请参考 CloudWatch)以便根据负载缩放工作负载 out/in。您可以参考您选择的任何平台。
- 关于IP地址问题,您应该将服务绑定到虚拟IP而不是服务器IP。而且,在分布式系统的情况下,您可能希望使用 Zookeeper、consul 等服务发现工具来避免硬耦合并动态发现服务。
希望这些指点有所帮助!
其中一个概念称为服务发现。
这是一组不错的幻灯片:
http://www.slideshare.net/nustiueudinastea/service-discovery-in-docker-environments
实现这一目标的一些工具是:ETCD、Consul、Zookeeper...
我遇到了三种情况,认为它们有共同的解决方案:
1) 我唯一的 vps 机器上有繁重的后台任务,因此决定将它们分配给多个 vps。
根据负载,我想使用云提供商动态添加新机器。
2) 我决定将 rabbitmq 服务器移动到其他机器上。首先,我需要更改生产者和消费者的 IP 地址。
3) 我决定 docker 调整我的基础架构。 Docker 容器可以位于不同的网络中。 Docker 可以动态创建容器。有时我会把dockermastermysql、rabbitmq、搜索引擎等容器移动到不同的主机上。
问题:
- 在创建新机器之前我不知道它们的 IP 地址;
- 我不想在我的应用程序、配置文件中手动编辑 IP 地址;
- 如果 Mysql 服务器更改其位置,我希望我的应用程序不依赖于 IP 地址 mysql 位置。
我想我的问题可以使用 DNS 服务器来解决。 但是我不知道如果我决定将 mysql server/rabbitmq/search 引擎移动到其他机器,DNS 服务器如何自动更新。
我确定有一些概念可以解决我的问题。
尽管您的问题范围很广,但您可能需要研究各种解决方案:
- 关于动态添加新机器,如果您使用的是 AWS,则可能需要查看类似 AutoScaling 组的内容。甚至其他云提供商也支持 VM 的自动缩放。要使自动缩放工作,您必须配置监控阈值(如果您使用的是 AWS,请参考 CloudWatch)以便根据负载缩放工作负载 out/in。您可以参考您选择的任何平台。
- 关于IP地址问题,您应该将服务绑定到虚拟IP而不是服务器IP。而且,在分布式系统的情况下,您可能希望使用 Zookeeper、consul 等服务发现工具来避免硬耦合并动态发现服务。
希望这些指点有所帮助!
其中一个概念称为服务发现。
这是一组不错的幻灯片: http://www.slideshare.net/nustiueudinastea/service-discovery-in-docker-environments
实现这一目标的一些工具是:ETCD、Consul、Zookeeper...