集群搭建
2024年07月23日
一、认识
搭建 Docker Swarm
集群可以通过以下步骤实现,包括初始化 Swarm
集群、添加节点、部署服务等。
二、准备
2.1 机器防火墙
防火墙端口如下:
-
TCP port 2376
-
TCP port 2377
-
TCP and UDP port 7946
-
UDP port 4789
2.2 机器安全策略组
防火墙端口如下:
-
TCP port 2376
-
TCP port 2377
-
TCP and UDP port 7946
-
UDP port 4789
2.3 机器 Docker 安装
setup.sh
脚本如下
# install some tools
sudo yum install -y git vim gcc glibc-static telnet psmisc
# install docker
curl -fsSL get.docker.com -o get-docker.sh
sh get-docker.sh
if [! $(getent group docker)]; then
sudo groupadd docker
else
echo "docker user group already exists"
fi
sudo gpasswd -a $USER docker
sudo systemctl start docker
rm -rf get-docker.sh
sudo sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
sudo systemctl restart sshd
三、搭建
3.1 初始化 Swarm
选择一个节点作为管理节点(Manager
),在该节点上运行以下命令来初始化 Swarm
集群:
docker swarm init
// 或者
docker swarm init --advertise-addr MANAGER-IP
// 此时查看节点
docker node ls
<MANAGER-IP>
是管理节点的 IP
地址。初始化完成后,会输出一个加入命令,包括一个加入令牌(join token
),用于其他节点加入集群。
3.2 加入 Swarm 集群
在其他节点上运行上一步输出的加入命令,将它们加入到 Swarm
集群中
docker swarm join --token [Token] <manager-ip>:<manager-port>
// 此时,回到 manager 机器, 查看节点。注意,只可以在 manager 节点使用 docker node ls
docker node ls
3.3 Manager 节点部署服务
以 Nginx
为例,部署如下:
docker service cerate --name nginx nginx:latest
docker service ls
docker service ps nginx // 查看服务部署情况,分别部署到了哪台机器上
这时候,会随机部署到任意节点机器上,可以在这个机器上查看
docker container ls
3.4 Manager 节点扩展服务
通过 docker service scale
水平扩展
docker service scale nginx=5
或者通过 docker service update my_service --replicas
来实现水平扩展
docker service update nginx --replicas 5
水平扩展之后,manager
节点查看此时的服务部署情况:
docker service ls
docker service ps nginx
此时,Nginx
分别部署到了几个节点机器上。