docker -swarm集群搭建

Docker Swarm集群配置与管理实战
本文介绍了如何在三台主机(192.168.19.4, 192.168.19.5, 192.168.19.6)上搭建Docker Swarm集群。首先,在192.168.19.4上初始化Swarm并获取加入令牌,然后192.168.19.5加入集群。接着,创建并部署了一个Nginx服务,并实现了动态扩容。通过管理节点查看服务分布,进行了滚动更新操作。遇到问题,如manager节点无法加入,解决办法是关闭防火墙。" 120054513,9480732,Spring5框架详解与实战笔记,"['Java-EE', 'spring', 'maven', 'intellij-idea']

一共三台主机
192.168.19.4
192.168.19.5
192.168.19.6

192.168.19.4
设置主机名

[root@centos redis-cluster]# hostnamectl set-hostname manager
[root@centos redis-cluster]#

初始化swarm集群

[root@centos redis-cluster]# docker swarm init 
Swarm initialized: current node (lfjk87d0pguk7tkgoj69fu9nq) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-526bzo5skkyhb509xk6mpbmsm5wepnbt12clg68ozr0n93emtf-adqinc1qrub0uyti0683hjqvw 192.168.19.4:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

获取加入令牌

[root@centos redis-cluster]# docker swarm join-token manager
To add a manager to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-526bzo5skkyhb509xk6mpbmsm5wepnbt12clg68ozr0n93emtf-b1r2kkd4ccic3jpdlpsh8sjlq 192.168.19.4:2377

[root@centos redis-cluster]# docker swarm join-token worker
To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-526bzo5skkyhb509xk6mpbmsm5wepnbt12clg68ozr0n93emtf-adqinc1qrub0uyti0683hjqvw 192.168.19.4:2377

[root@centos redis-cluster]# 

查询集群的所有节点

[root@centos redis-cluster]# docker node ls
ID                            HOSTNAME   STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
lfjk87d0pguk7tkgoj69fu9nq *   manager    Ready     Active         Leader           20.10.11

192.168.19.5
设置机器名

[root@centos ~]# hostnamectl set-hostname worker

加入集群

[root@centos ~]# docker swarm join --token SWMTKN-1-526bzo5skkyhb509xk6mpbmsm5wepnbt12clg68ozr0n93emtf-adqinc1qrub0uyti0683hjqvw 192.168.19.4:2377
This node joined a swarm as a worker.

192.168.19.4
创建服务

[root@centos redis-cluster]# docker service create --replicas 1 --name mynginx -p 80:80 nginx
puajwi3kllcgd482vdyqdm4mn
overall progress: 1 out of 1 tasks 
1/1: running   [==================================================>] 
verify: Service converge

查看服务

[root@centos redis-cluster]# docker service ls
ID             NAME      MODE         REPLICAS   IMAGE          PORTS
puajwi3kllcg   mynginx   replicated   1/1        nginx:latest   *:80->80/tcp
[root@centos redis-cluster]# docker service inspect --pretty mynginx

ID:		yirs931yqmkzwjkuhhlrvyex3
Name:		mynginx
Service Mode:	Replicated
 Replicas:	1
Placement:
UpdateConfig:
 Parallelism:	1
 On failure:	pause
 Monitoring Period: 5s
 Max failure ratio: 0
 Update order:      stop-first
RollbackConfig:
 Parallelism:	1
 On failure:	pause
 Monitoring Period: 5s
 Max failure ratio: 0
 Rollback order:    stop-first
ContainerSpec:
 Image:		nginx:latest@sha256:9522864dd661dcadfd9958f9e0de192a1fdda2c162a35668ab6ac42b465f0603
 Init:		false
Resources:
Endpoint Mode:	vip
Ports:
 PublishedPort = 80
  Protocol = tcp
  TargetPort = 80
  PublishMode = ingress 

动态扩容

[root@centos redis-cluster]# docker service scale mynginx=2
mynginx scaled to 2
overall progress: 2 out of 2 tasks 
1/2: running   [==================================================>] 
2/2: running   [==================================================>] 
verify: Service converged
[root@centos redis-cluster]# docker service ls
ID             NAME      MODE         REPLICAS   IMAGE          PORTS
puajwi3kllcg   mynginx   replicated   2/2        nginx:latest   *:80->80/tcp

查看192.168.19.4机器

[root@centos redis-cluster]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS                      PORTS     NAMES
fe5299cd8172   nginx:latest   "/docker-entrypoint.…"   7 minutes ago    Up 7 minutes                80/tcp    mynginx.1.4d3c535tl0jid28z5i54info9
5ae1db544afc   redis          "docker-entrypoint.s…"   29 minutes ago   Exited (0) 27 minutes ago             redis-6372

查看192.168.19.5机器

[root@centos ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED              STATUS              PORTS     NAMES
5d7aa8a46a8c   nginx:latest   "/docker-entrypoint.…"   About a minute ago   Up About a minute   80/tcp    mynginx.2.jqpo0xtpdo6usuavhmiptu0py

都部署了 nginx

查看服务跑在那台机器上 注意:只能在manage节点使用

[root@centos redis-cluster]# docker service ps mynginx
ID             NAME        IMAGE          NODE      DESIRED STATE   CURRENT STATE            ERROR     PORTS
4d3c535tl0ji   mynginx.1   nginx:latest   manager   Running         Running 12 minutes ago             
jqpo0xtpdo6u   mynginx.2   nginx:latest   worker    Running         Running 6 minutes ago 

服务应用滚动更新

[root@centos redis-cluster]# docker service update  --replicas 2 --update-delay 10s mynginx
mynginx
overall progress: 2 out of 2 tasks 
1/2: running   [==================================================>] 
2/2: running   [==================================================>] 
verify: Service converged

注意:

  1. manager节点加入不上;关闭机器的防火墙就可以了
搭建Docker Swarm集群,您需要遵循以下步骤: 1. 安装Docker:确保所有要加入集群的节点上都安装了Docker。您可以按照Docker官方文档的说明进行安装。 2. 初始化Swarm:选择一个节点作为Swarm管理节点,使用`docker swarm init`命令初始化Swarm。 ``` $ docker swarm init --advertise-addr <MANAGER-IP> ``` `<MANAGER-IP>`是管理节点的IP地址。 3. 加入节点:在其他节点上,使用`docker swarm join`命令将它们加入到Swarm集群。 ``` $ docker swarm join --token <TOKEN> <MANAGER-IP>:<PORT> ``` `<TOKEN>`是在管理节点初始化Swarm时生成的令牌,`<MANAGER-IP>`和`<PORT>`是管理节点的IP地址和端口。 4. 查看节点状态:在管理节点上使用`docker node ls`命令查看已加入集群的节点列表。 ``` $ docker node ls ``` 您应该能够看到所有已加入集群的节点。 5. 部署服务:使用Docker Stack或Docker Compose文件定义您要在集群中运行的服务和配置。然后,使用`docker stack deploy`命令将服务部署到Swarm集群。 ``` $ docker stack deploy -c <COMPOSE-FILE> <STACK-NAME> ``` `<COMPOSE-FILE>`是包含服务定义的Docker Stack或Docker Compose文件,`<STACK-NAME>`是您为该堆栈指定的名称。 6. 查看服务状态:使用`docker service ls`命令查看在集群中运行的服务列表。 ``` $ docker service ls ``` 您应该能够看到已部署的服务和它们的状态。 这样,您就成功地搭建了一个Docker Swarm集群,并在集群中部署了服务。您可以根据需要添加或删除节点,并管理集群中的服务。有关更详细的指南和选项,请参考Docker官方文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值