Docker Swarm高可用性
一、前言
在Docker Swarm集群中,Swarm manager负责管理整个集群,如果管理节点manager出现故障,虽然不会影响现有的服务和工作节点,但是我们不能继续管理我们的docker swarm集群。所以可以增加多个管理节点,这将使集群具备高可用性且节点故障容错能力。
管理节点作用:
- 维护集群状态
- 调度服务
- 提供swarm模式的HTTP API
二、集群高可用
2.1 扩展集群
Docker UCP(Docker的集群管理工具) 设计为可以随应用大小和使用率的增长而水平扩展。可以在 UCP 集群中添加或删除节点来扩展集群以满足需求。由于 UCP 利用 Docker 引擎提供的集群功能,因此您可以使用 docker swarm join 命令向集群中添加更多节点。在加入新节点时,UCP 服务将在此节点中自动开始运行。
# 在将节点加入Swarm集群中时,可以选择加入的是工作节点还是管理节点 # 加入工作节点
[root@manager ~]# docker swarm join-token worker
To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-3fzyz5knfbhw9iqlzxhb6dmzdtr0izno9nr7iqc5wid09uglh8-0mocmawzvm3xge6s37n5a48fw 172.16.60.95:2377 # 加入管理节点
[root@manager ~]# docker swarm join-token manager
To add a manager to this swarm, run the following command: docker swarm join --token SWMTKN-1-3fzyz5knfbhw9iqlzxhb6dmzdtr0izno9nr7iqc5wid09uglh8-ayq7p26q6cwpxomwflo7vx3fu 172.16.60.95:2377
2.2 更改节点角色
可以通过docker node promote/demote来节点改变成管理或工作节点
root@manager ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
kfi2r4dw6895z5yvhlbyzfck6 * manager Ready Drain Leader 18.03.0-ce
41hev84z7mliyhyhkthrcf4iv node-01 Ready Active 18.03.0-ce
j1bmj304wnbz23ng1w88wvkge node-02 Ready Active 18.03.0-ce
gsya6g8dsnjrr3cxm0cyonm4b node-03 Ready Active 18.03.0-ce # 目前只有一个管理节点manager, #现在讲node-01提升为管理节点 [root@manager ~]# docker node promote node-01 manager
Node node-01 promoted to a manager in the swarm.
Node kfi2r4dw6895z5yvhlbyzfck6 is already a manager. [root@manager ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
kfi2r4dw6895z5yvhlbyzfck6 * manager Ready Drain Leader 18.03.0-ce
41hev84z7mliyhyhkthrcf4iv node-01 Ready Active Reachable 18.03.0-ce
j1bmj304wnbz23ng1w88wvkge node-02 Ready Active 18.03.0-ce
gsya6g8dsnjrr3cxm0cyonm4b node-03 Ready Active 18.03.0-ce #可以看到node-01的 MANAGER STATUS 已经是Reachable
通过node-01管理Swarm集群
# 可以执行docker manager的命令 [root@node-01 ~]# docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
n85ykahh7vfs my-centos replicated 1/1 centos:latest
qwuil9kydeya my-web replicated 5/5 nginx:latest *:80->80/tcp
c7gmtmfacqt5 web-test replicated 5/5 nginx:latest
2.3 高可用性的要求
为了充分利用swarm的容错特性,docker建议管理节点的数量为奇数。Swarm的manager节点之间是基于raft一致性算法来处理关系,那么manager节点中就会有三种不同的角色:指挥者、跟随者和选举者。Docker官方建议Swarm中管理节点最好不要超过7个,通常情况下5个就够了。
Swarm Size | Majority | Fault Tolerance |
---|---|---|
1 | 1 | 0 |
2 | 2 | 0 |
3 | 2 | 1 |
4 | 3 | 1 |
5 | 3 | 2 |
6 | 4 | 2 |
7 | 4 | 3 |
8 | 5 | 3 |
9 | 5 | 4 |
所以这边swarm集群中有4台主机,需要有3个管理节点
[root@manager ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
kfi2r4dw6895z5yvhlbyzfck6 * manager Ready Drain Leader 18.03.0-ce
41hev84z7mliyhyhkthrcf4iv node-01 Ready Active Reachable 18.03.0-ce
j1bmj304wnbz23ng1w88wvkge node-02 Ready Active Reachable 18.03.0-ce
gsya6g8dsnjrr3cxm0cyonm4b node-03 Ready Active 18.03.0-ce
2.4 验证高可用性
停止manager管理节点的docker服务
# manager节点
[root@manager ~]# systemctl stop docker # 查看节点信息
[root@node-01 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
kfi2r4dw6895z5yvhlbyzfck6 manager Down Drain Unreachable 18.03.0-ce
41hev84z7mliyhyhkthrcf4iv * node-01 Ready Active Leader 18.03.0-ce
j1bmj304wnbz23ng1w88wvkge node-02 Ready Active Reachable 18.03.0-ce
gsya6g8dsnjrr3cxm0cyonm4b node-03 Ready Active 18.03.0-ce
可以看到现在node-01现在是leader了
查看节点状态:
# 管理节点的状态
docker node inspect manager --format "{{ .ManagerStatus.Reachability }}"
reachable
Docker Swarm高可用性的更多相关文章
- (转) Docker swarm - 使用体验 1+2
背景 凭借敏捷开发部署理念的推行,相信对于很多人来说docker这项容器技术已经并不陌生,Docker 1.12引擎发布了快两个月,新引擎中包含了许多特性.诸如: Swarm模式,容器集群的健康检查, ...
- Docker(六):Docker 三剑客之 Docker Swarm
实践中会发现,生产环境中使用单个 Docker 节点是远远不够的,搭建 Docker 集群势在必行.然而,面对 Kubernetes, Mesos 以及 Swarm 等众多容器集群系统,我们该如何选择 ...
- Docker三剑客之Docker Swarm
一.什么是Docker Swarm Swarm是Docker公司推出的用来管理docker集群的平台,几乎全部用GO语言来完成的开发的,代码开源在https://github.com/docker/s ...
- 在Docker Swarm上部署Apache Storm:第2部分
[编者按]本文来自 Baqend Tech Blog,描述了如何在 Docker Swarm,而不是在虚拟机上部署和调配Apache Storm集群.文章系国内 ITOM 管理平台 OneAPM 编译 ...
- docker swarm英文文档学习-10-使用Docker密钥管理敏感数据
Manage sensitive data with Docker secrets使用Docker secrets管理敏感数据 About secrets 对于Docker Swarm服务来说,sec ...
- docker swarm英文文档学习-6-添加节点到集群
Join nodes to a swarm添加节点到集群 当你第一次创建集群时,你将单个Docker引擎置于集群模式中.为了充分利用群体模式,可以在集群中添加节点: 添加工作节点可以增加容量.当你将服 ...
- docker swarm英文文档学习-4-swarm模式如何运行
1)How nodes work Docker引擎1.12引入了集群模式,使你能够创建一个由一个或多个Docker引擎组成的集群,称为集群.集群由一个或多个节点组成:在群模式下运行Docker引擎1. ...
- Docker Manager for Docker Swarm deploy
一.Swarm概述 Swarm是Docker公司在2014年12月初发布的一套较为简单的工具,用来管理Docker集群,它将一群Docker宿主机变成一个单一的,虚拟的主机.Swarm使用标准的Doc ...
- [docker swarm] 从单容器走向负载均衡部署
背景 之前写过<<docker-compose真香>> 和<docker-compose.docker stack前世今生>两篇博客, 回顾一下思路: ① dock ...
随机推荐
- 第十二周PSP
- Bing词典vs有道词典比对测试报告——体验篇之成长性及用户控制权
成长性: 会记住曾经查询过的单词或例句与有道词典实现基本一样,并无特别亮点. 用户有控制权: 必应词典和有道词典都能实现基本的查询前进和后退.以及无法查找结果,能顺利进行反馈. 我们在输入完单词按下回 ...
- 20172321 2017-2018-2《Java程序设计》第三周学习总结
20172321 2017-2018-2<Java程序设计>第三周学习总结 教材学习内容总结 第三章要点: 要点1 :String类.Random类.Math类和枚举型,这几个是很有用的并 ...
- Internet 校验和的数学性质
Internet 校验和(Checksum)仅计算头部的正确性,这一点很重要,这意味着 IP 协议不检查 IPv4 packet 有效载荷部分的数据正确性.为了保证有效载荷部分的正常传输,其他协议必须 ...
- BETA-2
前言 我们居然又冲刺了·二 团队代码管理github 站立会议 队名:PMS 530雨勤(组长) 过去两天完成了哪些任务 了解OpenCV下的视频参数及其调用方法 初步编码 接下来的计划 文档工作 速 ...
- 高可用集群(crmsh详解)http://www.it165.net/admin/html/201404/2869.html
crmsh是pacemaker的命令行接口工具,执行help命令,可以查看shell接口所有的一级命令和二级命令,使用cd 可以切换到二级子命令的目录中去,可以执行二级子命令 在集群中的资源有四类:p ...
- ini_set的权限大于error_reporting
在用php做网站开发的时候 , 为防止用户看到错误信息,而出现的不友好界面.故一般性会在php.ini里设置:display_errors = Off;不过在开发的时候,我们有时候需要打开错误信息.这 ...
- epel [Errno 14] problem making ssl connection
问题描述: 执行yum命令时,报错[Errno 14] problem making ssl connection 问题分析: ssl证书问题 问题解决: sed -i 's/^#baseurl/ba ...
- 增加kms计数
@echo offset skms=10.15.68.62for %%i in (. . . . . . . . . . . . . . . . . . . . . . . . . .) do cal ...
- [转帖]一文读懂 HTTP/2
一文读懂 HTTP/2 http://support.upyun.com/hc/kb/article/1048799/ 又小拍 • 发表于:2017年05月18日 15:34:45 • 更新于:201 ...