Docker+Swarm实例配置 -三主一从

15 篇文章 1 订阅
10 篇文章 0 订阅

常用命令:

# 初始化一个swarm
docker swarm init

# 指定初始化ip地址节点
docker swarm init --advertise-addr 管理端IP地址

# 去除本地之外的所有管理器身份!!!
docker swarm init --force-new-cluster

# 离开swarm
docker swarm leave

# 对swarm集群更新配置
docker swarm update

一、实现效果

创建三主单从,因为遵循raft协议,所以必须搭建三台及三台以上的主节点。因为只有当主节点大于等于2的时候,docker集群才会正常工作。搭建三台是为了模拟有一台服务器宕机的情况。

二、准备工作

四台服务器10.0.0.10、10.0.0.100、10.0.0.101、10.0.0.102。

三个主节点、一个从节点,关闭所有服务器防火墙。

三、实例配置

1、以本机为主节点创建一个新网络docker swarm init --force-new-cluster

也可以用docker swarm init --advertise-addr 10.0.0.10

加入一个工作节点 

加入一个管理节点需要先获取命令 docker swarm join-token manager

 获取命令后在10.0.0.100、10.0.0.101输入管理节点命令,在10.0.0102输入工作节点命令。

检查节点docker node ls(这条命令只能在管理节点上使用),成功启动三个管理节点和一个工作节点。

2、启动my-nginx服务,并且指定8888端口映射80端口:docker service create -p 8888:80 --name my-nginx nginx

 检查服务是否启动:docker service ps my-nginx

 或者:docker service ls

 此时用docker ps检查my-nginx中的一个nginx容器在四台机器的哪一台机器启动,最终发现是在10.0.0.100(随机的,你的可能不一样)

10.0.0.10

10.0.0.100(运行在此机器) 

10.0.0.101

10.0.0.102

3、 接着将my-nginx服务扩容,将原本的一个nginx容器升级到3个nginx容器

docker service update --replicas 3 my-nginx

或者:docker service scale my-nginx=3

再次用docker ps查看容器运行在哪台机器

10.0.0.10

 10.0.0.100

 10.0.0.101

 10.0.0.102(发现只有这台机器没有nginx容器运行)

 当然不仅仅可以是3个nginx容器,开启10个也非常轻松,而且系统会自动将10个容器分配到4台机器上,并且当有机器宕机时,系统会将该机器上的服务(也可以叫容器)马上重新分配给仍在工作的机器。根据raft协议,只要还有系统中还有两台管理节点,系统就不会停止运行。

四、遇到的问题

1、当一个管理节点挂掉后,其他两个管理节点并不能正常工作

当一个管理节点挂掉后,其他两个管理节点并不能正常工作,出现报错:Error response from daemon: rpc error: code = Unknown desc = The swarm does not have a leader. It's possible that too few managers are online. Make sure more than half of the managers are online.

管理总共有3个管理,1个工作节点,此时仍然有两个节点在工作,不应该这个问题。

解决方法:重建swarm网络(具体是什么原因也不清楚,可能是旧网络需要删除,各个节点离开集群)或者是我没有按照“必须先是node节点离开集群,然后manager节点才能离开集群”的规定而报错。

docker swarm init --force-new-cluster

重启启动之后就好了,实例正常运行。本人在第二台管理节点输入这条命令后,重新在四台虚拟机上重新配置了一遍swarm,随后正常运行。

离开节点

主节点docker swarm leave --force

工作节点docker swarm leave

2、docker+swarm搭建完成后,网站无法访问

理论上无论哪台机子都是可以访问的,而且不管是四台机器的哪一台都可以,即便是该机器没有运行nginx容器,只要该机器在集群里,就可以访问。(!!!该问题还没有解决,ping得通,有网,防火墙已经关闭,10.0.0.10只能访问到本机的10.0.0.10::8888端口,其他访问不了,宿主机也访问不了四台机器)

五、实例检测

网络搭建完成,访问网站失败。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值