swarm集群部署
1.部署前准备
IP地址 | 计算机名 | 角色 |
---|---|---|
192.168.8.150 | server01 | swarm_manager |
192.168.8.151 | server02 | swarm_node |
192.168.8.152 | server03 | swarm_node |
2.所有节点都要安装docker
apt-get -y install ca-certificates curl gnupg lsb-release
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
apt-get -y install docker-ce docker-ce-cli containerd.io
sudo usermod -aG docker $USER# 设置镜像加速和私有镜像站
cat >> /etc/docker/daemon.json << EOF
{"registry-mirrors":["https://docker.rainbond.cc"],"insecure-registries": ["http://192.168.57.200:8099"]
}EOF#重启docker
systemctl daemon-reload
systemctl restart docker
# 所有节点设置 hosts 解析 cat >> /etc/hosts << EOF
192.168.146.10 server01
192.168.146.11 server02
192.168.146.12 server03
EOF
3.主节点初始化集群-init
[root@server01 ~]# docker swarm init --advertise-addr 192.168.8.150
#--advertise-addr参数表示其它swarm中的worker节点使用此ip地址与manager联系
# Swarm initialized: current node (dh6qthwwctbrl0y3hx1k41icl) is now a manager.
To add a worker to this swarm, run the following command:
# 保存下列命令与token令牌,用于添加工作节点 docker swarm join --token SWMTKN-1-0vdbyxq80uk8sf9nlnahsnkv6w3gaf5necl992ia0g8dmc5x8c-bkenoigc7kwizoch08r3fc4wq 192.168.8.150:2377
# 添加Manager节点到Swarm集群时,执行'docker swarm join-token manager'获取令牌 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
4.添加worker(node节点)到swarm
# 复制你自己上一步中输出的完整命令到工作节点中。
root@server02:~# docker swarm join --token SWMTKN-1-00hjfw0qja65fe0icmzu3u45zcvvpmhab5nx2fb9b0za9e5x91-d0sawsg9x0bmjzttllwdgx903 192.168.146.10:2377
This node joined a swarm as a worker.
root@server03:~# docker swarm join --token SWMTKN-1-00hjfw0qja65fe0icmzu3u45zcvvpmhab5nx2fb9b0za9e5x91-d0sawsg9x0bmjzttllwdgx903 192.168.146.10:2377
This node joined a swarm as a worker.
5.验证加入情况
docker node ls
6.在Swarm中部署服务(nginx为例)
# 创建网络在部署服务
# 创建网络
root@yjy-virtual-machine:~# docker network create -d overlay nginx_net
w73swt4bakgvn2hwp994x52h5
root@yjy-virtual-machine:~# docker netwwork ls | grep nginx_net
docker: unknown command: docker netwworkRun 'docker --help' for more information
#部署服务
root@yjy-virtual-machine:~# docker service create --replicas 1 --network nginx_net --name my_nginx -p 80:80 nginx:1.26
6m9xenp8d9lz0f2kuwi7c9egt
overall progress: 1 out of 1 tasks
1/1: running
verify: Service 6m9xenp8d9lz0f2kuwi7c9egt converged
在 manager与node 节点上使用上面这个覆盖网络创建 nginx 服务 其中,--replicas 参数指定服务由几个实例组成 注意:不需要提前在节点上下载 nginx 镜像,这个命令执行后会自动下载这个容器镜像
7.(1)使用docker service ls 查看正在运行服务的列表
(2)查询Swarm中服务的信息 -pretty 使命令输出格式化为可读的格式,不加 --pretty 可以输出更详细的信息:
(3)查询到哪个节点正在运行该服务
还能做负载均衡实验
1.先要进入三个节点的容器,再编辑网页内容,编辑完之后退出容器
manage:
node1:
node2:
2.用curl就能访问到了