Py学习  »  docker

Docker Swarm解决集群部署方案

会飞的水珠 • 4 年前 • 186 次点击  
阅读 8

Docker Swarm解决集群部署方案

1. 介绍

Docker Client 包括Swarm Manager 和 Swarm Worker,Swarm Manager是管理Docker集群的,同时他也承担Swarm Worker的工作。

2. 创建Swarm集群,以4个docker节点为例

# --listen-addr ip:port 管理者节点
# --advertise-addr ip 广播地址,其它的节点,可以访问什么IP,可以加入Swarm集群
docker swarm init
# 添加manager或者worker节点到集群,只要执行对应的命令即可
# 把执行后的指令,粘贴到其它3台docker上执行,即可加入
docker swarm join-token manager
docker swarm join-token work
# 查看Swarm集群节点,只能在Manager节点执行该指令
docker node ls
复制代码
  • 查看Swarm集群网络
docker network ls
复制代码

这是Swarm创建的共享网络,不是用于容器和容器之间的业务通信,它用来管理Swarm集群的

  • 创建共享网络,为了容器和容器之间业务通信
docker network create -d overlay --attachable swarm_test
复制代码

  • 创建pxc集群,要使用swarm_test网络
docker volume create v1
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=a11111 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=a111111 -v v1:/var/lib/mysql -v backup:/data --privileged --name=node1 --net=swarm_test pxc
复制代码

打开第二个宿主机,执行如下

docker volume create v2
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=a11111 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=a111111 -e CLUSTER_JOIN=node1 -v v2:/var/lib/mysql -v backup:/data --privileged --name=node1 --net=swarm_test pxc
复制代码

打开第三个宿主机,执行如下

docker volume create v3
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=a11111 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=a111111 -e CLUSTER_JOIN=node1 -v v3:/var/lib/mysql -v backup:/data --privileged --name=node1 --net=swarm_test pxc
复制代码

打开第四个宿主机,执行如下

docker volume create v4
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=a11111 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=a111111 -e CLUSTER_JOIN=node1 -v v4:/var/lib/mysql -v backup:/data --privileged --name=node1 --net=swarm_test pxc
复制代码
  • 如果想查看node1的网络IP
docker inspect node1
复制代码

3. 退出Swarm集群,登录对应的docker节点

docker stop node
docker rm node
docker swarm leave --force
复制代码

Manager退出集群必须要使用--force参数

4. 被动退出Swarm集群,指的是从管理节点,执行

docker node demote 节点ID
docker node rm
复制代码

删除任何的节点必须要先停止它的Docker服务,Manager节点必须先降级程Manager节点,然后再去删除

然后,登录node节点的宿主机

docker stop node
docker rm node
service docker stop
复制代码

最后,切回Manager节点,执行

docker node ls
docker node rm 节点ID
复制代码

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/46465
 
186 次点击