集群 Docker 并由 Swarm 管理
Clusterized Docker and Managed by Swarm
我是Docker的新人,今天想问一个问题。
我知道有 spread 和 binpack 策略旨在平衡 "work load"。
但是有什么方法可以通过使用 Docker、Swarm 来提供如下拓扑结构的容器?
或者我应该自定义调度程序吗?或者有什么合适的集群管理工具?
有什么建议吗?
Update: This answer applies to the legacy docker/swarm and not to the new Swarm mode available since docker 1.12
在 racks/machines.
上启动 docker 守护进程时,您可以通过 labels
使用 Swarm 实现此目的
设置 Docker 带标签的守护进程
假设我们有这个拓扑:
rack1
|___ node1
rack2
|___ node2
|___ node3
我们可以使用自定义标签设置 docker 守护进程来反映这一点:
机架 1 上的节点 1
docker --tlsverify --tlscacert=ca.pem --tlscert=server-cert.pem --tlskey=server-key.pem -H tcp://0.0.0.0:2376 -d --label rack=rack1 --label machine=node1`
机架 2 上的节点 2
docker --tlsverify --tlscacert=ca.pem --tlscert=server-cert.pem --tlskey=server-key.pem -H tcp://0.0.0.0:2376 -d --label rack=rack2 --label machine=node2
机架 2 上的节点 3
docker --tlsverify --tlscacert=ca.pem --tlscert=server-cert.pem --tlskey=server-key.pem -H tcp://0.0.0.0:2376 -d --label rack=rack2 --label machine=node3
使用约束
有了 Swarm,您就可以使用 constraints 来为您的容器选择一个位置。在这个例子中,我们只使用 Rack 1 上的节点子集来调度我们的容器:
docker run -d -P -e constraint:rack==rack1 --name web nginx
如果每个机架有多个节点(例如 rack2
),您还可以链接约束。在下一个示例中,我们将容器固定到位于 rack2
.
上的 node3
docker run -d -P -e constraint:rack==rack2 -e constraint:node==node3 --name web nginx
我是Docker的新人,今天想问一个问题。 我知道有 spread 和 binpack 策略旨在平衡 "work load"。 但是有什么方法可以通过使用 Docker、Swarm 来提供如下拓扑结构的容器?
或者我应该自定义调度程序吗?或者有什么合适的集群管理工具? 有什么建议吗?
Update: This answer applies to the legacy docker/swarm and not to the new Swarm mode available since docker 1.12
在 racks/machines.
上启动 docker 守护进程时,您可以通过labels
使用 Swarm 实现此目的
设置 Docker 带标签的守护进程
假设我们有这个拓扑:
rack1
|___ node1
rack2
|___ node2
|___ node3
我们可以使用自定义标签设置 docker 守护进程来反映这一点:
机架 1 上的节点 1
docker --tlsverify --tlscacert=ca.pem --tlscert=server-cert.pem --tlskey=server-key.pem -H tcp://0.0.0.0:2376 -d --label rack=rack1 --label machine=node1`
机架 2 上的节点 2
docker --tlsverify --tlscacert=ca.pem --tlscert=server-cert.pem --tlskey=server-key.pem -H tcp://0.0.0.0:2376 -d --label rack=rack2 --label machine=node2
机架 2 上的节点 3
docker --tlsverify --tlscacert=ca.pem --tlscert=server-cert.pem --tlskey=server-key.pem -H tcp://0.0.0.0:2376 -d --label rack=rack2 --label machine=node3
使用约束
有了 Swarm,您就可以使用 constraints 来为您的容器选择一个位置。在这个例子中,我们只使用 Rack 1 上的节点子集来调度我们的容器:
docker run -d -P -e constraint:rack==rack1 --name web nginx
如果每个机架有多个节点(例如 rack2
),您还可以链接约束。在下一个示例中,我们将容器固定到位于 rack2
.
node3
docker run -d -P -e constraint:rack==rack2 -e constraint:node==node3 --name web nginx