Docker Swarm Overlay VIP
Docker Swarm Overlay VIP
我的节点上安装了 Docker Swarm 12.1 运行ning。我有一个 4 任务服务到 运行 我的 Drupal 站点和一个数据库任务:
drupalapp mastermindg/rpi-apache2php7
drupaldb mysql:latest
我现在可以在 运行 连接容器的任何节点上访问我的站点。
问题是我只能在我的路由器上为端口转发设置一个 IP 地址,如果一个节点出现故障,那么该 IP 地址将无法再访问。
是否可以为覆盖网络上的负载平衡设置虚拟 IP 地址?
Docker Swarm 使用网状网络,因此对单个主机的任何请求都将路由到 运行 所在的任何主机。这里的困难部分是您的服务不是 运行 入口,因此它对全世界不可用。为了使其可用,请使用 HAProxy:
docker network create --driver overlay proxy
docker network create --driver overlay drupal
docker service create --name proxy \
-p 80:80 \
-p 443:443 \
-p 8080:8080 \
--network proxy \
-e MODE=swarm \
vfarcic/docker-flow-proxy
docker service create --name drupalapp \
--network proxy \
--network drupal \
mastermindg/rpi-apache2php7
docker service create --name drupaldb \
--network drupal \
mysql:latest
所以在这里您需要创建两个网络:1 个用于 drupaldb 和 drupalapp(称为 drupal)之间的内部使用,一个用于 haproxy 用于公开您的端口。您的 drupalapp 服务需要包含在代理覆盖网络和 drupal 网络中。
注册您的 HAProxy 服务:
curl "$masterip:8080/v1/docker-flow-proxy/reconfigure?serviceName=drupalapp&servicePath=/&port=80"
现在您的 Drupal 站点可以通过以下方式在您群中的任何节点上访问:
http://nodeX/index.php
现在的优点是您可以转发到任何节点,它会正确解析。
我的节点上安装了 Docker Swarm 12.1 运行ning。我有一个 4 任务服务到 运行 我的 Drupal 站点和一个数据库任务:
drupalapp mastermindg/rpi-apache2php7
drupaldb mysql:latest
我现在可以在 运行 连接容器的任何节点上访问我的站点。
问题是我只能在我的路由器上为端口转发设置一个 IP 地址,如果一个节点出现故障,那么该 IP 地址将无法再访问。
是否可以为覆盖网络上的负载平衡设置虚拟 IP 地址?
Docker Swarm 使用网状网络,因此对单个主机的任何请求都将路由到 运行 所在的任何主机。这里的困难部分是您的服务不是 运行 入口,因此它对全世界不可用。为了使其可用,请使用 HAProxy:
docker network create --driver overlay proxy
docker network create --driver overlay drupal
docker service create --name proxy \
-p 80:80 \
-p 443:443 \
-p 8080:8080 \
--network proxy \
-e MODE=swarm \
vfarcic/docker-flow-proxy
docker service create --name drupalapp \
--network proxy \
--network drupal \
mastermindg/rpi-apache2php7
docker service create --name drupaldb \
--network drupal \
mysql:latest
所以在这里您需要创建两个网络:1 个用于 drupaldb 和 drupalapp(称为 drupal)之间的内部使用,一个用于 haproxy 用于公开您的端口。您的 drupalapp 服务需要包含在代理覆盖网络和 drupal 网络中。
注册您的 HAProxy 服务:
curl "$masterip:8080/v1/docker-flow-proxy/reconfigure?serviceName=drupalapp&servicePath=/&port=80"
现在您的 Drupal 站点可以通过以下方式在您群中的任何节点上访问:
http://nodeX/index.php
现在的优点是您可以转发到任何节点,它会正确解析。