当前位置: 首页 > wzjs >正文

唐山做网站的电话体验营销策略

唐山做网站的电话,体验营销策略,做网站如何购买服务器吗,wordpress免代码分享到Docker Swarm 集群 本文档介绍了 Docker Swarm 集群的基本概念、工作原理以及相关命令使用示例,包括如何在服务调度中使用自定义标签。本文档适用于需要管理和扩展 Docker 容器化应用程序的生产环境场景。 1. 什么是 Docker Swarm Docker Swarm 是用于管理 Docker…

Docker Swarm 集群

本文档介绍了 Docker Swarm 集群的基本概念、工作原理以及相关命令使用示例,包括如何在服务调度中使用自定义标签。本文档适用于需要管理和扩展 Docker 容器化应用程序的生产环境场景。


1. 什么是 Docker Swarm

Docker Swarm 是用于管理 Docker 集群的原生工具,从 Docker 1.12.0 版本开始,Swarm 已经内置于 Docker 引擎中。Swarm 可以将多台 Docker 主机组织成一个统一的虚拟主机,使用户能够轻松部署、管理和扩展容器化应用程序。

官方文档:Docker Swarm Overview


2. 与 Docker Compose 的区别

  • Docker Compose:适用于单节点环境,通过定义 docker-compose.yml 文件快速搭建和调试容器化应用。
  • Docker Swarm:专为生产环境设计,支持多节点集群管理和容器编排,还能实现零宕机滚动更新、弹性伸缩等高级功能。

3. Docker Swarm 的工作原理

3.1 基本概念

  • 节点 (Node)
    集群中的每个 Docker 主机都被称为一个节点。节点分为两种角色:

    • Manager 节点:负责集群的管理与控制,集群中可以有多个 Manager,但只有一个 Manager 被选举为 Leader。
    • Worker 节点:用于运行任务,由 Manager 分配任务后执行相应的容器操作。
  • 多重身份
    一个节点可以同时扮演 Manager 和 Worker 的角色。

  • Raft 协议
    使用 Raft 协议选举 Manager Leader 并同步状态信息,要求至少两个 Manager 参与选举。

3.2 工作流程

  1. 集群初始化
    使用 docker swarm init 命令初始化集群,执行节点自动成为 Manager(通常也是 Leader)。

  2. 节点加入
    其他 Docker 主机通过 Manager 节点分配的 token 加入集群,并被授予 Manager 或 Worker 角色。

  3. 服务定义
    通过定义服务来描述容器应用程序,并由 Manager 将任务分配到合适的节点。任务是 Swarm 中最小的调度单位,而一个服务是多个任务的集合。

  4. 调度策略
    Manager 节点按照调度策略(spread、binpack、random)选择合适的节点部署服务实例。

  5. 容器编排
    Manager 负责执行创建、启动、停止、重启等操作,保证应用程序持续高可用运行。


4. Swarm 集群管理

4.1 集群节点准备

角色IPHostname
Manager1172.16.10.110manager1
Manager2172.16.10.111manager2
Worker1172.16.10.120worker1
Worker2172.16.10.121worker2

4.2 初始化集群

在 Manager1 上执行以下命令:

docker swarm init --advertise-addr 172.16.10.110

执行成功后,输出中会显示用于其他节点加入集群的 token。注意:

  • 参数 --advertise-addr 用于指定通信的 IP 地址(默认端口为 2377),在多网卡环境下建议指定。

查看 token:

docker swarm join-token manager   # 查看管理节点 token
docker swarm join-token worker    # 查看工作节点 token

4.3 节点加入

  • 加入 Manager2
    在 Manager2 上执行(请替换 <manager_token> 与对应的广播地址):

    docker swarm join --advertise-addr <Manager2_IP> --token <manager_token> 172.16.10.110:2377
    
  • 加入 Worker1 和 Worker2
    分别在 Worker 节点上执行:

    docker swarm join --advertise-addr <Worker_IP> --token <worker_token> 172.16.10.110:2377
    

在 Manager1 上使用 docker node ls 查看当前集群状态。

4.4 集群解散

要将节点退出并从集群移除:

  1. 在目标节点上执行:

    docker swarm leave [--force]   # Manager 节点退出需加 --force
    
  2. 在 Manager 节点上删除该节点:

    docker node rm <节点名称>
    

5. 节点管理

以下命令需在 Manager 节点上执行(Worker 节点无操作权限):

  • 查看集群所有节点

    docker node ls
    
  • 查看指定节点详情

    docker node inspect <节点名称> --pretty
    
  • 节点升级与降级

    bash复制编辑docker node promote <节点名称>   # 将 Worker 升级为 Manager
    docker node demote <节点名称>     # 将 Manager 降级为 Worker
    
  • 节点下线(暂停任务调度)

    docker node update --availability drain <节点名称>
    
  • 节点上线

    docker node update --availability active <节点名称>
    

6. 服务管理

6.1 服务定义

创建服务时常用的命令格式如下:

bash复制编辑docker service create --name <服务名> \[-d] [-p] [-e] [--network] [--replicas] [--mount] \image:tag
示例
  • 测试 1:指定副本数、端口映射

    docker service create -d --name web-nginx --replicas 2 -p 80:80 nginx
    
  • 测试 2:传递环境变量

    bash复制编辑docker service create -d --name mysql --replicas=1 \-p 3306:3306 \-e MYSQL_ROOT_PASSWORD=123456 \-e MYSQL_DATABASES=test \mysql:5.7
    

6.2 服务查看

  • 查看所有服务:

    docker service ls
    
  • 查看指定服务及其任务分布:

    docker service ps <服务名>
    

示例输出:

docker service ls
ID             NAME        MODE         REPLICAS   IMAGE          PORTS
0jlt1yx8dcox   mysql       replicated   1/1        mysql:5.7      *:3306->3306/tcp
fxha9cy659vu   web-nginx   replicated   3/3        nginx:1.24.0   *:80->80/tcpdocker service ps mysql
ID             NAME      IMAGE       NODE      DESIRED STATE   CURRENT STATE           ERROR     PORTS
wit44m5i6plf   mysql.1   mysql:5.7   master    Running         Running 3 minutes ago

6.3 服务移除

docker service rm <服务名称>

6.4 服务模式及调度

  • 服务模式

    • Replicated 模式(默认):在指定节点上运行多个副本。
    • Global 模式:在每个节点上都运行一个副本(适合日志收集、监控等场景)。

    示例:

    docker service create --name cadvisor --mode global \--mount type=bind,src=/,dst=/rootfs,readonly \--mount type=bind,src=/var/run,dst=/var/run \--mount type=bind,src=/sys,dst=/sys,readonly \--mount type=bind,src=/var/lib/docker/,dst=/var/lib/docker,readonly \--publish 8888:8080 \gcr.io/cadvisor/cadvisor:latest
    
  • 调度约束

    通过指定调度约束,可以控制服务任务只在符合要求的节点上运行。

    • 根据节点主机名调度:

      docker service create --name my-service \--constraint 'node.hostname == node01' \nginx:latest
      
    • 根据自定义标签调度:

      1. 给节点添加自定义 Label

        在 Manager 节点上执行(假设给 node01 添加 hm=node01):

        docker node update --label-add hm=node01 node01
        

        查看节点标签:

        docker node inspect node01 --pretty
        
      2. 使用标签调度创建服务

        docker service create --name my-service \--constraint 'node.labels.hm == node01' \nginx:latest
        

      docker-compose.yml 文件中也可通过 deploy.placement.constraints 设置:

      version: '3.8'
      services:web:image: nginx:latestdeploy:replicas: 1placement:constraints:- "node.labels.hm == node01"ports:- "80:80"
      

      部署命令:

      docker stack deploy -c docker-compose.yml mystack
      
  • 移除节点标签

    docker node update --label-rm hm node01
    

6.5 服务日志

查看服务日志:

docker service logs <服务名>

7. Swarm 集群的弹性伸缩

弹性伸缩指动态增加或减少服务任务数。

  • 创建服务时指定副本数

    docker service create -d --name mysql --replicas=2 \-p 3306:3306 \-e MYSQL_ROOT_PASSWORD=123456 \mysql:5.7
    
  • 在线伸缩命令

    • 使用 update 命令:

      docker service update --replicas <新副本数> <服务名>
      
    • 或者使用 scale 命令:

      docker service scale <服务名>=<副本数>
      

8. Swarm 集群服务的滚动更新

滚动更新允许在不中断服务的情况下更新服务。常用于灰度发布与镜像升级。

8.1 更新命令示例

例如升级 MySQL 服务镜像版本,从 v5.7 到 v8.0,同时调整副本数量:

docker service update --replicas 5 \--image mysql:8.0 \--update-delay 60s \--update-parallelism 5 \mysql

参数说明:

  • --update-delay:指定滚动更新每个任务之间的延时(支持秒、分钟、小时)。
  • --update-parallelism:指定同时更新的任务数。

8.2 镜像版本回退

有两种方式:

  • 方式一:使用 rollback 命令

    docker service rollback mysql
    

    此命令会回滚到上次成功部署的状态。

  • 方式二:手动指定旧版本进行更新

    docker service update --image mysql:5.7 mysql
    
  • 查看更新状态

    docker service inspect --pretty mysql
    

    输出中 UpdateConfig 部分会显示当前服务的更新状态,例如 rollback_completed 表示已回滚。


9. 使用 Docker Compose 部署 Swarm 集群

9.1 docker service create 的局限

该命令一次只能创建一个服务,多个服务时较为繁琐,因此推荐使用 Compose 文件配合 docker stack deploy 部署整个应用堆栈。

9.2 Docker Compose 文件中的 Swarm 配置

在 Compose 文件中,可在 deploy 下配置与 Swarm 相关的属性。请注意,使用 docker-compose up 时会忽略 deploy 部分,因此必须通过 docker stack deploy 部署。

示例:

yaml复制编辑version: '3.8'
services:web:image: nginx:latestdeploy:replicas: 2                   # 服务副本数mode: replicated              # 服务模式:replicated(默认)或 globalplacement:constraints:- "node.hostname == node01"      # 根据主机名调度- "node.labels.hm == node01"       # 根据自定义标签调度restart_policy:condition: on-failure     # 仅在容器异常退出时重启delay: 10s                # 尝试重启的间隔时间max_attempts: 3           # 最大重启尝试次数ports:- "80:80"

9.3 部署 Stack

使用以下命令部署堆栈:

docker stack deploy -c docker-compose.yml mystack
  • 查看堆栈列表:

    docker stack ls
    
  • 查看堆栈服务:

    docker stack services mystack
    
  • 查看堆栈任务:

    docker stack ps mystack
    
  • 删除堆栈:

    docker stack rm mystack
    
http://www.dtcms.com/wzjs/47948.html

相关文章:

  • 个人求职简历模板免费下载河北seo网络优化培训
  • 贵州企业网站建设案例信息流推广
  • 电影网站logo设计北京seo公司排名
  • 网站建设公司好学做网站需要学什么
  • 山西住房和建设厅网站竞价出价怎么出
  • 网站建设 猴王网络今日发生的重大新闻
  • 思淘网站建设seo排名优化
  • wordpress 进销存seo查询工具有哪些
  • 郑州企业网站优化哪家便宜一元手游平台app
  • 在家做的客服正规平台企业网站的优化建议
  • 网站平台建设公司百度权重查询工具
  • 微信开放平台可以做网站么域名注册流程
  • 食品 骏域网站建设专家搜索引擎营销怎么做
  • 网站建设程序结构站长之家工具高清
  • 无锡网站建设.com信息流广告怎么投放
  • 适合大学生做的网站网站alexa排名
  • 网站数据库建表百度投放广告平台
  • 企业内部系统网站制作百度推广优化师
  • 企业管理系统设计上海排名优化seo
  • 网站登录页面空白免费seo排名网站
  • boostrop怎么做网站怎样把个人介绍放到百度
  • 网站流量下降的原因九江seo优化
  • 珠海seo海网站建设seo百度快照优化公司
  • 郑州外贸营销网站建设发稿媒体平台
  • 在虚拟主机上安装wordpressseo好seo
  • 网站备案 怎么建站seo优化方法
  • 做网站需要买ip地址吗什么是营销
  • 有赞微商城小程序seo关键词选取工具
  • 网站建站建设免费seo网站的工具
  • 推进门户网站建设面点培训学校哪里有