负责网站建设推广,切图做网站过时了吗,小程序会员系统开发,朔州路桥建设有限责任公司网站一、什么是docker swarm
Swarm是Docker公司推出的用来管理docker集群的平台#xff0c;几乎全部用GO语言来完成的开发的#xff0c;代码开源在https://github.com/docker/swarm#xff0c; 它是将一群Docker宿主机变成一个单一的虚拟主机#xff0c;Swarm使用标准的Docker…一、什么是docker swarm
Swarm是Docker公司推出的用来管理docker集群的平台几乎全部用GO语言来完成的开发的代码开源在https://github.com/docker/swarm 它是将一群Docker宿主机变成一个单一的虚拟主机Swarm使用标准的Docker API接口作为其前端的访问入口换言之各种形式的Docker Client(compose,docker-py等)均可以直接与Swarm通信甚至Docker本身都可以很容易的与Swarm集成这大大方便了用户将原本基于单节点的系统移植到Swarm上同时Swarm内置了对Docker网络插件的支持用户也很容易的部署跨主机的容器集群服务。
Docker Swarm 和 Docker Compose 一样都是 Docker 官方容器编排项目。不同的是Docker Compose 是一个在单个服务器或主机上创建多个容器的工具而 Docker Swarm 则可以在多个服务器或主机上创建容器集群服务对于微服务的部署显然 Docker Swarm 会更加适合。
从 Docker 1.12.0 版本开始Docker Swarm 已经包含在 Docker 引擎中docker swarm并且已经内置了服务发现工具我们就不需要像之前一样再配置 Etcd 或者 Consul 来进行服务发现配置了。
docker info 可以看到此时集群是 inactive 状态 如果集群成功启动Swarm 的状态就变成了 active。
二、docker swarm 命令
docker swarm --help2.1 init
docker swarm init 2.2 join-token
以什么样的角色加入swarm集群worker 和 manager
docker swarm join-token worker可以使用产生的token将其他机器加入到集群。
docker swarm join --token SWMTKN-1-02ndmbk1ld2s6kgu8sx3f1oy2yrc1ocekald8fvi46lto2wb8v-chsch9zcu9te4ezhtdrjr7ytz 10.xxx.xxx.12:2377使用 docker node ls 查看当前集群的信息注意改命令只能在manager节点上执行。
docker node ls2.3 leave
离开集群普通的节点可以直接离开manager节点需要–force。
docker swarm leave # worker节点 直接离开
docker swarm leave --force # master 节点需要使用 --force参数强制离开2.4 unlock
在集群主节点异常掉线后如果想要再次加入就必须unlock。为什么要这么设计呢如果直接让它加进来可能会出现多个leader也就是脑裂的情况。unlock就是解决这种情况的。 注意解锁要基于现有的集群并且已经产生了新的leader。
场景模拟: 我们以manager的角色创建一个三个节点的集群。假设现在有三台机器A B C
在A上执行
docker swarm join-token manager在B C 上分别执行在A机器上产生的token
docker swarm join --token SWMTKN-1-5l15gcri88qwzvr48lln0ej78a9txvuh0r5vt8itq418wb8ntz-ehkltnukogmxlqk9qts7u20hl 10.xxx.xxx.12:2377三台机器中有一台是leader另外两台是候选者。也就当leader出现问题的时候可以顶上去。
以下操作都是在机器A中
接着修改集群的ca证书。什么时候修改证书呢我们的秘钥可能泄漏或者存在安全风险时或者证书过期一般有限期是一年需要替换新的证书。
2.5 ca 修改证书
docker swarm ca --rotate2.6 update 更新集群
docker swarm update --autolocktrue
docker swarm unlock-key # 获取集群秘钥会返回给我们一个秘钥如果没有记住秘钥可以使用 我们停掉机器A上的docker模拟master 节点宕机。
systemctl stop docker然后会在剩下的B C 机器中选一个leader出来需要一定的时间。选举成功后可以使用 docker node ls 查看。 此时机器A已经处于下线状态并且新的Leader已经成功选举。
接着我们重启机器A的docker 使用docker ps 等指令也能启动docker。此时使用 docker info 查看自己Swarm的状态变成了locked。 也就是说此时的机器A向重新加入集群要先解锁。去B或者C上执行 docker swarm unlock-key 拿到秘钥再执行以下命令进行解锁解锁完查看docker info此时Swarm的状态就是active了
docker swarm unlock # 回车输入获得的秘钥即可解锁最后去B 或者 C 查看集群信息可以看到此时 A 已经成功加入到集群了。
三、节点管理 3.1 demote
将主节点降级为worker节点。
docker node demote HOSTNAME3.2 promote
将worker节点升级为master节点。
docker node promote HOSTNAME3.3 inspect
查看节点的详细信息。
docker node inspect HOSTNAME3.4 ls
查看集群节点信息。
docker node ls3.5 ps
查看节点的应用信息。
docker node ps HOSTNAME3.6 rm
删除一个节点。跟 leave的区别docker swarm leave 虽然离开了集群但是记录还在。完整流程应该是先 rm 再 leave 。
docker node rm HOSTNAME3.7 update
更新节点。 推荐一个零声学院免费教程个人觉得老师讲得不错 分享给大家[LinuxNginxZeroMQMySQLRedis fastdfsMongoDBZK流媒体CDNP2PK8SDocker TCP/IP协程DPDK等技术内容点击立即学习: