第07章-课后作业
俗话说“鸡蛋不要放在同一个篮子里”,所以要对本地部署方案改造成跨主机的运营平台。我们将创建四个Linux主机,利用Swarm技术组建Docker集群。通过Swarm的共享网络,组建起多主机多容器分布式部署的运营平台。
7-1 课后作业(上)
- 创建Swarm集群
- 搭建PXC集群
如果所有节点都部署在同一台宿主机中,当宿主机宕机程序将会崩溃。
此时,应采用多宿主机部署不同的节点。
Docker Swarm:

Google K8S:

Docker三剑客:
docker-machine:容器服务
docker-compose:脚本执行服务
docker-swarm:容器集群
docker-swarm去中心化的设计

注:
Manager节点是管理swarm集群,承担worker节点的工作
Worker节点是运行容器部署项目
Manger节点和Worker节点都可配置多节点
创建Swarm集群:
docker swarm init
注:
listen-addr ip:port
:管理者节点创建Swarm集群时,必须应该含有一个管理者节点
不存在没有管理者的Swarm集群
advertise-addr ip
:广播地址其他节点访问广播地址的IP能加入到Swarm集群
加入Swarm集群:
创建Swarm集群后,命令行会出现提示文字。只需将该文字复制到其他Docker节点并执行即可加入Swarm集群。此方法只能以Worker的身份加入集群。
# 在管理者节点执行...
docker swarm join-token manager
docker swarm join-token worker
注:
- 添加manager或者worker节点到集群,只要执行对应的命令即可
创建4个Centos系统服务器。
1、2号服务器为manager节点,3、4号服务器为worker节点。
# 1号服务器
docker swarm init
docker swarm join-token manager
docker swarm join-token worker
# 2号服务器 docker swarm join-token manager
docker swarm join --token ....... IP:PORT
# 3号服务器 docker swarm join-token worker
docker swarm join --token ....... IP:PORT
# 4号服务器 docker swarm join-token worker
docker swarm join --token ....... IP:PORT
查看Swarm集群节点:
docker node ls
注:
- 只可以在Manager节点执行该命令
查看Swarm集群网络:
docker network ls
# 输出
.... ingress overlay swarm
创建共享网络
docker network create -d overlay --attachable share_net_name
注:
- ingress网络用于管理Swarm集群,所以我们还需要创建新的共享网络传输业务数据。
创建多宿主机PXC集群:
# 安装PXC镜像
docker pull percona/percona-xtradb-cluster
# 对PXC镜像进行改名
docker tag percona/percona-xtradb-cluster pxc
docker rmi percona/percona-xtradb-cluster
# 创建数据卷
docker volume create v1
docker volume create backup
# 创建PXC容器
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 -v v1:/var/lib/mysql -v backup:/data --privileged --name=node1 --net=share_net_name pxc
创建容器:
docker run -it --net=share_net_name ...

7-2 课后作业(中)
- Swarm容器集群
- 退出Swarm集群
查看容器的IP地址
# 1号服务器
# 查看Docker容器的IP地址
docker inspect node1
docker inspect node2
Swarm容器集群

Swarm只是管理容器状态,没有实现负载均衡
容器集群适合场景:
容器集群不适合有状态程序,例如数据库、缓存等。
只是用DockerSwarm提供的共享网络,而不轻易使用DockerSwarm容器集群
退出Swarm集群:
主动退出
docker swarm leave --force
注:
- Manager节点退出集群必须要使用–force参数
被动退出
# 查看Docker集群的节点名 docker node ls # 降级操作,将manager节点降级为worker节点 docker node demote node_name # 停止Docker服务 service docker stop # 删除Docker节点 docker node rm node_name
注:
- 删除任何的节点必须要先停止他的Docker服务
- Manager节点必须先降级为Worker节点,然后再去删除
7-3 课后作业(下)
- 图形化界面部署
使用Portainer管理Docker:
安装Portainer镜像
docker pull portainer/portainer
开放Docker网络管理端口:
# 编辑配置文件
vim /etc/sysconfig/docker
# 重启Docker
service docker restart
注:
在配置文件结尾添加开放Docker开发2375端口的参数
OPTIONS='-Htcp://0.0.0.0:2375 -H unix:///var/run/docker.sock'
启动Portainer容器:
docker run -d -p 9000:9000 portainer/portainer -H tcp://192.168.99.196:2375
访问Portainer管理界面:192.168.99.196:9000
图形界面的Worker节点无法显示Swarm共享网络,但是Worker节点可以使用Swarm共享网络创建容器,所以只能在命令行创建使用Swarm共享网络的容器。
四台主机之上的PXC部署方案:

注:
- Keepalived必须安装在Haproxy所在的容器里。
四台主机之上的前端项目部署方案:

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 tuyrk@qq.com
文章标题:第07章-课后作业
文章字数:1.1k
本文作者:神秘的小岛岛
发布时间:2019-12-09, 20:35:50
最后更新:2019-12-09, 20:52:00
原始链接:https://www.tuyrk.cn/imooc/219-docker/07-homework/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。