繁体   English   中英

使用DNS的多云swarm集群服务发现

[英]Multi-cloud swarm cluster service discovery using DNS

我设法创建了一个多云群集群,在 GCP 上有一个领导节点,在 AWS 上有一个工作节点。 部署运行良好,但我偶然发现的唯一问题是使用 DNS 名称的服务发现。

例如,我在领导节点 (GCP) 上部署了一个名为db的服务,在工作节点 (AWS) 上部署了一个应用程序服务。 他们使用如下定义的覆盖网络:

networks:
  internal:
    attachable: true
    driver: overlay
    ipam:
      config:
        - subnet: 10.0.69.0/24

在 GCP 网络上,我打开了以下端口:

  • 2377用于集群管理通信的 TCP 端口;
  • 7946个用于节点间通信的TCP&UDP端口;
  • 4789用于覆盖网络流量。

在 AWS 网络上,我打开了以下端口:

  • 7946个用于节点间通信的TCP&UDP端口;
  • 4789用于覆盖网络流量。

(来源: https : //docs.docker.com/engine/swarm/swarm-tutorial/

db容器获得 IP 10.0.69.8应用程序容器获得 IP 10.0.69.21 容器无法相互 ping,也无法解析dbapp DNS 名称。 当我尝试 ping 另一个时,我得到的只是Destination Host Unreachable

我的方法是否粗略,我错过了什么? 还是我破坏了一些基本的东西? 多云群集群是否需要已经连接的网络? 如果是这样,GCP 和 AWS 网络之间的 VPN 是唯一的方法吗?

如果您想在两个不同的云中创建一个群(集群), 您必须使用 VPN - 据我所知,没有办法绕过它。

如您所见,节点可以使用公共 IP 进行通信,但容器不能(它们只能使用内部 IP)并且您的 GCP 和 AWS 网络未连接。

“服务或容器只能通过它们各自连接的网络进行通信。”

在这种情况下,DNS 解析不是这里的问题。 效果而已。

当您连接网络时,请确保 GCP 和 AWS 子网的 IP 不重叠 - 否则您可能会面临另一个问题,不得不求助于双 NAT 或其他一些非常复杂的解决方案。

最好保持简单(阅读 - 最好只使用一个云)并将您的集群保持在那里。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM