docker swarm集群

集群构建

不包含在任何 Swarm 中的 Docker 节点,称为运行于单引擎(Single-Engine)模式。一旦被加入 Swarm 集群,则切换为 Swarm 模式。第一步我们要做的就是初始化 Swarm。

初始化swarm集群

将本机作为manager节点

docker swarm init --advertise-addr 192.168.xxx.xxx

docker warm init会通知 Docker 来初始化一个新的 Swarm,并将自身设置为第一个管理节点,同时也会使该节点开Swarm 模式。

--advertise-addr 参数配置当前管理节点的发布地址,其他节点必须能连接这个地址。在机器只有一个ip的情况下可以省略,如果由多个ip则必须手动指定。

可以通过以下命令查看集群和节点的状态

docker info

在这里插入图片描述
在这里插入图片描述

节点加入集群

其它节点可以以工作节点管理节点的方式加入集群,执行的命令,可以在管理节点运行以下命令查看:

docker swarm join-token worker # 查看工作节点加入集群的指令和令牌
docker swarm join-token manager # 查看管理节点加入集群的指令和令牌

swarm集群管理基本命令

docker swarm

在这里插入图片描述

  • docker swarm init
    初始化集群
  • docker swarm join-token worker|manager
    管理令牌,可查看刷新令牌,只能在管理节点执行
  • docker swarm join HOST:PORT
    将一个节点机器人加入集群
  • docker swarm update
    更新集群状态,只能在管理节点执行
    • -autolock:修改管理节点的自动锁定功能配置,可用值有: true、false
    • -cert-expiry:验证节点之间的通讯令牌的间隔,默认时2160小时,可用单位: ns|us|ms|s|m|h
    • -dispatcher-heartbeat:心跳包间隔时长,默认5秒,可用单位:ns|us|ms|s|m|h
    • -task-history-limit:任务历史记录保留限制
  • docker swarm leave
    脱离集群,docker swarm leave -f 强制离开
  • docker swarm unlock-key
    管理解锁码,可查看,刷新解锁码
    • -q:只输出解锁码
    • -rotate:刷新解锁码
  • docker swarm unlock
    解锁一个管理节点

docker node

docker node常用命令如下
在这里插入图片描述

  • docker node ls
    列出集群中的节点,只能在管理节点操作
  • docker node inspect <节点名>
    查看节点的详细信息,只能在管理节点操作
  • docker node demote 节点名
    对节点进行降级
  • docker node promote 节点名
    对节点进行升级
  • docker node ps [OPTIONS] [NODE…]
    查看节点上正在执行的任务,可以通过节点名称查看某一节点的任务,默认是当前节点,只能在管理节点操作
  • docker node rm [OPTIONS] NODE [NODE…]
    通过节点名称移除节点,只能在管理节点操作,可以一次移除多个节点,一个节点使用docker swarm leave命令脱离集群之后还可以用docker node ls命令看到,使用docker node rm移除的节点将彻底不再集群中

部署服务

基本部署操作

docker swarm 搭建好集群,我们目的在集群中部署应用。swarm集群部署应用最基本的命令是docker service,它的使用方式类似 docker container,也适用于部署单个应用,都不能进行编排(后续引入docker stack类似集群下的docker compose),只不过一个用于单机,一个用于集群

下面以在swarm集群中部署nginx为例:

默认的情况下,管理节点也是一个工作节点,服务也会部署在了管理节点上,如果我们不希望服务部署在管理节点上的话,可以将管理节点设置为darin状态。
在这里插入图片描述
执行以下命令将管理节点设置威darin

docker node update --availability drain server

我这里因为只有一台机子,因此我就不设置为drain了
之后执行以下命令部署nginx应用:

docker service create --name nginx-test --replicas 2  -p 8080:80 nginx:1.21.6

在这里插入图片描述
swarm集群中进行应用部署使用docker swarm create命令,该命令与熟悉的 docker container run 命令的许多参数是相同的,上面的命令中声明基于nginx镜像部署应用,服务名称为nginx-test,将容器内部的80端口映射到集群网络的8080端口,–replicas 2在集群节点之中保持2个服务副本(即两个容器)。

运行以下命令查看服务以及查看服务详情

docker service ls
docker service ps nginx-test

在这里插入图片描述
我们创建的所有服务都会被 Swarm 持续监控,Swarm 会在后台进行轮训检查(Reconciliation Loop),来持续比较服务的实际状态和期望状态是否一致。如果一致,则无须任何额外操作;如果不一致,Swarm 会使其一致。换句话说,Swarm 会一直确保实际状态能够满足期望状态的要求。

例如这里的两个nginx的容器其中一个宕机了,swarm会重新启动一个副本,让正常运行的nginx容器始终保持在两个,这使得服务在面对节点宕机等问题时具有自愈能力。
在这里插入图片描述
这里如果有多台机器加入了集群,每个机器的ip:8080都能访问到nginx服务
因为默认情况下swarm集群采用ingress模式发布端口,通过路由网格模式让我们发布的端口在集群每一个节点上口都可以访问,再通过内部的负载均衡自动转发到实际的运行的容器之中。具体可参考这篇文章

我们的应用在实际的应用中可能会根据访问量进行扩容、缩容,即根据实际情况调整容器启动的数量,通过docker service scale命令可以很方便得进行操作。例如下面将nginx容器扩展到4个

docker service scale nginx-test=4

在这里插入图片描述
有些时候我们会对服务的配置进行修改,例如增加一个映射端口:

docker service update --publish-add 8081:80 nginx-test
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值