集群化Docker并由Swarm管理

时间:2015-08-04 15:54:23

标签: docker docker-swarm

我是Docker的新手,今天我想知道一个问题。 我知道有扩散和binpack策略,旨在平衡“工作负荷”。 但有没有办法使用Docker,Swarm?

来配置容器,如下面的拓扑

enter image description here

或者我应该自定义调度程序?或者有没有合适的集群管理工具? 有什么建议吗?

1 个答案:

答案 0 :(得分:3)

  

更新:此答案适用于传统的docker / swarm,而不适用于自docker 1.12以来可用的新 Swarm模式

在这些机架/机器上启动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,您可以使用约束来获取容器的位置。在此示例中,我们仅使用 Rack 1 上的节点子集来安排我们的容器:

docker run -d -P -e constraint:rack==rack1 --name web nginx

假设每个机架有多个节点(例如rack2),您还可以链接约束。在下一个示例中,我们将容器固定到位于node3上的rack2

docker run -d -P -e constraint:rack==rack2 -e constraint:node==node3 --name web nginx