docker swarm技术(以前的docker集群都是在 一个虚拟主机上的,可是若是这个主机挂掉了over了,docker技术就是多个虚拟主机造成一个集群)node
Swarm是Docker的一个编排工具,参考官网:https://docs.docker.com/engine/swarm/mysql
滚动更新。增量跟新,能够自定义更新下个节点的时间间隔,若是有问题,能够会滚到上个版本。sql
docker swarm init --listen-addr ip:port 管理者节点 --advertise-addr ip 广播地址
docker swarm join-token manager
docker swarm join-token worker
# 建立4个服务器虚拟机 # -- 192.168.103.210(manager) # -- 192.168.103.240(manager) # -- 192.168.103.212(worker) # -- 192.168.103.213(worker) # 192.168.103.210进行操做 docker swarm init # 生成加入manager语句,生成的语句在240上面执行 docker swarm join-token manager # 生成加入worker语句,生成的语句在2十二、213上面执行 docker swarm join-token worker
注意:只能在manager节点执行docker
docker node ls
[root@localhost ~]# docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION 0l944rsrwj0sqva0pf4shshd1 * localhost Ready Active Leader 18.09.6 askvrplj3p0vh3bh22oi9mr2u localhost Ready Active 18.09.6 g2q35fckeubv0u87y6ol4zw5q localhost Ready Active Reachable 18.09.6 wdxxxyxjvnm9kl757k57dnuwi localhost Ready Active 18.09.6
docker network ls
注意:这个ingress swarm网络不是用来作容器之间业务通讯的,而是用来管理集群的数据库
ingress网络用于管理Swarm集群,因此咱们须要建立新的共享网络缓存
docker network create -d overlay --attachable swarm_test
演示4台服务器建立5节点集群安全
# -- 192.168.103.210(manager) # 拉取镜像 docker pull percona/percona-xtradb-cluster:5.7.21 # 镜像重命名 docker tag percona/percona-xtradb-cluster:5.7.21 pxc docker rmi percona/percona-xtradb-cluster:5.7.21 # 建立数据卷v1和backup docker volume create v1 docker volume create backup # 建立容器 # 建立5个PXC容器构成集群 # 第一个节点 docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -v v1:/var/lib/mysql -v backup:/data --privileged --name=node1 --net=swarm_test pxc # 建立数据卷v2 docker volume create v2 # 第二个节点 docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v v2:/var/lib/mysql -v backup:/data --privileged --name=node2 --net=swarm_test pxc # -- 192.168.103.240(manager) # 拉取镜像 docker pull percona/percona-xtradb-cluster:5.7.21 # 镜像重命名 docker tag percona/percona-xtradb-cluster:5.7.21 pxc docker rmi percona/percona-xtradb-cluster:5.7.21 # 建立数据卷v3和backup docker volume create v3 docker volume create backup # 第三个节点 docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v v3:/var/lib/mysql -v backup:/data --privileged --name=node3 --net=swarm_test pxc # -- 192.168.103.212(worker) # 拉取镜像 docker pull percona/percona-xtradb-cluster:5.7.21 # 镜像重命名 docker tag percona/percona-xtradb-cluster:5.7.21 pxc docker rmi percona/percona-xtradb-cluster:5.7.21 # 建立数据卷v4和backup docker volume create v4 docker volume create backup # 第四个节点 docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v v4:/var/lib/mysql -v backup:/data --privileged --name=node4 --net=swarm_test pxc # -- 192.168.103.213(worker) # 拉取镜像 docker pull percona/percona-xtradb-cluster:5.7.21 # 镜像重命名 docker tag percona/percona-xtradb-cluster:5.7.21 pxc docker rmi percona/percona-xtradb-cluster:5.7.21 # 建立数据卷v5和backup docker volume create v5 docker volume create backup # 第五个节点 docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v v5:/var/lib/mysql -v backup:/data --privileged --name=node5 --net=swarm_test pxc
建立完成后每一个节点都应该能够访问,并且会数据同步服务器
容器集群不适合有状态程序,例如数据库、缓存等等网络
docker swarm leave --force
# Manager退出集群必需要使用--force参数
被动退出负载均衡
# Manager被动退出集群 # Manager节点降级为Worker节点 docker node demote <ID> # 删除中止或离开的Worker节点 docker node rm <ID> # 删除任何的节点必需要先中止它的Docker服务 # Manager节点必须先降级成Worker节点,而后再去删除