今天复习一下Swarm的基本知识,
Swarm是Docker官方提供的一款集群管理工具,其主要作用是把若干台Docker主机抽象为一个整体,并且通过一个入口统一管理这些Docker主机上的各种Docker资源。Swarm和Kubernetes比较类似,但是更加轻,具有的功能也较kubernetes更少一些。
Swarm特点如下:
与Docker Engine高度集成,不需要额外插件,直接通过CLI创建Swarm Cluster.
e.g. >docker swarm init
去中性化设计,在Swarm集群中有2中节点:manager和worker,manager负责管理集群也可以对外提供服务,worker对外提供服务,在一个集群中,manager是可以存在多个,任何一个worker可以提升为manager,任何一个manager也可以降级为worker,通用的集群架构如下:
扩容和缩容。使用Swarm可以很方便创建多个instance. 下面的命令将[servicename]扩展为5个instance. 这5个实例将随机分配到不同的worker上面。
e.g. docker service scale [servicename]=5
保持实际状态和期望状态一致,但设置的服务副本是5时,如果其中有2个instances crash,则swarm会从可用的worker上重新启动2个新的instance.保持容器数量和期望值一致
多主机网络,我们可以为指定一个Overlay网络,Swarm Manager在给定的Overlay网络中为Docker容器自动地分配IP地址,实际是一个虚拟IP,
服务方向,Swarm Manager 为每一个Service指定一个唯一的DNS name,并且进行负载均衡,Service之间可以通过name互相之间进行认识
负载均衡,证书安全,滚动升级等等。。。
Swarm实战
初始化
>docker swarm init
加入swarm cluster
> docker swarm init # in nodeA
> docker swarm join-token manager # in nodeA
> input token into nodeB, node
3. 查看swarm 节点
>docker node ls
>docker node ps $(docker node ls -q)
5.创建network
>docker network create --driver overlay rabnet
6. 创建Service
>docker service create --name consul --replicas 1 -p 8400:8400 -p 8500:8500 -p 8600:53 --network rabnet consul
7. 扩容service
>docker service scale consul=5
8. 暂停service,Swarm中没有暂停,但是只需要将instance个数设置为0即可
>docker service scale consul=0
9. 删除service
>docker service rm consul
Swarm 实例分析
>docker service create --name haproxy --replicas 1 \
--network rabnet \
-p 18001:18000 \
--mount type=bind,source=/haproxy.cfg,destination=/usr/haproxy.cfg \
haproxy:latest
领取专属 10元无门槛券
私享最新 技术干货