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節點,而後再去刪除