容器编排 Swarm mode
在单机docker中,思考:
1,怎么去管理这么多容器?
2,怎么能方便的横向扩展?
3,如果容器down了,怎么能自动恢复?
4,如何去更新容器而不影响这些业务?
5,如何去监控追踪这些容器?
6,怎么去调度容器的创建?
7,保护隐私数据?
Docker Swarm Mode Architecture
swarm是一种集群的架构
swarm里面有几点,节点node有两种角色
第一种:Manager (raft consensus group)
(大脑,最少有两个,同步数据另外一个Manager,通过分布式的数据库Raft)
第二种:worker (Gossip network)
(数据的同步是Gossip)
实验流程:
准备三台主机:
Manager 192.168.205.10
node1 192.168.205.20
node2 192.168.205.30
查看帮助:
docker swarm --help
docker swarm init --advertise-addr=192.168.205.10
在Manager节点上运行就是Manager
[root@docker-Manager]# docker swarm init --advertise-addr=192.168.205.10
Swarm initialized: current node (vc0u406d1te6egsltsvalwlan) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-4mb7762wejys88h2jewdb11avy2jsq9rgupuivkkjgyp1hsi78-6liafahn1txejnntva103t7oc 192.168.205.10:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
Mangaer节点运行后会生成:
docker swarm join --token SWMTKN-1-4mb7762wejys88h2jewdb11avy2jsq9rgupuivkkjgyp1hsi78-6liafahn1txejnntva103t7oc 192.168.205.10:2377
将此节点复制后再node2和node3上运行
回到Manager节点上,运行
docker node ls
查看是否添加成功
[root@docker-Manager]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
vc0u406d1te6egsltsvalwlan * docker-host Ready Active Leader 18.06.0-ce
aswwj27ubfepmcukhlb1zwixd docker-node2 Ready Active 18.06.0-ce
u6s0jdbkai3ag4b9j1q4n6ddc docker-node3 Ready Active 18.06.0-ce
添加成功
docker service的创建
docker service create --name demo busybox sh -c "while true;do sleep 3600;done"
查看是否运行成功
docker service ls
REPLICAS 1/1 是水平扩展的意思
将刚刚demo扩展为5个
docker service scale demo=5
在Manager 查看是否五个正常运行:
docker service ls
REPLICAS 5/5
docker service ps demo
重点:
docker swarm 可以做横向扩展
当一台机器上的服务不可用或者shutdown时候
主节点Manager会继续发出创建命令,使他维持在扩展的总数。
这样做的意义就是保证了服务的高可用性,宕机后自动启动,维持服务的可靠性。
Manage删除刚刚创建的DEMO
docker service rm demo
主节点上删除后,在node1和node2上docker ps发现也是同步消失了。
dcoker service --help 查看帮助