docker 集群swarm搭建
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搭建相关推荐
- 阿里云CentOS环境之-实战docker集群swarm(十五)
前言 docker1.12版本之前版本配置 准备工作 开始 拉取swarm 开放2375远程访问端口 创建集群的token 向集群里添加结点 查看集群里有哪些结点 创建管理者容器 使用集群 离开集群 ...
- Docker 集群Swarm创建和Swarm Web管理
关于Docker Swarm更多的介绍请查看<Docker管理工具-Swarm部署记录> 一.环境配置 1.安装环境 # cat /etc/redhat-release CentOS Li ...
- 记录一次Docker集群swarm节点不断up、down
早上发现portainer中看到集群不断上线.掉线 开始以为是网络波动 检查日志发现是 比较好容易理解,就是证书过期了 写好的脚本,下次传个完整的 重新生成证书即可 重新生成证书之后 systemct ...
- spark集群,kafka集群和zookeeper的docker集群快速搭建
准备操作 安装docker(宿主机) yum install docker (宿主机时centos用yum管理包) systemctl daemon-reload(重加载deamon服务,是docke ...
- 基于Gitlab Jenkins Docker集群 微服务搭建自动化部署平台
随着公司应用系统的不断增多,原有手工部署流程越来越不满足上线的需求.为了各个系统能快速迭代与测试,减少上线流程时间和人为出错,迫切需要一套自动化部署系统. 转载原文:https://luoji.liv ...
- Docker(六)----Swarm搭建Docker集群
一.什么是Swarm Swarm这个项目名称特别贴切.在Wiki的解释中,Swarm behavior是指动物的群集行为.比如我们常见的蜂群,鱼群,秋天往南飞的雁群都可以称作Swarm behavio ...
- Swarm搭建Docker集群
Swarm介绍 Swarm是Docker公司在2014年12月初发布的一套较为简单的工具,用来管理Docker集群,它将一群Docker宿主机变成一个单一的,虚拟的主机.Swarm使用标准的Docke ...
- Docker学习笔记 — Swarm搭建Docker集群
http://www.cnblogs.com/rio2607/p/4445968.html#undefined Swarm介绍 Swarm是Docker公司在2014年12月初发布的一套较为简单的工具 ...
- 『高级篇』docker之DockerSwarm的集群环境搭建(28)
原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『高级篇』docker之DockerSwarm的集群环境搭建(28) 上次了解了docker Swarm,这次一起动手操作,搭 ...
- docker集群(1):docker swarm
文章目录 准备工作 工作模式 搭建集群 Raft协议 docker service 常用命令 概念总结 服务副本与全局服务 拓展:网络模式: "PublishMode": &quo ...
最新文章
- VS2010运行类向导提示“未实现该方法或操作”
- hdu 4417 划分树
- 在Eclipse中使用OpenCV Java
- Zend Studio使用教程:序列号注册
- Android之使用MediaPlayer和SurfaceView组件播放一个简单的视频
- eBPF学习记录(四)使用libbpf开发eBPF程序
- (转)HapMap简介
- PWM级联方案。UART接口的单总线控制多个PWM输出。数字舵机,舵机级联方案
- #linux包之sysstat之iostat命令
- 解决win10cmd乱码
- Spring Boot实训开发个人博客4
- linux curl证书错误,关于curl:使用Wget忽略SSL证书错误
- 《如果我不曾见过太阳》
- 把代码做成笔记——Jupyter Notebook
- rk3288-android8.1-OV13850
- Spring cacheable
- STC12C5A60S2单片机-双串口通信
- github 加速(基于gitee)
- 中兴u31网关服务器位置,中兴LTE-U31网管简易操作指南
- DE0-Nano-SoC开发板诡异的电源电路方案设计分析
热门文章
- 【观察】嵌入式AI崛起,这里有一本通关“秘籍”
- 微信小程序云数据库调用模板
- Final Project 期末项目: PySnake
- 家园2简易地图编辑器
- Python-S9-Day123——爬虫两示例
- Ubuntu扩展磁盘内存
- 大数据之Kafka介绍
- 密码正确 mysql 无法登录_MySQL密码正确却无法本地登录怎么办
- Command line is too long. Shorten command line for Application or also for Spring Boot default...
- 微信公众号跳转微信小程序,自定义微信跳转标签