分布式系统中的IP地址

时间:2015-06-24 07:33:15

标签: dns docker cloud rabbitmq distributed

我有三种情况并认为他们有共同的解决方案:

1)我在我唯一的vps机器上有大量的后台任务,并决定将它们分配到几个vps。

根据负载情况,我希望使用云提供商动态添加新计算机。

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

3)我决定将我的基础设施停靠。 Docker容器可以位于不同的网络中。可以动态创建Docker容器。有时我会在不同的主机上移动docker master mysql,rabbitmq,search engine等容器。

问题

  • 在创建新机器之前我不知道他们的IP地址;
  • 我不想手动编辑我的应用程序,配置文件中的IP地址;
  • 如果Mysql服务器更改其位置,我希望我的应用程序不依赖于ip地址mysql位置。

我认为我的问题可以通过DNS服务器解决。 但我不知道如果我决定将mysql server / rabbitmq / search engine移动到其他机器上,DNS服务器如何自动更新。

我确信有一些概念如何解决我的问题。

2 个答案:

答案 0 :(得分:0)

虽然您的问题范围非常广泛,但您可能希望了解各种解决方案:

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

答案 1 :(得分:0)

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

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

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