跳到主要内容

集群搭建

2024年07月23日
柏拉文
越努力,越幸运

一、认识


搭建 Docker Swarm 集群可以通过以下步骤实现,包括初始化 Swarm 集群、添加节点、部署服务等。

二、准备


2.1 机器防火墙

防火墙端口如下:

  1. TCP port 2376

  2. TCP port 2377

  3. TCP and UDP port 7946

  4. UDP port 4789

2.2 机器安全策略组

防火墙端口如下:

  1. TCP port 2376

  2. TCP port 2377

  3. TCP and UDP port 7946

  4. 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 分别部署到了几个节点机器上。