简介
Swarm:作用于运行docker engine(引擎)的多个主机组成的集群。 node:每一个docker engine都是一个node(节点),分为manager和worker。 manager node:负责执行容器的编排和集群的管理工作,保持并维护swarm处于期望的状态。swarm可以有多个manager node,它们会自动协调并选举出一个Leader执行编排任务。但相反,不能没有manager node。 worker node:接受并执行由manager node派发的任务,并且默认manager node也是一个work node,不过可以将它设置为manager-only node,让它只负责编排和管理工作。 service:用来定义worker上执行的命令。
部署准备
head c1 c2 192.168.196.130 192.168.196.132 192.168.196.131
关闭防火墙
# firewalld systemctl stop firewalld.service systemctl disable firewalld.service # selinux vi /etc/selinux/config 改为 SELINUX=disabled
时间同步
与head时间同步即可 ntpdate 192.168.196.130
head节点
docker swarm init --advertise-addr 192.168.196.130 # 成功执行后会生成下面的代码 docker swarm join --token SWMTKN-1-2jk3nhq8rz7eukh1rk66w197xfnbgvgull2zoq9fvge26et302-25s1k7n303gi19pksw2gqve7p 192.168.196.130:2377
c1和c2节点分别执行下面的代码,意思是让c1和c2加入到集群中
docker swarm join --token SWMTKN-1-2jk3nhq8rz7eukh1rk66w197xfnbgvgull2zoq9fvge26et302-25s1k7n303gi19pksw2gqve7p 192.168.196.130:2377
在head主机上查看节点状态
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION jkgnbzwo1jakkhaive404mi78 c1 Ready Active 20.10.6 cgehjyv4hf8fu0voe648oxw0w c2 Ready Active 20.10.6 k6cgvrxx2t0t3wjr4666xy9cw * head Ready Active Leader 20.10.6 # 说明目前head是领导者
部署docker swarm集群网络
docker network create -d overlay --attachable docker # overlay覆盖型网络
部署一个图形化webui界面
docker pull dockersamples/visualizer
运行镜像
docker run -d -p 8080:8080 -e HOST=192.168.196.130 -e PORT=8080 -v /var/run/docker.sock:/var/run/docker.sock --name visualizer dockersamples/visualizer
网页访问
192.168.196.130:8080
让所有节点执行命令任务
docker service create --replicas 5 --network docker --name web01 -p 80 nginx:latest # docker service create 创建服务 # --name 表示服务的名称 # --replicas 表示指定5个正在运行的实例(可以理解为1个实例等于1个容器) # 上面的意思是让所有worker节点共执行5个实例,任务为开启nginx
让leader节点不参加工作
docker node update head --availability drain
查看service任务信息
docker service ps web01
增加和减少容器数量
docker service scale web01=0 # 减少 docker service sacle web01=8 # 增加
常用命令
离开集群: docker swarm leave 删除节点: docker node rm node02 #这里注意,只有申请离开集群的node才可以删除。 生成令牌,可以是manager身份或worker身份: docker swarm join-token [manager | worker] 降级为work与升级为manager: docker node demote(降级):将swarm节点的manager降级为work docker node promote(升级):将swarm节点的work升级为manager 查看service列表: docker service ls 查看service信息: docker service ps xxx 增加容器与减少容器: docker service scale web1=8 docker service scale web1=3 #等号后接容器的数量。 删除服务 docker service rm web01(启动时指定的name名称) docker node update node01 --availability drain 可以设置三个参数: active"|"pause"|"drain #活跃”|“暂停”|“不工作