当前位置:首页 > 行业动态 > 正文

从服务器地址清单建swarm集群

从服务器地址清单创建Swarm集群,需先在各节点安装Docker,然后在管理节点初始化Swarm,接着将其他节点加入集群,最后可通过 docker swarm ls查看集群状态。

1、准备工作

确认服务器环境:确保所有服务器都已安装Docker,并且Docker服务正在运行,可以通过在每台服务器上执行docker --versionsystemctl status docker(对于使用systemd的系统)来检查。

配置主机名解析:编辑/etc/hosts文件,将服务器的IP地址与易于记忆的主机名关联起来,如果有三台服务器,其IP地址分别为192.168.1.101、192.168.1.102和192.168.1.103,可以在每台服务器的/etc/hosts文件中添加以下内容:

IP地址 主机名
192.168.1.101 manager1
192.168.1.102 worker1
192.168.1.103 worker2

关闭防火墙或配置端口开放:如果服务器启用了防火墙,需要确保Docker Swarm所需的端口开放,这些端口包括2377(用于集群管理通信)、7946(用于集群成员通信)和4789(用于覆盖网络通信),在某些Linux发行版中,可以使用firewall-cmd命令来开放端口,

firewall-cmd --zone=public --add-port=2377/tcp --permanent

firewall-cmd --zone=public --add-port=7946/tcp --permanent

firewall-cmd --zone=public --add-port=4789/udp --permanent

firewall-cmd --reload

2、初始化Swarm集群

选择一台服务器作为Manager节点:在服务器地址清单中选择一台服务器(例如IP地址为192.168.1.101的服务器),在该服务器上执行以下命令来初始化Swarm集群:

从服务器地址清单建swarm集群

docker swarm init --advertise-addr <manager_ip>(其中<manager_ip>是该Manager节点的IP地址,如192.168.1.101)

记录Token和Manager加入命令:初始化成功后,Docker会输出一些重要信息,其中包括Worker节点加入集群所需的Token以及Manager节点加入集群的命令,这些信息非常重要,需要记录下来以便后续操作。

docker swarm join-token: SWMTKN-1-...-...(这是一个示例Token,实际Token会不同)

docker swarm join --token SWMTKN-1-...-... 192.168.1.101:2377

3、添加Worker节点到集群

获取Worker加入Token:在其他需要作为Worker节点加入集群的服务器上,执行以下命令获取Worker加入Token:

docker swarm join-token worker -q

从服务器地址清单建swarm集群

执行Worker加入命令:使用上一步获取到的Token和Manager节点的IP地址,在其他服务器上执行Worker加入命令,对于IP地址为192.168.1.102的服务器,执行以下命令:

docker swarm join --token SWMTKN-1-...-... 192.168.1.101:2377

重复上述步骤:按照同样的方法,将其他服务器作为Worker节点加入到Swarm集群中。

4、验证集群状态

查看节点列表:在所有节点上执行docker node ls命令,查看集群中的节点列表,应该能够看到所有已加入的Manager和Worker节点,并且每个节点的状态显示为“Ready”。

ID HOSTNAME STATUS AVAILABLE MANAGER STATUS ENGINE VERSION
node1 manager1 Ready Active Leader 20.10.5
node2 worker1 Ready Active 20.10.5
node3 worker2 Ready Active 20.10.5

检查服务和容器状态:可以部署一个简单的测试服务来验证集群是否正常工作,创建一个Nginx服务:

docker service create --name my_nginx --publish published=80,target=80 nginx

从服务器地址清单建swarm集群

访问服务:通过浏览器或其他工具访问Manager或Worker节点的IP地址和端口(在本例中是80端口),如果能够正常访问Nginx欢迎页面,则说明Swarm集群工作正常。

以下是两个关于从服务器地址清单建Swarm集群的常见问题及解答:

1、如果初始化Swarm集群时没有指定--advertise-addr参数会怎样?

如果不指定--advertise-addr参数,Docker会自动检测并使用默认的网络接口IP地址作为广告地址,在一些复杂的网络环境中,自动检测可能无法正确识别适合的IP地址,导致其他节点无法正确连接到该Manager节点,建议明确指定一个可靠的IP地址,以确保集群的正常通信。

2、如何在已有的Swarm集群中添加新的节点?

要在已有的Swarm集群中添加新的节点,首先需要在新节点上获取当前集群的加入Token(可以通过在现有集群中的任何节点上执行docker swarm join-token worker -qdocker swarm join-token manager -q命令来获取),在新节点上执行docker swarm join --token <token> <manager_ip>:2377命令(其中<token>是获取到的Token,<manager_ip>是集群中任意一个Manager节点的IP地址),这样,新节点就会被添加到现有的Swarm集群中。