DockerSwarm集群部署

更新时间:2023-07-29 14:38:29 阅读: 评论:0

DockerSwarm集群部署
⼀、系统环境
  1)服务器环境李玟禁播mv
节点名称IP操作系统内核版本
manager172.16.60.95CentOs7  4.16.1-1.el7.elrepo.x86_64
node-01172.16.60.96CentOs7  4.16.1-1.el7.elrepo.x86_64
node-02172.16.60.97CentOs7  4.16.1-1.el7.elrepo.x86_64
node-03172.16.60.98CentOs7  4.16.1-1.el7.elrepo.x86_64
  2)前提条件
Docker版本1.12+
集群节点之间保证TCP 2377、TCP/UDP 7946和UDP 4789端⼝通信   
    TCP端⼝2377集群管理端⼝
    TCP与UDP端⼝7946节点之间通讯端⼝
    TCP与UDP端⼝4789 overlay⽹络通讯端⼝
⼆、集群部署
  1)master创建Swarm(要保存初始化后token,因为在节点加⼊时要使⽤token作为通讯的密钥) 
[root@master ~]# docker swarm init --adverti-addr 172.16.60.95
Swarm initialized: current node (kfi2r4dw6895z5yvhlbyzfck6) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-3fzyz5knfbhw9iqlzxhb6dmzdtr0izno9nr7iqc5wid09uglh8-0mocmawzvm3xge6s37n5a48fw 172.16.60.95:2377 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions. 
  注:上⾯命令执⾏后,该机器⾃动加⼊到swarm集群。这个会创建⼀个集群token,获取全球唯⼀的 t
oken,作为集群唯⼀标识。后续将其他节点加⼊集群都会⽤到这个token值。其中,--adverti-addr参数表⽰其它swarm中的worker节点使⽤此ip地址与manager联系。命令的输出包含了其它节点如何加⼊集群的命令。
  使⽤docker info 或者 docker node ls 查看集群中的相关信息 
docker info
.......广告策划方案范文
Swarm: active
NodeID: kfi2r4dw6895z5yvhlbyzfck6
Is Manager: true
ClusterID: y2zgs373cg0y6559t675yexcj
Managers: 1
Nodes: 1
Orchestration:
Task History Retention Limit: 5
.......
  2)添加节点到swarm集群中
  所有节点执⾏ 
docker swarm join --token SWMTKN-1-3fzyz5knfbhw9iqlzxhb6dmzdtr0izno9nr7iqc5wid09uglh8-0mocmawzvm3xge6s37n5a48fw 172.16.60.95:2377  在master上查看集群节点的状态
木瓜木瓜
  到此Swarm集群就创建好了
  3)docker  node 命令 
[root@master ~]# docker node --help
Usage:    docker node COMMAND
Manage Swarm nodes
Options:
Commands:
demote      Demote one or more nodes from manager in the swarm
inspect    Display detailed information on one or more nodes早安励志正能量
ls          List nodes in the swarm
promote    Promote one or more nodes to manager in the swarm
ps          List tasks running on one or more nodes, defaults to current node  rm          Remove one or more nodes from the swarm
update      Update a node
# demote
鱼竿的绑法将管理节点降级为普通节点
# inspect
查看节点的详细信息
# ls
列出节点
# promote
将普通节点升级为管理节点
# ps
查看运⾏的任务
# rm
从swarm集群中删除节点
# update
改变集群节点状态
docker node 命令
[root@master ~]# docker node update --help
Usage:    docker node update [OPTIONS] NODE
Update a node
Options:
--availability string  Availability of the node ("active"|"pau"|"drain")
--label-add list        Add or update a node label (key=value)
-
-label-rm list        Remove a node label if exists
--role string          Role of the node ("worker"|"manager")
# 主要使⽤availability string
# active
节点状态正常
# pau
节点挂起、暂停
# drain
排除节点,⽐如将master节点排除,不分配任务,只作为管理节点
node update命令
三、在Swarm中部署服务
  1)创建服务 
[root@master ~]# docker rvice --help
Usage:    docker rvice COMMAND
Manage rvices
Options:
Commands:
create      Create a new rvice
inspect    Display detailed information on one or more rvices
logs        Fetch the logs of a rvice or task
ls          List rvices
ps          List the tasks of one or more rvices
rm          Remove one or more rvices
rollback    Revert changes to a rvice's configuration
scale      Scale one or multiple replicated rvice
包包奢侈品docker rvice 
[root@master ~]# docker rvice create --replicas 1 --name hello busybox
#  --replicas : 副本集个数
# --name:服务名称
  2)查看服务信息
[root@master ~]# docker rvice ls
ID                  NAME                MODE                REPLICAS            IMAGE              PORTS
kosznwn4ombx        hello              replicated          0/1                busybox:latest
  从REPLICAS中能看出这个 hello服务并没有启动起来,0/1 表⽰ 1计划启动的副本数,0实际启动的数量。所以启动失败 
  3)添加参数
  在hello服务中busybox只是⼀个基础镜像,并没有⼀个持续运⾏的任务,所以manager会不断重启hello这个服务,所以有好多shutdown的记录。但是可以为其添加⼀个任务。 
[root@master ~]# docker rvice update --args "ping " hello
hello
overall progress: 1 out of 1 tasks
1/1: running  [==================================================>]
verify: Service converged
# update:更新状态
# --args:增加参数
  再次查看状态:
  过滤不正常的状态: 
[root@master ~]# docker rvice ps -f "desired-state=running" hello
春潮澎湃ID                  NAME                IMAGE              NODE                DESIRED STATE      CURRENT STA
TE          ERROR              PORTS yxyivio4mzlg        hello.1            busybox:latest      master              Running            Running 4 minutes ago
# -f "desired-state=running" : 状态为runngin的服务
  4)为服务扩容(缩融)scale
  刚才设置的replicas=1,可以增加副本数量
[root@master ~]# docker rvice scale hello=4
hello scaled to 4
overall progress: 4 out of 4 tasks
1/4: running
2/4: running
3/4: running
4/4: running
verify: Service converged
# scale : 指定服务的数量会计学毕业论文
  5)⼯作节点排除manager,manager只作为管理节点
  上图中manager也运⾏了⼀个服务,将manager排除在外
[root@manager ~]# docker node update --availability drain manager
# node update :更改节点状态
# --availability : 三种状态
active: 正常
pau:挂起
drain:排除
  排除manager后,其上⾯运⾏的服务会转移到其他节点 
四、滚动更新服务
  例如升级服务的镜像版本 
[root@manager ~]# docker rvice create \
> --replicas 3 \
> --name redis \
> --update-delay 10s \
> redis:3.0.6
# 启动3个副本集的redis
# update-delay 10s :每个容器依次更新,间隔10s   滚动更新:
docker rvice update --image redis:3.0.7 redis
# --image : 指定版本
  更新完成后新版本和历史记录都能查看
  查看配置信息:
五、服务更新和回滚策略
  1)设置策略 
[root@manager ~]# docker rvice create \
--name my-web \
--replicas 10 \
--update-delay 10s \
--update-parallelism 2 \
--update-failure-action continue \
--rollback-parallelism 2 \
--rollback-monitor 20s \
--rollback-max-failure-ratio 0.2 \
nginx:1.12.1

本文发布于:2023-07-29 14:38:29,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1100935.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:节点   集群   服务
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图