IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 手把手教你docker swarm集群部署 -> 正文阅读

[系统运维]手把手教你docker swarm集群部署


一、什么是docker swarm?

Docker Swarm 和 Docker Compose 一样,都是 Docker 官方容器编排项目,但不同的是,Docker Compose 是一个在单个服务器或主机上创建多个容器的工具,而 Docker Swarm 则可以在多个服务器或主机上创建容器集群服务,对于微服务的部署,显然 Docker Swarm 会更加适合。 Swarm deamon只是一个调度器(Scheduler)加路由器(router),Swarm自己不运行容器,它只是接受Docker客户端发来的请求,调度适合的节点来运行容器,这就意味着,即使Swarm由于某些原因挂掉了,集群中的节点也会照常运行,放Swarm重新恢复运行之后,他会收集重建集群信息。

二、docker swarm基本结构图

在这里插入图片描述
在结构图可以看出 Docker Client使用Swarm对 集群(Cluster)进行调度使用。

上图可以看出,Swarm是典型的master-slave结构,通过发现服务来选举manager。manager是中心管理节点,各个node上运行agent接受manager的统一管理,集群会自动通过Raft协议分布式选举出manager节点,无需额外的发现服务支持,避免了单点的瓶颈问题,同时也内置了DNS的负载均衡和对外部负载均衡机制的集成支持。

三、准备工作

1.准备三台cetnos8已安装docker的虚拟机,并且配置好ip地址。

安装docker步骤centos8及ubuntu安装docker教程
我的四台虚拟机如图(其中一台是Ubuntu,可以只用三台centos8的虚拟机即可):
在这里插入图片描述

2.更改主机名

#manager虚拟机
[root@manager ~]# hostname set-hostname manager
#worker-1虚拟机
[root@worker-1 network-scripts]# hostname set-hostname worker-1
#worker-2虚拟机
[root@worker-2 network-scripts]# hostname set-hostname worker-2
#worker-3虚拟机--这是ubuntu虚拟机
root@worker3:/home/yejing# hostnamectl set-hostname worker-3

3.配置hosts文件

[root@worker-1 ~]# vim /etc/hosts
#加上这几个主机映射关系
192.168.31.31 manager
192.168.31.15 worker-1
192.168.31.16 worker-2
192.168.31.17 worker-3

四台机器都要进行如上操作!

4.关闭防火墙和selinux

[root@worker-2 ~]# systemctl stop firewalld
[root@worker-2 ~]# systemctl disable firewalld
#临时关闭selinux
[root@worker-2 ~]# setenforce 0
#永久关闭
[root@worker-2 ~]# vim /etc/selinux/config
#如下图

在这里插入图片描述
四台机器都要进行如上操作!

四、docker swarm集群部署

1.创建swarm集群

#在manager虚拟机上创建,填自己manager虚拟机的ip地址
[root@manager ~]# docker swarm init --advertise-addr 192.168.31.31
Swarm initialized: current node (z6sfk0wglnqagtbbe07u8f701) is now a manager.

To add a worker to this swarm, run the following command:
#这就是添加节点的方式,(要保存初始化后token,因为在节点加入时要使用token作为通讯的密钥)
    docker swarm join --token SWMTKN-1-40pa2ab7p1zd8n1s6l49u420fcjtxcvqoplxb7r3mupvkenkdo-4ryk8uc16bd2550c1iuweljhi 192.168.31.31:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
#查看节点是否创建成功
[root@manager ~]# docker node ls
ID                            HOSTNAME   STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
z6sfk0wglnqagtbbe07u8f701 *   manager    Ready     Active         Leader           20.10.8

上面命令执行后,该机器自动加入到swarm集群。这个会创建一个集群token,获取全球唯一的 token,作为集群唯一标识。后续将其他节点加入集群都会用到这个token值。
其中,–advertise-addr参数表示其它swarm中的worker节点使用此ip地址与manager联系。命令的输出包含了其它节点如何加入集群的命令。

2.添加节点主机到swarm集群

在这里插入图片描述


[root@worker-1 ~]# docker swarm join --token SWMTKN-1-40pa2ab7p1zd8n1s6l49u420fcjtxcvqoplxb7r3mupvkenkdo-4ryk8uc16bd2550c1iuweljhi 192.168.31.31:2377
This node joined a swarm as a worker.

在其他三台worker虚拟机上都进行上述操作

#在manager虚拟机上查看节点
[root@manager ~]# docker node ls
ID                            HOSTNAME   STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
z6sfk0wglnqagtbbe07u8f701 *   manager    Ready     Active         Leader           20.10.8
g4hltfe2aqsyoysvop0c8m21z     worker-1   Ready     Active                          20.10.8
omk1t29nhlxkrjz59eb1lxnrg     worker-2   Ready     Active                          20.10.8
25c3epmxs9kmhuahlgtwjzbsx     worker-3   Ready     Active                          20.10.8

3.创建一个服务

在manager虚拟机上进行操作

#创建一个名字为helloworld的服务,10个副本,使用alpine镜像,进行ping操作
[root@manager ~]# docker service create --replicas 10 --name helloworld alpine ping docker.com
#查看服务是否创建成功
[root@manager ~]# docker service ls
ID             NAME         MODE         REPLICAS   IMAGE           PORTS
h911wkvi79wo   helloworld   replicated   10/10      alpine:latest  

4.swarm的动态缩容服务

#扩容为20个
[root@manager ~]# docker service update --replicas 20 helloworld
#缩容为5个
[root@manager ~]# docker service scale helloworld=5
#这个命令也可以用于扩容

即使有台机器宕机,其他机器也能够分配20个副本,实现了高可用。


总结

至此,docker swarm集群部署成功!

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-20 15:29:39  更:2021-08-20 15:29:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 20:25:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码