docker 支持的集群部署有k8s和swarm,本次实现docker swarm搭建

0. 服务器

centos-7 虚拟机 6台,docker 环境

1.环境

开启4台虚拟机,重设其命令为如下,命令为

hostnamectl set-hostname swarm-manager-1hostnamectl set-hostname swarm-worker-1hostnamectl set-hostname swarm-worker-2hostnamectl set-hostname swarm-worker-3#重启
reboot#查看
hostname 

 2.操作

2.1将swarm-manager-1 声明为管理者

docker swarm init --advertise-addr <MANAGER-IP>

2.2 关闭swarm-manager-1的防火墙

#不关闭其worker节点无法加入, ----让工人加入,至少门得给人家打开吧,合情合理
systemctl stop firewalld

2.3 对worker-1,worker-2,worker-3执行命令,成为工人

注意:join后面的那一串是复制manager-1给出的命令

docker swarm join --token SWMTKN-1-2rsa1buh0jcx67zi776jfzd9zx5omkl6kjm0f1n4visz5ez8t4-bkh8wbubj2rs2b8tu7zsrtt3u 172.16.48.132:2377

在manager-1查看节点情况

docker node ls

如果,你只是想测试在多台服务器上跑docker 容器的集群,那么到这里集群的环境就结束了,这可比在同一台服务器上跑多个容器更具有真实性;

但是,如果是生产环境,怕是还不够;

我们现在的环境是,一个manager 管三个worker ,manager要是没了,谁分配任务,所以就有后续的,多个manager的做法,一个不行,怕宕机,那就再来几个。

3. 改进

增加两台虚拟机,一台叫swarm-manager-2 、一台为swarm-manager-3

修改其主机名,然后重启

注意:我们毕竟只是测试,如果电脑扛不住会卡顿,毕竟我们开了6台虚拟机了,可以把worker-1,worker-2 修改为manager,但是要先移除它的worker身份

在worker-1,worker-2 上执行命令为 docker swarm leave,然后再加入到manager ,加入方法同上

在manager-2,manager-3 执行如下操作

 

查看节点信息

注意,我是在swarm-manager-2上面查看的信息,标注"  *  "只是说当前在哪台机子上面,但是,leader还是manager-1,而manager-2,manager-3只是Reachble,可被发现的,也就是说,manager-1要是挂了,manager-2或者manager-3有一个会上位,但是manager-1 还活着,那就只能说是,机会等待者,等待上位。

3.1 测试宕机

如果把manager-1宕机了,会出现什么情况

对manager-1执行命令,poweroff

对manager-2执行 doker node  ls ,发现,此时的节点leader为manager-3

这期间迟疑了大约3秒钟,那么 在执行这个命令的时候,是轮训选择一个leader吗,还是随机呢,在这几秒钟,是否有尝试重连的操作,或者说尝试连接manager-1的操作?

具体的可能就要去看docker采用的raft共识算法怎么实现了,动画做的还挺有意思的,可以去看看

官网:Raft

我以我的认知与大家分享它的大致实现流程 :

当有一个节点挂掉,另外的节点称为追随者,各自为其他节点投票,根据投票数多的节点获胜称为新一届的leader,并且在一段时间内,该leader要向其他节点发送心跳,如果该leader恰好在这个节点挂掉,那不好意思,重新选举,以此类推!!

此时,我们让manager-3也宕掉,然后在manager-2上查看

结果非常amazing,too few 译为,太少,请确保半数以上的managers是活的

就是说,如果你的manager团队里面,有N个,那你要确保(N-1)/2以上的manager要来上班,很好理解嘛,比如,我们是3个manager,它要求我们我们只能宕掉一个,好,假如现在只剩下两个,如果它还要可以继续工作,会出现什么情况,剩两个追随者,相互给对方投票,一人一票,然后谁都当不了leader。这也是很多技术像网络内部,集群等,涉及到是使用投票决策的继任,十分推荐节点个数为奇数个。

以上就是本次的集群swarm搭建的全部内容,后续有rabbitmq等集群服务的搭建。我们只是搭了个框架,具体能跑什么容器还需要进一步设计,静待佳音

docker 集群swarm搭建相关推荐

  1. 阿里云CentOS环境之-实战docker集群swarm(十五)

    前言 docker1.12版本之前版本配置 准备工作 开始 拉取swarm 开放2375远程访问端口 创建集群的token 向集群里添加结点 查看集群里有哪些结点 创建管理者容器 使用集群 离开集群 ...

  2. Docker 集群Swarm创建和Swarm Web管理

    关于Docker Swarm更多的介绍请查看<Docker管理工具-Swarm部署记录> 一.环境配置 1.安装环境 # cat /etc/redhat-release CentOS Li ...

  3. 记录一次Docker集群swarm节点不断up、down

    早上发现portainer中看到集群不断上线.掉线 开始以为是网络波动 检查日志发现是 比较好容易理解,就是证书过期了 写好的脚本,下次传个完整的 重新生成证书即可 重新生成证书之后 systemct ...

  4. spark集群,kafka集群和zookeeper的docker集群快速搭建

    准备操作 安装docker(宿主机) yum install docker (宿主机时centos用yum管理包) systemctl daemon-reload(重加载deamon服务,是docke ...

  5. 基于Gitlab Jenkins Docker集群 微服务搭建自动化部署平台

    随着公司应用系统的不断增多,原有手工部署流程越来越不满足上线的需求.为了各个系统能快速迭代与测试,减少上线流程时间和人为出错,迫切需要一套自动化部署系统. 转载原文:https://luoji.liv ...

  6. Docker(六)----Swarm搭建Docker集群

    一.什么是Swarm Swarm这个项目名称特别贴切.在Wiki的解释中,Swarm behavior是指动物的群集行为.比如我们常见的蜂群,鱼群,秋天往南飞的雁群都可以称作Swarm behavio ...

  7. Swarm搭建Docker集群

    Swarm介绍 Swarm是Docker公司在2014年12月初发布的一套较为简单的工具,用来管理Docker集群,它将一群Docker宿主机变成一个单一的,虚拟的主机.Swarm使用标准的Docke ...

  8. Docker学习笔记 — Swarm搭建Docker集群

    http://www.cnblogs.com/rio2607/p/4445968.html#undefined Swarm介绍 Swarm是Docker公司在2014年12月初发布的一套较为简单的工具 ...

  9. 『高级篇』docker之DockerSwarm的集群环境搭建(28)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『高级篇』docker之DockerSwarm的集群环境搭建(28) 上次了解了docker Swarm,这次一起动手操作,搭 ...

  10. docker集群(1):docker swarm

    文章目录 准备工作 工作模式 搭建集群 Raft协议 docker service 常用命令 概念总结 服务副本与全局服务 拓展:网络模式: "PublishMode": &quo ...

最新文章

  1. VS2010运行类向导提示“未实现该方法或操作”
  2. hdu 4417 划分树
  3. 在Eclipse中使用OpenCV Java
  4. Zend Studio使用教程:序列号注册
  5. Android之使用MediaPlayer和SurfaceView组件播放一个简单的视频
  6. eBPF学习记录(四)使用libbpf开发eBPF程序
  7. (转)HapMap简介
  8. PWM级联方案。UART接口的单总线控制多个PWM输出。数字舵机,舵机级联方案
  9. #linux包之sysstat之iostat命令
  10. 解决win10cmd乱码
  11. Spring Boot实训开发个人博客4
  12. linux curl证书错误,关于curl:使用Wget忽略SSL证书错误
  13. 《如果我不曾见过太阳》
  14. 把代码做成笔记——Jupyter Notebook
  15. rk3288-android8.1-OV13850
  16. Spring cacheable
  17. STC12C5A60S2单片机-双串口通信
  18. github 加速(基于gitee)
  19. 中兴u31网关服务器位置,中兴LTE-U31网管简易操作指南
  20. DE0-Nano-SoC开发板诡异的电源电路方案设计分析

热门文章

  1. 【观察】嵌入式AI崛起,这里有一本通关“秘籍”
  2. 微信小程序云数据库调用模板
  3. Final Project 期末项目: PySnake
  4. 家园2简易地图编辑器
  5. Python-S9-Day123——爬虫两示例
  6. Ubuntu扩展磁盘内存
  7. 大数据之Kafka介绍
  8. 密码正确 mysql 无法登录_MySQL密码正确却无法本地登录怎么办
  9. Command line is too long. Shorten command line for Application or also for Spring Boot default...
  10. 微信公众号跳转微信小程序,自定义微信跳转标签