docker-swarm集群搭建

目录

 一、docker swarm介绍

二、部署docker

三、搭建集群

3.1  工作模式

 3.2  将当前主机作为leader

3.3  将第二个节点slave1加入到worker

3.4  将第三个节点slave2也加入到worker

3.5  将第四个节点(slave3)加入到manager

四、总结


 一、docker swarm介绍

Docker Swarm是一个用于构建和管理容器集群的工具。它允许你将多个Docker主机组成一个虚拟的单一主机,以便更好地扩展应用程序,并提供高可用性和负载均衡。Swarm使用了一种称为"swarm mode"的特殊模式来管理集群。

在Swarm中,你可以将多个Docker主机连接到一个Swarm集群,并使用docker service命令来创建和管理服务。服务是由一组任务(或容器)组成的,并且可以指定副本数、网络配置、容器启动参数等。Swarm会自动将任务分配到可用的主机上,以实现负载均衡和高可用性。

Docker Swarm还提供了内置的负载均衡和服务发现机制,它能够自动将流量路由到运行任务的节点上,并保证服务的可用性。此外,Swarm还具备故障恢复的能力,当某个节点出现故障时,Swarm会自动重新调度任务到其他可用的节点上。

二、部署docker

创建四台虚拟机或者四台服务器

部署过程如下

安装部署docker全部过程以及基础使用命令入门必看!-CSDN博客

shell脚本一键部署docker-CSDN博客

保证四个都安装成功


三、搭建集群


3.1  工作模式

为了便于查看,更改主机名

节点的主机名分别为:master   slave1   slave2   slave3

查看当前网络

[root@master ~]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
b786a56417fd   bridge    bridge    local
7bcb407e6553   host      host      local
47f66a3a9185   none      null      local

查看帮助

[root@master ~]# docker swarm --helpUsage:  docker swarm COMMANDManage SwarmCommands:init        Initialize a swarmjoin        Join a swarm as a node and/or managerRun 'docker swarm COMMAND --help' for more information on a command.[root@master ~]# docker swarm init --helpUsage:  docker swarm init [OPTIONS]Initialize a swarmOptions:--advertise-addr string                  Advertised address (format: "<ip|interface>[:port]")--autolock                               Enable manager autolocking (requiring an unlock key to start astopped manager)--availability string                    Availability of the node ("active", "pause", "drain") (default"active")--cert-expiry duration                   Validity period for node certificates (ns|us|ms|s|m|h)(default 2160h0m0s)--data-path-addr string                  Address or interface to use for data path traffic (format:"<ip|interface>")--data-path-port uint32                  Port number to use for data path traffic (1024 - 49151). If novalue is set or is set to 0, the default port (4789) is used.--default-addr-pool ipNetSlice           default address pool in CIDR format (default [])--default-addr-pool-mask-length uint32   default address pool subnet mask length (default 24)--dispatcher-heartbeat duration          Dispatcher heartbeat period (ns|us|ms|s|m|h) (default 5s)--external-ca external-ca                Specifications of one or more certificate signing endpoints--force-new-cluster                      Force create a new cluster from current state--listen-addr node-addr                  Listen address (format: "<ip|interface>[:port]") (default0.0.0.0:2377)--max-snapshots uint                     Number of additional Raft snapshots to retain--snapshot-interval uint                 Number of log entries between Raft snapshots (default 10000)--task-history-limit int                 Task history retention limit (default 5)

 3.2  将当前主机作为leader

[root@master ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:d9:41:26 brd ff:ff:ff:ff:ff:ffinet 192.168.200.10/24 brd 192.168.200.255 scope global noprefixroute ens33valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fed9:4126/64 scope linkvalid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group defaultlink/ether 02:42:2f:5c:d0:b8 brd ff:ff:ff:ff:ff:ffinet 172.17.0.1/16 brd 172.17.255.255 scope global docker0valid_lft forever preferred_lft forever[root@master ~]# docker swarm init --advertise-addr 192.168.200.10
Swarm initialized: current node (0r9pr636ujer02raru7kcpgw9) is now a manager.To add a worker to this swarm, run the following command:docker swarm join --token SWMTKN-1-2pwtfth6qpuypkez62l411vlcsng0zw48q6immmg3aeoydf5fj-4m1wj6met556fugcqbl2dk2uz 192.168.200.10:2377To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

 节点1(master)为leader

初始化节点 docker swarm init

docker swarm join 加入一个节点!

# 获取令牌

docker swarm join-token manager

docker swarm join-token worker

3.3  将第二个节点slave1加入到worker

[root@master ~]# docker swarm join --token SWMTKN-1-2pwtfth6qpuypkez62l411vlcsng0zw48q6immmg3aeoydf5fj-4m1wj6met556fugcqbl2dk2uz 192.168.200.10:2377
This node joined a swarm as a worker.

第一个节点master查看node

[root@master ~]# docker node ls
ID                            HOSTNAME   STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
0r9pr636ujer02raru7kcpgw9 *   master     Ready     Active         Leader           25.0.4
o622mci81bykwzj5ujczut3jy     slave1     Ready     Active                          25.0.4

创建worker密钥

[root@master ~]# docker swarm join-token worker
To add a worker to this swarm, run the following command:docker swarm join --token SWMTKN-1-2pwtfth6qpuypkez62l411vlcsng0zw48q6immmg3aeoydf5fj-4m1wj6met556fugcqbl2dk2uz 192.168.200.10:2377

3.4  将第三个节点slave2也加入到worker

[root@slave2 ~]# docker swarm join --token SWMTKN-1-2pwtfth6qpuypkez62l411vlcsng0zw48q6immmg3aeoydf5fj-4m1wj6met556fugcqbl2dk2uz 192.168.200.10:2377
This node joined a swarm as a worker.

master节点再次查看node

[root@master ~]# docker node ls
ID                            HOSTNAME   STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
0r9pr636ujer02raru7kcpgw9 *   master     Ready     Active         Leader           25.0.4
o622mci81bykwzj5ujczut3jy     slave1     Ready     Active                          25.0.4
ykwdxdwl589cxox8ffevap4hb     slave2     Ready     Active                          25.0.4

3.5  将第四个节点(slave3)加入到manager

创建manager密钥

[root@master ~]# docker swarm join-token manager
To add a manager to this swarm, run the following command:docker swarm join --token SWMTKN-1-2pwtfth6qpuypkez62l411vlcsng0zw48q6immmg3aeoydf5fj-5ntj8tg2i2vahtljs614qjydj 192.168.200.10:2377

在slave3节点上使用

[root@slave3 ~]# docker swarm join --token SWMTKN-1-2pwtfth6qpuypkez62l411vlcsng0zw48q6immmg3aeoydf5fj-5ntj8tg2i2vahtljs614qjydj 192.168.200.10:2377
This node joined a swarm as a manager.

master节点再次查看

[root@master ~]# docker node ls
ID                            HOSTNAME   STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
0r9pr636ujer02raru7kcpgw9 *   master     Ready     Active         Leader           25.0.4
o622mci81bykwzj5ujczut3jy     slave1     Ready     Active                          25.0.4
ykwdxdwl589cxox8ffevap4hb     slave2     Ready     Active                          25.0.4
73lftyll7or01s0s0ld4urips     slave3     Ready     Active         Reachable        25.0.4

搭建完成

两个管理节点,两个工作节点

两主两从


四、总结

1、生成主节点 init

2、加入(管理者、worker)

Docker Swarm适合构建和管理容器集群,以实现高可用性和负载均衡

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/526391.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【OpenCV】如何在Linux操作系统下正确安装 OpenCV

前言 我是在虚拟机上跑的 Linux 5.8.0-44-generic。 配置如下&#xff1a; 目录 第一步&#xff1a;下载依赖文件 第二步&#xff1a;下载 opencv 和 opencv_contrib 源码 第三步&#xff1a;解压缩包 第四步&#xff1a;移动文件 第五步&#xff1a;生成 makefile 文件 …

Linux高级IO之poll

(&#xff61;&#xff65;∀&#xff65;)&#xff89;&#xff9e;嗨&#xff01;你好这里是ky233的主页&#xff1a;这里是ky233的主页&#xff0c;欢迎光临~https://blog.csdn.net/ky233?typeblog 点个关注不迷路⌯▾⌯ 目录 一、poll函数接口 1.接口 2.poll做了什么工…

C++程序设计-第六/七/八章 运算符重载/包含与继承/虚函数和多态性【期末复习|考研复习】

前言 总结整理不易&#xff0c;希望大家点赞收藏。 给大家整理了一下C程序设计中的重点概念&#xff0c;以供大家期末复习和考研复习的时候使用。 C程序设计系列文章传送门&#xff1a; 第一章 面向对象基础 第四/五章 函数和类和对象 第六/七/八章 运算符重载/包含与继承/虚函…

《探索虚拟与现实的边界:VR与AR谁更能引领未来?》

引言 在当今数字时代,虚拟现实(VR)和增强现实(AR)技术正以惊人的速度发展,并逐渐渗透到我们的日常生活中。它们正在重新定义人与技术、人与环境之间的关系,同时也为各行各业带来了全新的可能性。然而,究竟是VR还是AR更有潜力改变未来?本文将围绕这一问题展开深入探讨。…

Canal安装使用

一 Canal介绍 canal是阿里巴巴旗下的一款开源项目&#xff0c;纯Java开发。基于数据库增量日志解析&#xff0c;提供增量数据订阅&消费&#xff0c;目前主要支持了MySQL&#xff08;也支持mariaDB&#xff09;。 背景 早期&#xff0c;阿里巴巴B2B公司因为存在杭州和美国…

少儿编程 蓝桥杯青少组科技素养题 信息素养真题及解析第25套

少儿编程 科技素养 信息素养真题第25套 1、旅行结束之后&#xff0c;回到家的小蓝决定将照片备份在云端的网盘上。备份照片主要占用的是小蓝家的( )带宽 A、下行 B、上行 C、文件 D、数据 答案&#xff1a;B 考点分析&#xff1a;主要考查网络相关知识&#xff0c;要将照…

公众号IP白名单已添加服务器IP 122.88... 依然给出 40164 错误

公众号的IP白名单已添加 122.88... 依然给出 40164 错误。 {"errcode":40164,"errmsg":"invalid ip 122.88... ipv6 ::ffff:122.88..., not in whitelist rid: 65e85a07-458dfc0d-16003e03"} 解决方案&#xff1a; 一、检查 AppID 是否正确&…

【数学】【组合数学】1830. 使字符串有序的最少操作次数

作者推荐 视频算法专题 本博文涉及知识点 数学 组合数学 LeetCode1830. 使字符串有序的最少操作次数 给你一个字符串 s &#xff08;下标从 0 开始&#xff09;。你需要对 s 执行以下操作直到它变为一个有序字符串&#xff1a; 找到 最大下标 i &#xff0c;使得 1 < i…

Javaweb之Maven高级之继承的详细解析

2.1 继承 我们可以再创建一个父工程 tlias-parent &#xff0c;然后让上述的三个模块 tlias-pojo、tlias-utils、tlias-web-management 都来继承这个父工程 。 然后再将各个模块中都共有的依赖&#xff0c;都提取到父工程 tlias-parent中进行配置&#xff0c;只要子工程继承了…

C++单例模式、工厂模式

一、单例模式 (一) 什么是单例模式 1. 是什么&#xff1f; 在系统的整个生命周期内&#xff0c;一个类只允许存在一个实例。 2. 为什么&#xff1f; 两个原因&#xff1a; 节省资源。方便控制&#xff0c;在操作公共资源的场景时&#xff0c;避免了多个对象引起的复杂操作…

云原生之容器编排实践-ruoyi-cloud项目部署到K8S:Nginx1.25.3

背景 前面搭建好了 Kubernetes 集群与私有镜像仓库&#xff0c;终于要进入服务编排的实践环节了。本系列拿 ruoyi-cloud 项目进行练手&#xff0c;按照 MySQL &#xff0c; Nacos &#xff0c; Redis &#xff0c; Nginx &#xff0c; Gateway &#xff0c; Auth &#xff0c;…

异步编程实战:使用C#实现FTP文件下载及超时控制

博客标题: 异步编程实战&#xff1a;使用C#实现FTP文件下载及超时控制 如果你的函数不是async&#xff0c;你仍然可以实现相同的超时功能&#xff0c;但你将不得不依赖更多的同步代码或使用.Result或.GetAwaiter().GetResult()来阻塞等待任务完成&#xff0c;这可能导致死锁的风…