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

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

简单介绍

swarm 集群由管理节点(Manager)和工作节点(Worker)构成。

管理节点:主要负责整个集群的管理工作包括集群配置、服务管理等所有跟集群有关的工作。诸如监控集群状态、分发任务至工作节点等操作。

工作节点:主要负责执行运行服务的任务。

docker集群,虚拟化,云计算,linux系统运维,docker,运维,centos

 官方文档:docker swarm | Docker Documentation

Docker Swarm 是一个容器编排工具,用于管理Docker集群,具有以下特点:

1. 横向扩展和高可用性

Docker Swarm允许在多个节点之间对任务进行分配,从而实现横向扩展以满足更高的容量需求。Swarm还可以自动将容器重新调度到其他节点以确保是高可用性的。

2. 简单易用的命令行工具

Docker Swarm是通过一个命令行工具来操作,可以轻松轻松地创建、管理和部署容器化应用程序。有很少的学习曲线,即使你没有过多的专业技能,也很容易使用。

3. 内置安全性

Swarm内置了安全机制来保护容器和数据。Swarm将自动生成TLS证书,以确保Docker的所有通信都受到保护,从而保护容器不受未经授权的访问。

4. 健康检查

Swarm还可以进行健康检查,以确保您的应用程序在整个生命周期中一直运行并可用。如果有问题,Swarm将自动停止并重新启动无法正常运行的容器。

5. 服务

Docker Swarm可以将容器组织成一个服务,使它们能够以统一的方式管理和部署。通过创建服务,您可以轻松地扩展和更新应用程序。

这些特征使Docker Swarm更容易扩展、更加高效、更容易管理和更加安全,是一个适合在生产环境中部署容器化应用程序的有效工具。

环境规划

IP地址 主机名称 节点角色 备注说明
192.168.200.172 swarm-manager manager 管理节点
192.168.200.173 swarm-worker-1 worker-1 运行节点
192.168.200.174 swarm-worker-2 worker-2 运行节点

docker-ce版本:24.0.2

# 二进制安装方式

wget https://download.docker.com/linux/static/stable/x86_64/docker-24.0.2.tgz

tar -zxf docker-24.0.2.tgz 

cp docker/* /usr/bin/

# 编辑service文件

cat > /usr/lib/systemd/system/docker.service << EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
  
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
asksMax=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
  
[Install]
WantedBy=multi-user.target
EOF

# 启动服务

systemctl daemon-reload

systemctl enable docker --now

管理节点初始化

#advertise-addr 来指定其他节点连接m0时的地址
#来指定其他节点连接m0时的地址 来指定其他节点连接m0时的地址
#来指定其他节点连接m0时的地址

1.初始化

docker swarm init --advertise-addr 192.168.200.172:2377 --listen-addr 192.168.200.172:2377
Swarm initialized: current node (wizx5rvc3k3lhgj2gfv64w820) is now a manager.

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

    docker swarm join --token SWMTKN-1-5as8zdan6v48td09riq0ja0o2j0m3fxvt4evteih544u8ifqxo-f3qulms23277siuioj80k8hbg 192.168.200.172:2377

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


2.查看节点信息
docker node ls

3.查看网络信息 docker-swarm 初始化时会创建一个类型为overlay的网络
docker network ls


4.查看docker信息
docker info

节点管理

节点的添加、删除、权限提升和降低

1. 添加节点


docker swarm join --token SWMTKN-1-5as8zdan6v48td09riq0ja0o2j0m3fxvt4evteih544u8ifqxo-f3qulms23277siuioj80k8hbg 192.168.200.172:2377


添加manager 节点 --token 会失效 时效为24小时 以后添加节点时 执行 docker swarm join-token 获取最新的token 标记文本

# 添加成为管理节点

docker swarm join-token manager

# 添加成为worker节点

docker swarm join-token worker

 2. 节点删除

# 脱离集群

#想要那个节点脱离集群就在那个节点下执行以下命令

docker swarm leave

# 删除已经脱离集群的work-02节点 
# p s:如果是多个manager节点中的其中一个节点需要先将节点降为worker节点才能删除

docker node rm work-02
# manager节点只能强制退出 manager退出后意味着整个swarm不复存在。

docker swarm leave --force

3.节点权限提升和降低

# 提升:将worker节点提升为manager节点,在manager节点执行如下命令:

docker node promote work-01

docker node ls

# 降低:将manager节点降低为worker节点,在manager节点执行如下命令:

docker node demote work-02

docker node ls


---------------------------------------------------------

# worker 变为manager

docker node update --role manager docker-n2

# manager 变为worker

docker node update --role worker docker-m3

图形界面

创建容器

# 1.启动方式1

docker run -itd --name visualizer -p 8099:8080 -e HOST=192.168.200.172 -e PORT=8080 -v /var/run/docker.sock:/var/run/docker.sock dockersamples/visualizer:latest

# 2.启动方式2
#或者使用以下命令  可以通过集群中所有ip+port进行访问

docker service create \
--name=viz \
--publish=8080:8080/tcp \
--constraint=node.role==manager \
--mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
dockersamples/visualizer

# 3. portainer-ce

docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer-ce

以上使用了两种不同的图形界面工具来查看

高可用集群说明

为了利用 swarm 模式的容错功能,可以根据组织的高可用性要求实现奇数个节点。 当有多个管理中心时,可以从一个管理中心节点的故障中恢复,而无需停机。

  • 三个管理器群可以容忍最多损失一个管理器。
  • 五个管理器群最多可以同时丢失两个管理器节点。
  • 七个管理器群最多可以同时丢失三个管理器节点。
  • 九个管理器群最多可以同时丢失四个管理器节点。
  • Docker 建议一个集群最多有七个管理器节点。 (添加更多管理器并不意味着可伸缩性或性能的提高。一般来说,情况恰恰相反。)

部署应用

以nginx为例

1. 部署nginx服务

docker run 容器启动,不具有扩缩容器。

docker service 服务启动,具有扩缩容,滚动更新

# 部署应用

docker service create -p 8888:80 --name nginx nginx

# 查看服务

docker service ls

# 查看容器

docker service ps nginx

# 查看详细信息

docker service inspect nginx

 2. 动态扩容nginx副本

docker service update --replicas 2 nginx

3. 自定义网络方式部署nginx

任意一个节点都可以访问

#在manager节点中创建overlay网络:
docker network create -d overlay wfnet

#删除docker网络
docker network rm NETWORK_ID

#查看docker 某网路
docker network inspect NETWORK_ID/name

#创建3个nginx:alpines容器的集群:
docker service create --name wf-register --network wfnet -p 90:80 --replicas 3 wf-register # (镜像名)

#在manager节点使用docker service ls 命令查看服务情况,worker节点无法查看:
docker service ls

#在manager或者worker节点都可以执行docker ps命令查看本虚拟机容器情况:
docker ps

#manager节点只用于管理集群,不希望部署服务。
docker node update --availability drain manager-01

#使用docker service scale wf-register=3命令将服务缩减/扩容为2个容器:
docker service scale wf-register=2
# 更新暴露的端口

docker service update --publish-add 8090:80 nginx

# 删除服务

docker service rm wf-register
# 一键部署nacos 示例


# 指定集群环境
docker service create \
--name wf-register \
--network wfnet \
-p 8848:8848 \
-p 9848:9848 \
-p 9555:9555 \
-p 9849:9849 \
--host=wf-mysql:192.168.200.173 \
-e MODE=cluster \
-e NACOS_SERVERS="192.168.200.172:8848 192.168.200.173:8848 192.168.200.174:8848" \
-e JVM_XMX=2g \
-e JVM_XMN=2g \
-e JVM_MS=128m \
-e JVM_MMS=320m \
--replicas 3 192.168.200.173:5000/wf-register

 stack命令

1. docker-compose.yml

#stack 最低支持版本为 3
version: "3"
  services:
    nginx-web: # 服务名称
      image: nginx:1.19.3-alpine  # 镜像名称
      container_name: nginx # 容器名称
      networks: 
        - nginx-net #指定网络
      restart: always #重启策略
      ports:
        - 81:80 #挂载端口
      deploy:
        replicas: 5  #生成实例数量
networks:
  nginx-net: #需要创建的网络名称
    driver: overlay #指定网络类型

 2.启动nginx

#在manager节点中创建docker-compose.yml文件。执行如下命令:

docker stack deploy nginx-stack --compose-file=docker-compose.yml 

或者是

docker stack deploy nginx-stack -c docker-compose.yml

#查看stack服务运行情况。执行如下命令:
docker stack services nginx-stack

#查看5个容器运行在哪个节点中。执行如下命令:

docker service ls #查看到NAME中的服务名为:nginx-stack_nginx-web

docker service ps nginx-stack_nginx-web

 常用命令

docker swarm init    初始化一个 swarm 群集
docker swarm join    加入群集作为节点或管理器
docker swarm join-token    管理用于加入群集的令牌
docker swarm leave    离开 swarm 群集
docker swarm unlock    解锁 swarm 群集
docker swarm unlock-key    管理解锁钥匙
docker swarm update    更新 swarm 群集

docker node demote    从 swarm 群集管理器中降级一个或多个节点
docker node inspect    显示一个或多个节点的详细信息
docker node ls    列出 swarm 群集中的节点
docker node promote    将一个或多个节点推入到群集管理器中
docker node ps    列出在一个或多个节点上运行的任务,默认为当前节点
docker node rm    从 swarm 群集删除一个或多个节点
docker node update    更新一个节点

docker service create    创建服务
docker service inspect    显示一个或多个服务的详细信息
docker service logs    获取服务的日志
docker service ls    列出服务
docker service rm    删除一个或多个服务
docker service scale    设置服务的实例数量
docker service update    更新服务
docker service rollback    恢复服务至update之前的配置文章来源地址https://www.toymoban.com/news/detail-634628.html

docker stack deploy 部署新的堆栈或更新现有堆栈
docker stack ls 列出现有堆栈
docker stack ps 列出堆栈中的任务
docker stack rm 删除一个或多个堆栈
docker stack services 列出堆栈中的服务

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

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

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

相关文章

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

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

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

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

    2024年02月14日
    浏览(43)
  • docker run启动一个开发备忘清单速查表 —— 筑梦之路

    包含:运维,前端,后端,工具,命令,数据库 部分截图展示:    

    2024年04月16日
    浏览(32)
  • [Docker]十一.Docker Swarm集群raft算法,Docker Swarm Web管理工具

    Raft :一致性算法,在保证大多数管理节点存活的情况下,集群才能使用, 所以就要求如果集群的话, manager 节点必须 =3 台 ,如果是两个台,其中一台宕机,剩余的一台也将不可用,以致整个集群不可用 Manager : 管理节点,用于管理工作节点,为了利用 swarm 模式的容错特性

    2024年02月04日
    浏览(49)
  • 【云原生】详细学习Docker-Swarm部署搭建和基本使用

      个人主页: 征服bug-CSDN博客 kubernetes专栏: 云原生_征服bug的博客-CSDN博客 目录 Docker-Swarm编排 1.概述 2.docker swarm优点 3.节点类型 4.服务和任务 5.路由网格 6.实践Docker swarm         Docker Swarm 是 Docker 的集群管理工具。它将 Docker 主机池转变为单个虚拟 Docker 主机,使得容器

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

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

    2024年02月03日
    浏览(47)
  • Docker Swarm集群管理

    秋风阁(https://focus-wind.com/) Docker Swarm官方文档 Docker Swarm是Docker引擎原生内置的容器集群管理工具。 Swarm节点 运行Docker的主机可以主动初始化一个Swarm集群作为Leader节点或者加入一个已存在的Swarm集群,这样这个运行Docker的主机就成为一个Swarm集群的节点。 Swarm集群节点可以分为

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

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

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

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

    2024年02月04日
    浏览(35)
  • PostgreSQL 16数据库的yum、编译、docker三种方式安装——筑梦之路

    随手一记:生成密码的密文sha256加密

    2024年02月07日
    浏览(53)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包