【Docker】Swarm初探:集群管理和容器調(diào)度
Docker新發(fā)布了swarm,machine,compose。
這里主要對(duì)swarm進(jìn)行說(shuō)明。Docker Swarm是一個(gè)Dockerized化的分布式應(yīng)用程序的本地集群,它是在 Machine所提供的功能的基礎(chǔ)上優(yōu)化主機(jī)資源的利用率和容錯(cuò)服務(wù)。具體來(lái)說(shuō),Docker Swarm支持用戶創(chuàng)建可運(yùn)行Docker Daemon的主機(jī)資源池,然后在資源池中運(yùn)行Docker容器。Docker Swarm可以管理工作負(fù)載并維護(hù)集群狀態(tài)。
之前,用戶需要對(duì)各個(gè)docker engine進(jìn)行操作(發(fā)送rest消息或者執(zhí)行docker命令)。
swarm則將一組docker enginge作為一個(gè)集群進(jìn)行管理,并提供過(guò)了lablel,schedule,filter的能力。
swarm保持了對(duì)docker原有API的兼容,我們可以像使用單一個(gè)docker engine一樣管理一個(gè)docker engine集群。
swarm還可以對(duì)集群中的節(jié)點(diǎn)健康狀況進(jìn)行檢查,HA發(fā)生故障節(jié)點(diǎn)的容器。
其中調(diào)度部分,允許用戶定制自己的調(diào)度策略。
集群管理:
- 創(chuàng)建集群:
- $ swarm create
- 添加一個(gè)節(jié)點(diǎn)到集群:
- $ swarm join --token=<token> --addr=<node ip>
- 列出集群中的節(jié)點(diǎn):
- $ swarm list --token=<token>
- 啟動(dòng)swarm:
- $ swarm manage --token=<token> --addr=<swarm ip>
資源管理:
- cpu/memory:
- $ docker run -m 1g -c 1
- ports:
- $ docker run -p 80:80
約束:
- 如何設(shè)置約束:
- docker run -e "constraint:operationsystem=fedora"
- docker run -e "constraint:storagedriver=aufs"
- 通過(guò)約束過(guò)濾節(jié)點(diǎn):
- docker -d "region=us-east"
- docker run -e "constraint:region=us-east"
- 未來(lái)還可以實(shí)現(xiàn)更復(fù)雜的,比如 反親和
支持容器重新調(diào)度:
- 類似與--start的操作
容器調(diào)度過(guò)程:
- 類似于openstgack:
- 1. filter節(jié)點(diǎn)
- 基于port,label,health
- 2. weight節(jié)點(diǎn),選出***節(jié)點(diǎn)
- 支持bin packing和random連中。
原文出自:http://blog.csdn.net/halcyonbaby/article/details/41812313