构建微服务实验环境(二):Docker Swarm 集群

本文详细介绍了如何在Centos上构建Docker Swarm集群,包括集群的配置、容器网络、存储管理和服务部署。通过Docker Swarm,可以实现容器的集群化管理和服务的负载均衡。此外,文章还探讨了Docker Swarm与K8s等其他容器集群方案的比较,以及在实际应用中需要注意的问题,是了解和实践Docker Swarm的实用指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

构建微服务实验环境(二):Docker Swarm 集群

【摘要】微服务架构目前最流行的方案(最佳实践)是容器集群。AWS 的 ECS、Docker 的 Swarm、google 的 Kubernetes(K8s),apache 的 mesos,包括 Rancher Labs 的 Rancher 。 建议使用 AWS 或 阿里云 等共有云部署,会有更多技术支持,让你体验不同方案的优势。这里仅为了让你更好理解容器集群工作原理,介绍在 Centos 集群上部署 Swarm、K8s、 Rancher 的方案。

(1)容器与应用: 讲述 centos docker的安装,仓库、镜像、容器、服务的概念, dockerfile,compose 文件,容器管理图形界面,以单机操作为主线。
(2)Docker Swarm 集群:讲述集群(cluster)manager,worker,node 的概念与应用在集群部署。重点讲述容器网络、存储管理、集群管理、服务发现等知识。
(3)Rancher 管理平台:讲述多租户多主机容器运行管理平台 Rancher 的租户、环境、主机、环境模板概念与应用。包括 Rancher 自带集群管理 Cattle 的栈、服务的管理,需要读者对比与Docker Swarm 集群在容器基础服务、管理方式方面的差异

1、Docker Swarm 体验

docker swarm 是 Docker 公司的一个开源项目。自 v1.12.3 以来, docker swarm 成为 docker 引擎内置的服务。它和谷歌的 K8s 产生了直接竞争。很难说哪个好,对于熟悉 docker 容器的人来说,docker swarm 应该友好一些。

本部分内容主要来自 docker 官网 Get Started, Part 4~5

1.1 了解集群(Swarm clusters)

群集是一组运行 Docker 的计算机组成,其中部分机器是集群管理机(Swarm Manager) ,其他的是工作机(Worker)。在集群中,在 Manager 机器上使用 Docker 命令,会在群集上执行。群集中的机器可以是物理机或虚拟机。加入群集后,它们被统称节点(Node)

Swarm管理机可以使用几种策略来运行容器,例如“最空闲节点”- 容器会填充最少使用的机器。或“全局策略”,它确保每个机器能只能获得指定容器的一个实例。您可以将这些策略写在 docker-compose.yml 这样的服务组合定义文件中,Swarm管理机会按策略部署。

Swarm Manager是群集中唯一可以执行 docker 命令的机器,或授权其他机器作为工人机(worker)加入群集。worker 只是提供能力,没有权力指挥其他机器工作。

如果您已经熟悉单主机中使用Docker。现在,可切换到 Docker 集群模式。启用群组模式(swarm mode)使当前的机器成为群组管理机。这时,这台 Docker 将运行管理这个群集的指令,而不再是在当前的机器上运行。

主要概念

  • Swarm Manager 集群的管理者
  • worker 集群中的执行者
  • Node 集群中任意的 docker 机器
  • Swarm mode 集群模式, docker 机器的状态

1.2 配置集群

(1) 准备机器

1) 清理 docker-master 机器

  • 清理所有的容器 docker rm -f $(docker ps -q)
  • 退出可能的集群状态 docker swarm leave --force
  • 删除从仓库下载的实验用镜像 docker rmi registry.cn-shenzhen.aliyuncs.com/pmlpml/repo:friendlyhello

2) 复制 docker-master 生成 workers

关闭 docker-master ,以它为模板,用 VBox 链接复制 workers,配置如下:

  • docker-worker1:配置 192.168.56.111/24;主机名=“docker-worker1”
  • docker-worker2:配置 192.168.56.112/24;主机名=“docker-worker2”

配置完成后,一般用无界面模式启动,用 ssh登陆

(2)创建 docker 集群

1) 创建第一个 Manager

ssh 连接 docker-master 机器上,启动 docker swarm mode :

# docker swarm init  --advertise-addr 192.168.56.110

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

    docker swarm join \
    --token SWMTKN-1-0o8kwg6rwcsyllo8yr4x24t304wtjvh01h1mq3jhcxi1qy5qrl-00hvxabe2qpuwyh4odii07omo \
    192.168.56.110:2377

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

这时,manager 将在端口 192.168.56.110:2377 侦听集群节点请求。

  • docker swarm join-token worker 显示作为 worker 加入该集群的指令
  • docker swarm join-token manager 显示作为 manager 加入该集群的指令

2) 将两个 worker 分别加入集群

分别用 ssh 连接两个 worker 。贴入 manager 上 docker swarm join-token worker 显示的指令, 格式如下:

docker swarm join \
  --token <token> \
  <ip>:<port>

This node joined a swarm as a worker.

这时,我们的第一个集群就建完了。

提示, 如果因为防火墙,无法加入集群,可使用以下命令关闭防火墙:

setenforce 0
systemctl disable iptables-services firewalld
systemctl stop iptables-services firewalld

3) 在 manager 上检查结果,这时使用 docker node 指令组

# docker node ls

ID                           HOSTNAME        STATUS  AVAILABILITY  MANAGER STATUS
srm9pnuj0zum7z79xb8ptnmdi *  docker-master   Ready   Active        Leader
vhrpxjbbu3ijt84t6c9cm2t64    docker-worker2  Ready   Active
yzzt6k9rfcrti19ergdpde77u    docker-worker1  Ready   Active

在 manager 启动 Portainer 容器

在浏览器中, Swarm 菜单看到类似的结果。

1.3 在集群中部署服务和使用服务

(1) 部署服务

我们在 docker-master 机器上执行同样的部署命令

docker stack deploy -c docker-compose.yml myservice

检查结果:

# docker stack ps myservice

ID                  NAME                IMAGE                                                         NODE                DESIRED STATE       CURRENT STATE     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值