Docker Swarm 集群搭建

这篇具有很好参考价值的文章主要介绍了Docker Swarm 集群搭建。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Docker Swarm Mode
Docker Swarm 集群搭建
Docker Swarm 节点维护
Docker Service 创建

1.准备主机

 搭建一个 docker swarm 集群,包含 5 个 swarm 节点。这 5 个 swarm 节点的 IP 与暂
时的角色分配如下(注意,搭建完成后会切换角色):

host ip role
docker 192.168.137.100 manager
docker2 192.168.137.101 manager
docker3 192.168.137.102 manager
docker4 192.168.137.103 worker
docker5 192.168.137.104 worker

Hyper-v 设置静态IP 搭建集群

2.搭建swarm集群

2.1 查看 swarm 激活状态

在任意 docker 主机上通过 docker info 命令可以查看到当前 docker 引擎 Server 端对于swarm 的激活状态。由于尚未初始化 swarm 集群,所以这些 docker 主机间没有任何关系,且 swarm 均未被激活。

docker info

Docker Swarm 集群搭建,云原生,docker,java,云原生

2.2 swarm 初始化

在主机名为“docker”的主机上运行 docker swarm init 命令,创建并初始化一个 swarm。

# 如果多网卡,需要指定ip。--advertise-addr参数表示其它swarm中的worker节点使用此ip地址与manager联系。
docker swarm init --advertise-addr 192.168.137.100:2377 --listen-addr 192.168.137.100:2377

Docker Swarm 集群搭建,云原生,docker,java,云原生

2.3 添加 worker 节点

复制 docker swarm init 命令的响应结果中添加 wroker 节点的命令在 docker4 与 docker5节点上运行,将这两个节点添加为 worker 节点。

# ip表示manager主机ip:port
# --advertise-addr参数表示worker节点使用此ip地址与manager联系
docker swarm join --token SWMTKN-1-14pekii6qepms5f3tfg8wt7rixqyybjb12ga8vahme52fm490i-43kozm8fpi1s9ist2kk4ysv36 192.168.137.100:2377 --advertise-addr 192.168.137.103:2377

docker swarm join --token SWMTKN-1-14pekii6qepms5f3tfg8wt7rixqyybjb12ga8vahme52fm490i-43kozm8fpi1s9ist2kk4ysv36 192.168.137.100:2377 --advertise-addr 192.168.137.104:2377

2.4 添加 manager 节点

(1)获取添加命令

若要为 swarm 集群添加 manager 节点,需要首先在 namager 节点获取添加命令

docker swarm join-token manager

(2)添加节点

复制 docker swarm join-token 命令生成的 manager 添加命令,然后在 docker2 与 docker3节点上运行,将这两个节点添加为 manager 节点。

docker swarm join --token SWMTKN-1-14pekii6qepms5f3tfg8wt7rixqyybjb12ga8vahme52fm490i-6cqtvvvohw38xgcdn06bgecyp 192.168.137.100:2377 --advertise-addr 192.168.137.101:2377

docker swarm join --token SWMTKN-1-14pekii6qepms5f3tfg8wt7rixqyybjb12ga8vahme52fm490i-6cqtvvvohw38xgcdn06bgecyp 192.168.137.100:2377 --advertise-addr 192.168.137.102:2377

2.5 查看 swarm 节点

在 manager 任意一个节点 docker、docker2、docker3 上通过 docker node ls 命令可以查看到当前swarm 集群所包含的节点状态数据。

Docker Swarm 集群搭建,云原生,docker,java,云原生

3. swarm 集群维护

当一个节点想从 swarm 集群中退出时,可以通过 docker swarm leave 命令。不过 worker节点与 manager 节点的退群方式是不同的。

3.1 worker 退群

对于 worker 节点退群,直接运行 docker swarm leave 命令即可。

Docker Swarm 集群搭建,云原生,docker,java,云原生

此时在 manager 节点中查看节点情况,可以看到 docker4 已经 Down 了。

3.2 worker 重新加入

在 manager 节点上运行 docker swarm join-token worker 命令,查看加入 worker 节点的命令。

复制生成的命令,在 docker4 节点上运行,将此节点添加到 swarm 集群。

docker swarm join --token SWMTKN-1-14pekii6qepms5f3tfg8wt7rixqyybjb12ga8vahme52fm490i-43kozm8fpi1s9ist2kk4ysv36 192.168.137.100:2377 --advertise-addr 192.168.137.103:2377

3.3 查看节点情况

此时在 manager 节点中查看节点情况,可以看到原来的 docker4 依然是 Down,但又新增了一个新的 docker4 节点,其状态为 Ready。

Docker Swarm 集群搭建,云原生,docker,java,云原生

此时在 manager 节点通过 docker info 命令可以查看到节点数量变为了 6 个。

Docker Swarm 集群搭建,云原生,docker,java,云原生

3.4 删除 Down 状态节点

对于Down状态的节点是完全可以将其删除的。通过在manager节点运行docker node rm命令完成。

docker node rm <nodeId>

Docker Swarm 集群搭建,云原生,docker,java,云原生

3.5 manager 退群

 对于 manager 节点,原则上是不推荐直接退群的,这样会导致 swarm 集群的一致性受到损坏。如果 manager 执意要退群,可在 docker swarm leave 命令后添加-f`` 或–force`` 选项进行强制退群。

4. swarm 自动锁定

4.1 swarm 集群自动锁定原理

 在 manager 集群中,swarm 通过 Raft 日志方式维护了 manager 集群中数据的一致性。即在 manager 集群中每个节点通过 manager 间通信方式维护着自己的 Raft 日志。

 但在通信过程中存在有一种风险:Raft 日志攻击者会通过 Raft 日志数据的传递来访问、篡改 manager 节点中的配置或数据。为了防止被攻击,swarm 开启了一种集群自动锁定功能,为 manager 间的通信启用了 TLS 加密。用于加密和解密的公钥与私钥,全部都维护在各个节点的 Docker 内存中。一旦节点的 Docker 重启,则密钥丢失

 swarm 中通过 autolock 标志来设置集群的自动锁定功能:为 true 则开启自动锁定,为
false 则关闭自动锁定。

4.2 设置自动锁定

 在 manager 节点通过 docker swarm update –-autolock=true 命令可以开启当前 swarm 集群的自动锁定功能。

Docker Swarm 集群搭建,云原生,docker,java,云原生

此时查看 manager 的 docker info 可以看到,autolock 已经为 true 了。

Docker Swarm 集群搭建,云原生,docker,java,云原生

4.3 查看解锁密钥

如果没有保存 docker swarm update --autolock=true 命令中生成的密钥,也可通过在manager 中运行 docker swarm unlock-key 命令查看。

4.4 关闭一个 manager, 模拟宕机重新加入

直接关闭 docker3 的 docker 引擎,模拟一个 manager 宕机的情况。再启动 docker3 的 docker 引擎。

systemctl stop docker
systemctl start docker

此时再查看该节点的 docker info,可以看到 Swarm 值为 locked,即当前节点看到的 Swarm集群的状态为锁定状态,其若要加入,必须先解锁。

Docker Swarm 集群搭建,云原生,docker,java,云原生

即使 docker3 已经正常启动,也没有被加入到集群中

Docker Swarm 集群搭建,云原生,docker,java,云原生

在 docker3 中运行 docker swarm unlock 命令 输入密钥,解锁 swarm。

此时再查看节点信息,该 manager 已经加入。

Docker Swarm 集群搭建,云原生,docker,java,云原生文章来源地址https://www.toymoban.com/news/detail-763102.html

到了这里,关于Docker Swarm 集群搭建的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Docker Swarm集群管理

    秋风阁(https://focus-wind.com/) Docker Swarm官方文档 Docker Swarm是Docker引擎原生内置的容器集群管理工具。 Swarm节点 运行Docker的主机可以主动初始化一个Swarm集群作为Leader节点或者加入一个已存在的Swarm集群,这样这个运行Docker的主机就成为一个Swarm集群的节点。 Swarm集群节点可以分为

    2024年02月05日
    浏览(33)
  • 【云原生 | 55】Docker三剑客之Docker Swarm简介和安装

    🍁 博主简介 :         🏅云计算领域优质创作者         🏅2022年CSDN新星计划python赛道第一名         🏅2022年CSDN原力计划优质作者         🏅阿里云ACE认证高级工程师         🏅阿里云开发者社区专家博主 💊 交流社区 :CSDN云计算交流社区欢迎您的

    2024年02月11日
    浏览(37)
  • Docker Swarm集群企业案例实战

    Docker Swarm 和 Docker Compose 一样,都是 Docker 官方容器编排项目,但不同的是,Docker Compose 是一个在单个服务器或主机上创建多个容器的工具,而 Docker Swarm 则可以在多个服务器或主机上创建容器集群服务,对于微服务的部署,显然 Docker Swarm 会更加适合 。 Swarm是Docker公司自主研

    2024年02月19日
    浏览(39)
  • 【大白学Docker】Docker Swarm 集群部署 Wordpress【实验】

    1.1 Docker 集群概念和优势 Docker 集群是由多个 Docker 主机 组成的分布式系统,用于协同管理和运行容器化应用程序。 这个集群可以通过 Docker Swarm 或 Kubernetes 等容器编排工具来实现。 Docker 集群的几个概念 节点(Node): 集群中的物理或虚拟主机,可以运行 Docker 守护进程。 集

    2024年02月04日
    浏览(36)
  • portainer管理远程docker和docker-swarm集群

    使用前请先安装docker和docker-compose,同时完成docker-swarm集群初始化 部署portainer-ce实时管理本机docker,使用docker-compose一键拉起 docker-compose.yml 6053537/portainer-ce 此镜像为中文版本,效果如下 管理本地docker比较简单,直接使用 volumes 挂载目录即可 /var/run/docker.sock:/var/run/docker.sock

    2024年03月20日
    浏览(46)
  • 容器集群管理工具 Docker Swarm

    《了解和使用Docker》中有提到容器编排工具 docker compose ,不过只限于单机。如果现在需要搭建一个集群环境,提供了10台服务器用来部署应用以及其依赖的组件,比如5个 Tomcat 应用容器、3个Redis、5个 Mysql、3个 Nginx ,你会如何部署? 重复执行部署操作?如果需要扩缩容,手动

    2024年02月08日
    浏览(49)
  • 使用 Docker Swarm(集群) 和Docker Stack(堆栈)部署容器化应用

    说到集群,第一个想到的就是k8s,但docker官方也提供了集群和编排解决方案,它允许你将多个 Docker 主机连接在一起,形成一个“群集”(Swarm),并可以在这个 Swarm 上运行和管理你的服务。 与Kubernetes相比,Docker Swarm的群集管理功能相对简单,Swarm更适合于小型到中型的容器

    2024年04月25日
    浏览(33)
  • 【Docker】Docker Swarm介绍与环境搭建

    多机器如何管理? 如何跨机器做scale横向扩展? 容器失败退出时如何新建容器确保服务正常运行? 如何确保零宕机时间? 如何管理密码,Key等敏感数据? Docker Swarm是Docker官方推出的容器集群管理工具,基于Go语言实现。使用它可以将多个Docker主机封装为单个大型的虚拟Doc

    2024年01月22日
    浏览(37)
  • redis 三主三从高可用集群docker swarm

    redis集群(cluster)笔记 redis 三主三从高可用集群docker swarm redis 三主六从高可用docker(不固定ip) redis 三主六从高可用dockerswarm高级版(不固定ip) 由于数据量过大 ,单个Master复制集难以承担,因此需要对多个复制集进行集群,形成水平扩展每个复制集只负责存储整个数据集的一部分

    2024年02月03日
    浏览(41)
  • 使用Docker Swarm部署RabbitMQ+HAProxy高可用集群(三节点-镜像模式)

    当前规划中,只启动一个HAProxy服务,主要用来做RabbitMQ节点的负载均衡和代理,但是HAProxy可能会出现单点故障,后续需要启动多个HAProxy节点,然后结合Keepalived来进行 设置虚拟IP 做故障转移 节点名称 节点主机名 IP地址 角色 运行服务 cluster01 cluster01 192.168.12.48 Docker Swarm Mana

    2024年02月14日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包