Docker环境下的前后端分离项目部署与运维(十一)Docker Swarm技术

Docker Swarm技术 docker swarm技术(之前的docker集群都是在 一个虚拟主机上的,但是如果这个主机挂掉了over了,docker技术就是多个虚拟主机形成一个集群) Swarm是Docker的一个编排工具,参考官网:https://docs.docker.com/engine/swarm/ 与docker集成的集群管理工具 去中心化设计,只使用docker引擎即可创建各类节点 声明式服务模型。可以声明的方式来定义应用。 动态伸缩。管理节点自动调整服务数量。 高可用,对于服务期望状态做到动态调整,swarm的管理节点会持续监控集群状态,集群中有没有达到期望状态的服务,管理节点会自动调度来达到期望状态。 自定义网络。可以为你的服务指定一个网络,容器创建的时候分配一个IP 服务发现。管理节点给集群中每个服务一个特定的DNS名字,并给运行的容器提供负载均衡。 负载均衡。你可以暴露服务端口给外部的负载均衡。内部swarm提供可配置的容器分配到节点的策略。 默认的安全机制。swarm集群中各个节点强制TLS协议验证。连接加密,你可以自定义根证书。 滚动更新。增量跟新,可以自定义更新下个节点的时间间隔,如果有问题,可以会滚到上个版本。 去中心化设计 创建Swarm集群 docker swarm init –listen- addr ip:port 管理者节点 –advertise-addr ip 广播地址 加入Swarm集群 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语句,生成的语句在212、213上面执行
docker swarm join -token worker 查看Swarm集群节点 注意:只能在manager节点执行 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 查看Swarm集群网络 docker network ls 注意:这个ingress swarm网络不是用来做容器之间业务通信的,而是用来管理集群的 创建共享网络 ingress网络用于管理Swarm集群,所以我们需要创建新的共享网络 docker network create -d overlay –attachable swarm_test 创建Percona集群示例 演示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 创建完成后每个节点都应该可以访问,而且会数据同步 容器集群 容器集群不适合有状态程序,例如数据库、缓存等等 退出Swarm集群 主动退出 docker swarm leave — force
# Manager退出集群必须要使用 –force参数 被动退出 # Manager被动退出集群
# Manager节点降级为Worker节点
docker node demote # 删除停止或离开的Worker节点
docker node rm # 删除任何的节点必须要先停止它的Docker服务
# Manager节点必须先降级成Worker节点,然后再去删除

出处:https://www.cnblogs.com/wyt007/p/11075098.html

重装战姬下载
「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论