我让码头工人12.1在我的节点上运行。我有一个4项任务服务来运行我的Drupal站点,还有一个用于数据库的任务:
drupalapp mastermindg/rpi-apache2php7
drupaldb mysql:latest现在,我可以在运行容器的任何节点上访问我的站点。
问题是,我只能在路由器上为端口转发设置一个IP地址,如果一个节点下降,那么该IP地址将无法再访问。
可以在覆盖网络上设置用于负载平衡的虚拟IP地址吗?
发布于 2016-08-22 23:37:06
Docker群使用网状网络,因此对单个主机的任何请求都将被路由到运行在哪个主机上。这里的困难之处在于,您的服务不是在入口运行的,所以世界无法使用它。为了使其可用,请使用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因此,在这里您需要创建两个网络:一个用于drupaldb和drupalapp (称为drupal)之间的内部使用,另一个用于使用here公开您的端口。您的德鲁帕拉应用服务需要包括在代理覆盖网络以及drupal网络中。
注册您的HAProxy服务:
curl "$masterip:8080/v1/docker-flow-proxy/reconfigure?serviceName=drupalapp&servicePath=/&port=80"现在,您的Drupal站点可以通过以下方式到达您群中的任何节点:
http://nodeX/index.php现在的优点是您可以转发到任何节点,并且它将正确地解析。
https://stackoverflow.com/questions/39071626
复制相似问题