Docker Swarm集群管理

这篇具有很好参考价值的文章主要介绍了Docker Swarm集群管理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 秋风阁(https://focus-wind.com/)
  • Docker Swarm官方文档

Docker Swarm是Docker引擎原生内置的容器集群管理工具。

基本概念

Swarm节点

运行Docker的主机可以主动初始化一个Swarm集群作为Leader节点或者加入一个已存在的Swarm集群,这样这个运行Docker的主机就成为一个Swarm集群的节点。
Swarm集群节点可以分为manager管理节点work工作节点

管理节点用于Swarm集群的管理,docker swarm命令基本只能在管理节点执行。一个Swarm集群可以有多个管理节点,但只有一个管理节点可以成为Leader。

为了利用Swarm模式的容错特性,Docker建议您根据组织的高可用性要求实现奇数个节点。当您有多个管理器时,您可以从管理器节点的故障中恢复而无需停机。Docker建议一个Swarm最多使用七个管理器节点。一个N管理器集群最多可以容忍丢失 N − 1 2 \frac{N - 1}{2} 2N1管理器。如:一个三管理器群最多可以容忍一名管理器的损失。

工作节点是任务执行节点,管理节点将服务(service)下发至工作节点执行。管理节点默认也作为工作节点。也可以通过配置让服务只运行在管理节点。
Docker Swarm集群管理

任务与服务

  • 任务(task)是Swarm中的最小的调度单位,目前来说就是一个单一的容器。
  • 服务(services)是指一组任务的集合,服务定义了任务的属性。
    Docker Swarm集群管理

集群管理

端口配置

Docker Swarm集群管理

  • 2377(TCP): 用来与管理器节点之间进行通信。不开放2377端口,可能会导致无法加入集群中。
  • 7946(TCP/UDP): 用于docker节点之间的通信。
  • 4789(UDP): 覆盖网络流量。
    • 4789端口是Swarm数据路径端口的默认值,也称为VXLAN端口。防止任何不受信任的流量到达此端口很重要,因为VXLAN不提供身份验证。此端口应只对受信任的网络开放,而绝不能在外围防火墙上开放。

创建集群

$ docker swarm init --advertise-addr ${IP}

Swarm initialized: current node (xxx) is now a manager.

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

    docker swarm join --token xxx IP:2377

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

在服务器上调用docker swarm init若输出正常即集群模式创建成功。本主机自动成为Leader管理员节点。当一台主机有多个网卡多个IP时,需要使用--advertise-addr参数来指定IP。

加入集群

在加入集群时,需要保证两个主机之间可以正常通讯。在加入集群时,需要Leader节点的token信息。在Leader节点中输入:

$ docker swarm join-token [manager|worker]

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

    docker swarm join --token xxx IP:2377

根据需要加入工作节点还是管理节点选择参数,生成加入节点的语句。在主机中键入命令即可加入Leader节点。

$ docker swarm join --token xxx IP:2377

查看集群

$ docker node ls
ID      HOSTNAME         STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
xxx *   docker-desktop   Ready     Active         Leader           20.10.23

通过docker node ls命令查看当前集群中有多少节点,节点的活动状况。

退出集群

$ docker swarm leave --force
Node left the swarm.

通过docker swarm leave来离开集群,对于Leader节点或退出集群失败的情况可以通过--force参数来强制退出。

节点设置

节点标签设置

在集群环境中,因为不同节点的系统、配置、环境等的不同,导致有的服务只能在只能在指定的机器上跑(如:只在带GPU机器上跑人工智能相关模型的服务),或者由于业务原因导致我们需要在特定的节点上跑相关服务。我们可以通过给节点设置label标签的方式来使节点固定在相关的机器上。

$ docker node update --label-add ${key}=${value} ${node_id}

${node_id}可以根据docker node ls命令进行查看,通过给节点添加label,在docker-compose文件中添加如下配置使服务只能在指定节点中运行。

deploy:
      placement:
        constraints:
          - node.labels.${key} == ${value}

节点信息查询

$ docker inspect ${node_id}
...
"Spec": {
            "Labels": {
                "arch": "x86_64"
            },
            "Role": "manager",
            "Availability": "active"
        },
...

通过docker inspect ${node_id}命令来查看节点的详情信息,如:我们可以通过inspect命令来查看我们对节点设置的标签信息。

服务管理

Docker Swarm采用懒加载的方式进行服务的部署,当调用完部署服务的命令后,可能会长时间看到服务没有正常启动,日志也没有任何输出,此时有可能是因为系统中还没有下载相关的镜像,Docker引擎正在后台默默的下载镜像。

部署服务

Swarm内置docker compose,可以通过docker-compose文件来进行部署,一次启动多个关联的服务。在Swarm中,我们可以使用docker stack deploy来进行Swarm服务的部署。

$ docker stack deploy ${services_name} -c ${compose_file_path}

其中-c指定docker-compose文件,在一次部署中可以指定多个服务部署文件进行多服务的部署。

查看服务

$ docker stack ls

通过docker stack ls可以查看本集群中有多少服务集,各个服务集里面有多少个服务

$ docker stack services ${services_name|servicves_id}

通过docker stack services ${services_name|servicves_id}命令查看该服务集下面有多少具体的服务,服务里面有多少个分片或任务,各个服务的具体运行情况。

服务日志查看

在docker服务中,可以通过volume挂在目录的方式将数据和日志等文件信息挂载到容器外。通过这种方式,可以有效健壮的保留容器的运行信息可进行容器迁移。在使用Docker时,建议将数据和日志挂载到外部磁盘上,这样可以打开外部文件进行日志信息的查看和传输管理等操作。
也可以使用如下命令:

docker service logs ${service_name|service_id} -f -t

注意查看日志的名称为${service_name|service_id}。可以通过docker stack services ${services_name|servicves_id}命令来查看具体的${service_name|service_id}信息、其中-t参数表示显示日志的时间戳,-f参数表示跟踪日志输出,即当在查看服务日志时,仍有日志输出,控制台会同步显示更新的日志信息。根据需要添加参数。

服务重启

docker service update --force

若服务因系统资源不足或出现错误等而出现挂掉的情况,等解决完问题后,可以使用docker service update --force命令来强制重启挂掉的服务。文章来源地址https://www.toymoban.com/news/detail-445685.html

到了这里,关于Docker Swarm集群管理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 了解Swarm 集群管理

    了解Swarm 集群管理

    简介 Docker Swarm 是 Docker 的集群管理工具。它将 Docker 主机池转变为单个虚拟 Docker 主机。 Docker Swarm 提供了标准的 Docker API,所有任何已经与 Docker 守护程序通信的工具都可以使用 Swarm 轻松地扩展到多个主机。 支持的工具包括但不限于以下各项: Dokku Docker Compose Docker Machine J

    2024年02月13日
    浏览(8)
  • Docker:Docker集群配置与应用(Docker Swarm)

    Docker:Docker集群配置与应用(Docker Swarm)

    可以认为Docker Swarm(Go语言开发)将一个Docker主机池变成了一个单独的虚拟机。 了解 Docker Swarm,掌握 Swarm 集群 建立及节点管理 ; 了解 Swarm 服务,学会在 集群中部署和管理服务 ; 了解 Swarm 网络, 掌握 overlay 网络的创建和使用 ; 了解 Swarm 高可用性和负载平衡,学会配置外部

    2024年02月03日
    浏览(16)
  • Docker Swarm集群企业案例实战

    Docker Swarm集群企业案例实战

    Docker Swarm 和 Docker Compose 一样,都是 Docker 官方容器编排项目,但不同的是,Docker Compose 是一个在单个服务器或主机上创建多个容器的工具,而 Docker Swarm 则可以在多个服务器或主机上创建容器集群服务,对于微服务的部署,显然 Docker Swarm 会更加适合 。 Swarm是Docker公司自主研

    2024年02月19日
    浏览(11)
  • 【大白学Docker】Docker Swarm 集群部署 Wordpress【实验】

    【大白学Docker】Docker Swarm 集群部署 Wordpress【实验】

    1.1 Docker 集群概念和优势 Docker 集群是由多个 Docker 主机 组成的分布式系统,用于协同管理和运行容器化应用程序。 这个集群可以通过 Docker Swarm 或 Kubernetes 等容器编排工具来实现。 Docker 集群的几个概念 节点(Node): 集群中的物理或虚拟主机,可以运行 Docker 守护进程。 集

    2024年02月04日
    浏览(29)
  • Docker Swarm 集群搭建和使用 —— 筑梦之路

    Docker Swarm 集群搭建和使用 —— 筑梦之路

    swarm 集群由 管理节点 (Manager)和 工作节点 (Worker)构成。 管理节点:主要负责整个集群的管理工作包括集群配置、服务管理等所有跟集群有关的工作。诸如监控集群状态、分发任务至工作节点等操作。 工作节点:主要负责执行运行服务的任务。  官方文档:docker swarm |

    2024年02月14日
    浏览(16)
  • 使用 Docker Swarm(集群) 和Docker Stack(堆栈)部署容器化应用

    使用 Docker Swarm(集群) 和Docker Stack(堆栈)部署容器化应用

    说到集群,第一个想到的就是k8s,但docker官方也提供了集群和编排解决方案,它允许你将多个 Docker 主机连接在一起,形成一个“群集”(Swarm),并可以在这个 Swarm 上运行和管理你的服务。 与Kubernetes相比,Docker Swarm的群集管理功能相对简单,Swarm更适合于小型到中型的容器

    2024年04月25日
    浏览(12)
  • redis 三主三从高可用集群docker swarm

    redis 三主三从高可用集群docker swarm

    redis集群(cluster)笔记 redis 三主三从高可用集群docker swarm redis 三主六从高可用docker(不固定ip) redis 三主六从高可用dockerswarm高级版(不固定ip) 由于数据量过大 ,单个Master复制集难以承担,因此需要对多个复制集进行集群,形成水平扩展每个复制集只负责存储整个数据集的一部分

    2024年02月03日
    浏览(13)
  • 使用Docker Swarm部署RabbitMQ+HAProxy高可用集群(三节点-镜像模式)

    使用Docker Swarm部署RabbitMQ+HAProxy高可用集群(三节点-镜像模式)

    当前规划中,只启动一个HAProxy服务,主要用来做RabbitMQ节点的负载均衡和代理,但是HAProxy可能会出现单点故障,后续需要启动多个HAProxy节点,然后结合Keepalived来进行 设置虚拟IP 做故障转移 节点名称 节点主机名 IP地址 角色 运行服务 cluster01 cluster01 192.168.12.48 Docker Swarm Mana

    2024年02月14日
    浏览(14)
  • Docker Swarm网络管理

    在初始化Docker Swarm后,观察Docker网络,可以发现Docker网络中多了 docker_gwbridge 、 ingress 等网络,以Docker Swarm部署一个服务后,会发现在Docker中默认创建了一个类型为overlay的网络 docker_gwbridge: Docker Swarm默认桥接网络,将ingress和overlay类型网络连接到桥接网络,默认情况下,服务

    2024年01月18日
    浏览(9)
  • Docker swarm 网络配置与管理

    Docker swarm 网络配置与管理

    创建自定义overlay网络名为nginx-net创建nginx服务设置3个副本并使用nginx-net网络 Swatm集群部署nginx服务副本数量为3并使用自定义overlay网络 在创建一个overlay网络名为nginx-net01 将现已经启动的nginx01服务进行修改链接至nginx-net01网络 删除上述创建的自定义overlay网络和nginx01服务工作节

    2024年02月12日
    浏览(12)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包