【问题标题】:Keycloak docker containers are unable to discover each othersKeycloak docker容器无法发现彼此
【发布时间】:2019-07-18 05:29:39
【问题描述】:

我有两个在容器上运行的 keycloak 实例,每个实例都在单个节点上运行。 这些节点是我公司网络中的裸机节点。

keycloak 使用 TCPPING 作为发现协议。

由于这两个容器在不同的节点上运行,并且每个实例都在 docker 默认网络中固定,因此它们无法找到彼此。

我说 docker 默认网络是因为我没有为这两个容器指定特殊的网络。

知道如何让这个架构设计中的两个实例相互发现!

我正在考虑将 docker swarm 作为解决方案。

【问题讨论】:

  • 是的,你应该使用 docker swarm——除非你可以在两台服务器之间使用私有网络——在这种情况下,只要它们是独立的机器。在这种情况下,docker swarm 会让事情变得更容易
  • 好的,谢谢,但我会尽量让他们先加入主机网络。如果它不起作用,将转到 docker swarm。

标签: docker docker-swarm keycloak docker-container service-discovery


【解决方案1】:

假设两个节点在同一个网络上并且能够相互连接,你可以使用docker host networking让两个容器相互发现

就像docker run --net=host 一样简单

Docker 主机网络使容器使用主机节点的网络,因此将由主机节点使用的 DHCP 服务器分配一个 IP 地址,并且出于所有实际目的,看起来就像该网络中的另一台主机。

这允许两个容器使用 TCPPING 相互发现

Docker swarm 也将启用此功能。Docker swarm 基本上抽象了多个主机节点,这样您就可以在它们上进行容器化,就好像您在单个主机上运行 docker 一样。但这需要docker-machine 和全新的设置。

【讨论】:

  • 仍在尝试此解决方案,但我可能面临来自 selinux 的问题
  • 祝 SELinux 配置好运 :-)
猜你喜欢
  • 2015-09-25
  • 2019-12-08
  • 1970-01-01
  • 2020-10-05
  • 1970-01-01
  • 2023-01-15
  • 2022-01-14
  • 1970-01-01
  • 2019-08-27
相关资源
最近更新 更多