河南省建设网站,wordpress主题包下载,哪个公司建网站,网站轮播图片制作虽然 docker swarm 支持自动扩容部署#xff0c;但是为了服务的稳定性、可靠性#xff0c;有的时候甲方巴巴会要求一定要服务分散部署在不同的服务器上。 使用默认的部署方式#xff0c;虽然副本为 N#xff0c;但是部署的 N 个服务可能落在同一台服务器上。 在 Docker Swa…虽然 docker swarm 支持自动扩容部署但是为了服务的稳定性、可靠性有的时候甲方巴巴会要求一定要服务分散部署在不同的服务器上。 使用默认的部署方式虽然副本为 N但是部署的 N 个服务可能落在同一台服务器上。 在 Docker Swarm中要让服务(service)的两个副本(replica)分别运行在不同的主机上你需要做的是在部署服务时使用 --constraint 标志来指定资源限制例如主机的标签(labels)等都是可以的。
首先确保你的两台主机已经加入到Docker Swarm集群中并且每台主机有一个独特的标签来区分。可以通过以下命令给主机添加标签
docker node update --label-add keyvalue node-id然后当你部署服务时可以使用 --constraint 标志来指定副本运行的主机标签。例如如果你有两台主机一台标签为 hostnode1另一台标签为 hostnode2你可以这样部署服务。
docker service create --replicas 2 --name my-service --constraint node.labels.hostnode1 my-image
docker service create --replicas 2 --name my-service --constraint node.labels.hostnode2 my-image如果使用的yml文件来编排的服务则修改文件内容如下
version: 3.8services:my-service:image: my-imagedeploy:mode: replicatedreplicas: 2placement:constraints:- node.labels.host node1- node.labels.host node2在部署服务前确保已经标记了相应的节点
docker node update --label-add hostnode1 NODE1_ID
docker node update --label-add hostnode2 NODE2_ID这样每个副本都会被调度到一个符合指定标签的节点上。如果你有多于两台主机并且每个副本都需要在不同的主机上运行你可能需要为每个副本指定不同的标签约束。
请注意如果没有足够的节点来满足所有约束条件服务可能会创建失败或者只能运行在部分节点上。因此集群中节点的数量和资源容量至关重要。