swarm/k8s -->docker --->container swarm 是管理docker的编排工具,自带负载均衡和高可用性能
实验规划
swarm1 --->manager 192.168.0.121
swarm2 --->192.168.0.122 worker
swarm3 -->192.168.0.123 worker
swarm4 -->192.168.0.124 worker
一、安装manager和worker机器上安装swarm
[root@localhost ~]# yum install docker vim net-tools lsof -y
# 安装docker --->swarm是docker的容器编排工具,所以需要安装docker
[root@localhost ~]#yum install docker -y
# 修改主机名 便于分辨机器
1.#vim /etc/hostname
2.# hostnamectl set-hostname swarm-manager
# hostnamectl set-hostname swarm2
# hostnamectl set-hostname swarm3
# hostnamectl set-hostname swarm4
# 两者都可永久修改主机名
# 在管理节点修改/etc/hosts 文件
# 修改之后在管理节点上可以直接ping通其他主机
[root@localhost ~]# ping swarm-2
#将 /etc/hosts文件复制到所有的node主机
[root@localhost ~]# scp /etc/hosts root@192.168.0.122:/etc/hosts
[root@localhost ~]# scp /etc/hosts root@192.168.0.123:/etc/hosts
[root@localhost ~]# scp /etc/hosts root@192.168.0.124:/etc/hosts
# 在所有机器上关闭防火墙
[root@manager43 ~]# service firewalld stop
[root@manager43 ~]# systemctl disable firewalld
#所有机器上都关闭selinux
vim /etc/sysconfig/selinux
service docker start
#所有机器上启动docker
二、创建swarm并且添加节点
# 创建swarm集群 -->在管理节点上
[root@localhost ~]# docker swarm init --advertise-addr 192.168.0.121
Swarm initialized: current node (wbfffq9bduo1lj3e2qrpkwp7u) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-32wt5ou9uffq8dvpv2ngu8mokvx526enfigsemp2mksm0zt6y8-a6zware3w43jqyopw1heqwrw7 \
192.168.0.121:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
# 在其他机器上执行上面显示的语句加入到swarm集群
docker swarm join \ --token SWMTKN-1-32wt5ou9uffq8dvpv2ngu8mokvx526enfigsemp2mksm0zt6y8-a6zware3w43jqyopw1heqwrw7 \ 192.168.0.121:2377
# 在管理节点上可以查看有哪些节点已经被管理
[root@localhost ~]# docker info |grep swarm
# 查看有哪些节点
docker node ls
# 在管理节点上创建一个overlay类型的网络 wsy_nginx
[root@localhost ~]# docker network create -d overlay wsy_nginx
3zts3m2t1sly0sx89ybzy3irp
# 查看容器的网络类型
[root@localhost ~]# docker network ls
# 管理节点上分配任务
[root@localhost ~]# docker service create --replicas 4 --network wsy_nginx --name wsy_nginx1 -p 8000:80 nginx
4mfbtmygyf8ong1nhvye1cmhs
# 4个
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@localhost ~]# docker service ls
ID NAME MODE REPLICAS IMAGE
4mfbtmygyf8o wsy_nginx1 replicated 2/4 nginx:latest
# 容器数量的扩展 -->增加到五个节点
[root@localhost ~]# docker service scale wsy_nginx1=5
wsy_nginx1 scaled to 5
[root@localhost ~]# docker service ps wsy_nginx1
尝试宕机一台worker节点机器,查看高可用效果
service docker stop
# 管理节点上
[root@localhost ~]#docker service ps wsy_nginx1
[root@localhost ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
kw30qj8tgzkh1na83fceyashr localhost.localdomain Down Active
[root@localhost ~]# docker service ps wsy_nginx1
# 服务不会因为一台机器宕机而停止 -->实现高可用
* 团队越大,冗余能力越强
load balance 设置
# 开启两块网卡 桥接模式
ens33 192.168.0.126
ens37 192.168.82.127 -->本机网段
在负载均衡器 load balance上安装nginx
# 下载epel源
yum install epel-release -y
yum install nginx -y
service nginx restart
lsof -i:80 -->查看服务是否开启
ps aux|grep nginx
load balance 上修改负载均衡配置
vim /etc/nginx.conf
此处可以看看官方文档
定义了一个负载均衡器 scapp1