我应该使用带有 docker 的 Tarantool Cartridge 应用程序设置网络地址吗?
Should I setup network address with the Tarantool Cartridge application with docker?
当我为应用程序使用 docker 包时,我应该如何配置网络地址?
tarantool cartridge 中的网络连接逻辑不取决于您使用的是常规虚拟机,还是 Docker。您需要您的 tarantool 实例能够通过 TCP 和 UDP 相互访问。
在 Docker 中表示:
在同一内部网络上设置容器
并使用内部网络地址将实例连接在一起。默认情况下,同一内部网络上的实例将能够通过任何 tcp/udp 端口相互访问。如果你想让多台机器共享同一个内部网络,你可以配置 Docker Swarm,它会给你一个所谓的 "overlay network" 跨越多台机器。
绑定到主机的端口
当运行一个容器时,可以将-p 3301:3301/tcp -p 3301:3301/udp
传递给docker run
。它会暴露一个端口从容器到主机上的外部网络。务必始终公开 udp 端口,否则实例将无法通过 gossip 协议相互通信。
除此之外,由于您将实例的 public 地址更改为主机的 IP 而不是内部容器的 IP,因此您还需要指定其他参数来更改 tarantool 的广告 URI实例。您可以使用 docker run
的以下选项来做到这一点:-e TARANTOOL_ADVERTISE_URI=<your_host_ip>:3301
.
当我为应用程序使用 docker 包时,我应该如何配置网络地址?
tarantool cartridge 中的网络连接逻辑不取决于您使用的是常规虚拟机,还是 Docker。您需要您的 tarantool 实例能够通过 TCP 和 UDP 相互访问。
在 Docker 中表示:
在同一内部网络上设置容器
并使用内部网络地址将实例连接在一起。默认情况下,同一内部网络上的实例将能够通过任何 tcp/udp 端口相互访问。如果你想让多台机器共享同一个内部网络,你可以配置 Docker Swarm,它会给你一个所谓的 "overlay network" 跨越多台机器。
绑定到主机的端口
当运行一个容器时,可以将-p 3301:3301/tcp -p 3301:3301/udp
传递给docker run
。它会暴露一个端口从容器到主机上的外部网络。务必始终公开 udp 端口,否则实例将无法通过 gossip 协议相互通信。
除此之外,由于您将实例的 public 地址更改为主机的 IP 而不是内部容器的 IP,因此您还需要指定其他参数来更改 tarantool 的广告 URI实例。您可以使用 docker run
的以下选项来做到这一点:-e TARANTOOL_ADVERTISE_URI=<your_host_ip>:3301
.