Linux进阶 | 超详细全方面的Docker Swarm Web集群介绍与部署!

本文深入介绍了Docker Swarm集群的搭建、管理和使用,包括Swarm的概念、与Docker Compose和Kubernetes的对比、优势以及Swarm的关键点。通过实例展示了如何在Swarm中部署Web服务,实现滚动升级和多服务编排,同时探讨了Volume在Swarm中的应用。
摘要由CSDN通过智能技术生成

   创作不易,来了的客官点点关注,收藏,订阅一键三连❤😜  


前言

运维之基础——Linux。我是一个即将毕业的大学生,超超。如果你也在学习Linux,不妨跟着萌新超超一起学习Linux,拿下Linux,一起加油,共同努力,拿到理想offer!


系列文章

Linux进阶 | docker compose的安装与使用详解,超详细!

Linux进阶 | Docker部署nginx的web服务,VOLUME的使用详解,实现数据持久化!

Linux进阶 | 2万字总结最详细的Docker的安装、底层隔离机制和简单使用!

Linux | 详解系统监控和常用命令(top free dstat)


概述

Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。本期内容为Docker第五期,通过本期内容将会掌握集群的概念,以及swarm的安装部署,以及swarm和compose以及volume的结合。


目录

前言

概述

超超Docker学习思维导图

集群(cluster)

集群的优势

swarm(蜂群)的概念

什么是swarm

swarm与compose

swarm与k8s

swarm的优势

swarm的基本结构

swarm的关键点

swarm的使用纲要

swarm的使用

swarm的其他命令

 swarm集群部署web服务

思考:swarm manager 是通过什么方式和swarm node进行通信的?

镜像的滚动升级操作

结合compose和swarm进行多服务的编排

compose和swarm结合有什么优势

代码实例部署

Swarm中使用Volume

问题:如何解决web服务的网页保持一致?


 超超Docker学习思维导图

集群(cluster)

多台机器完成某个功能。计算机集群简称集群,是一种计算机系统,它通过一组松散集成的计算机软件(和/或)硬件连接起来高度紧密地协作完成计算工作。

举个生活实例:单点(非集群)模式,就类似银行只开放一个窗口来办理业务,而通过建立集群,就相当于一个银行开通多个窗口办理业务,那么这样不仅能提高办事效率,还能减少风险。

集群的优势

高可伸缩性:服务器集群具有很强的可伸缩性。随着需求和负荷的增长,可以向集群系统添加更多的服务器。在这样的配置中,可以有多台服务器执行相同的应用和数据库操作。

高可用性:高可用性是指,在不需要操作者干预的情况下,防止系统发生故障或从故障中自动恢复的能力。通过把故障服务器上的应用程序转移到备份服务器上运行,集群系统能够把正常运行时间提高到大于99.9%,大大减少服务器和应用程序的停机时间。

高可管理性:系统管理员可以从远程管理一个、甚至一组集群,就好像在单机系统中一样。


swarm(蜂群)的概念

什么是swarm

对多台安装了Docker的宿主机上的容器进行编排。

Swarm是Docker官方提供的一款集群管理工具,其主要作用是把若干台Docker主机抽象为一个整体,并且通过一个入口统一管理这些Docker主机上的各种Docker资源。

一个 swarm 由多个 Docker 主机组成,它们以swarm 模式运行并充当管理器(管理成员资格和委派)和工作器(运行 swarm 服务)。

一个给定的 Docker 主机可以是管理者、工作者,或同时扮演这两个角色。

swarm与compose

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

swarm与k8s

Swarm和Kubernetes比较类似,但是更加轻,具有的功能也较kubernetes更少一些。

swarm的优势

与独立容器相比,swarm 服务的主要优势之一是可以修改服务的配置,包括它所连接的网络和卷,而无需手动重新启动服务。Docker 将更新配置,停止使用过期配置的服务任务,并创建与所需配置匹配的新任务。

swarm的基本结构

在以上结构图可以看出Docker Client使用Swarm对集群(Cluster)进行调度使用。

swarm的关键点

1.Swarm

集群的管理和编排是使用嵌入docker引擎的SwarmKit,可以在docker初始化时启动swarm模式或者加入已存在的swarm

2.Node

一个节点是docker引擎集群的一个实例。您还可以将其视为Docker节点。您可以在单个物理计算机或云服务器上运行一个或多个节点,但生产群集部署通常包括分布在多个物理和云计算机上的Docker节点。

要将应用程序部署到swarm,请将服务定义提交给Manager节点,Manager节点将Task的工作单元分派给worker node。

Manager节点还执行维护所需群集状态所需的编排和集群管理功能。Manager节点选择单个领导者来执行编排任务。

工作节点接收并执行从管理器节点分派的任务。默认情况下,Manager节点还将服务作为工作节点运行,但您可以将它们配置为仅运行管理器任务并且是仅管理器节点。代理程序在每个工作程序节点上运行,并报告分配给它的任务。Worker node向Manager节点通知其分配的任务的当前状态,以便管理器可以维持每个工作者的期望状态。

3.Service

一个服务是Task的定义,Manager或Work node上执行。它是群体系统的中心结构,是用户与群体交互的主要根源。创建服务时,你需要指定要使用的容器镜像。

4.Task

任务是在docekr容器中执行的命令,Manager节点根据指定数量的任务副本分配任务给worker节点

swarm的使用纲要

docker swarm:集群管理,子命令有init, join, leave, update。(docker swarm --help查看帮助)

docker service:服务创建,子命令有create, inspect, update, remove, tasks。(docker service--help查看帮助)

docker node:节点管理,子命令有accept, promote, demote, inspect, update, tasks, ls, rm。(docker node --help查看帮助)  

node是加入到swarm集群中的一个docker引擎实体,可以在一台物理机上运行多个node,node分为:

manager node --> 也就是管理节点

worker nodes --> 也就是工作节点

manager node(管理节点):执行集群的管理功能,维护集群的状态,选举一个leader节点去执行调度任务。

②worker node(工作节点):接收和执行任务。参与容器集群负载调度,仅用于承载task。

③service(服务):一个服务是工作节点上执行任务的定义。创建一个服务,指定了容器所使用的镜像和容器运行的命令。service是运行在worker nodes上的task的描述,service的描述包括使用哪个docker 镜像,以及在使用该镜像的容器中执行什么命令。

④task(任务):一个任务包含了一个容器及其运行的命令。task是service的执行实体,task启动docker容器并在容器中执行任务。


swarm的使用

1.部署机器环境(四台机器,CentOS8Ubuntu系统)

IP:192.168.232.132 主机名:docker-manager-1 担任角色:swarm manager

IP:192.168.232.133 主机名:docker-2 担任角色:swarm node1

IP:192.168.232.134 主机名:docker-3 担任角色:swarm node2

IP:192.168.232.131 主机(ubuntu)名:chaochao 担任角色:swarm node3

2.配置hosts文件

swarm manager

[root@docker-manager-1 ~]# cat /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.232.132 manager

192.168.232.133 worker1

192.168.232.134 worker2

192.168.232.131 worker3

[root@docker-manager-1 ~]# ^C

另外三台worker node操作一致

3.设置防火墙

关闭四台机器上的防火墙。

如果是开启防火墙,则需要在所有节点的防火墙上依次放行2377/tcp(管理端口)、7946/udp(节点间通信端口)、4789/udp(overlay 网络端口,容器之间)端口。

[root@docker-manager-1 ~]# systemctl disable firewalld

[root@docker-manager-1 ~]#
[root@docker-2 ~]# systemctl disable firewalld

[root@docker-2 ~]#

另外两台操作一致

4.重启docker服务,防止导致网络异常

[root@docker-manager-1 ~]# service docker restart

Redirecting to /bin/systemctl restart docker.service

[root@docker-manager-1 ~]#
[root@docker-2 ~]# service docker restart

Redirecting to /bin/systemctl restart docker.service

[root@docker-2 ~]#
[root@docker-3 ~]# service docker restart

Redirecting to /bin/systemctl restart docker.service

[root@docker-3 ~]#
root@chaochao:~# service docker restart

root@chaochao:~#

5.创建swarm集群

对于manager

# 命令:docker swarm init --advertise-addr manager的IP地址

[root@docker-manager-1 ~]# docker swarm init --advertise-addr 192.168.232.132

Swarm initialized: current node (ooauma1x037wufqkh21uj0j7v) is now a manager.

 

To add a worker to this swarm, run the following command:

 

    docker swarm join --token SWMTKN-1-0200k3nv43fmc6hcuurx8z1iehsqq6uro12qjfeoxrkmk9fmom-1ub4wsmlpl4zhqalzdrgukx3l 192.168.232.132:2377

 

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

 

[root@docker-manager-1 ~]#

对于三台swarm nodes

输入manager创建的命令: docker swarm join --token ……,此命令在manager创建swarm时会自动生成。

[root@docker-2 ~]# docker swarm join --token SWMTKN-1-0200k3nv43fmc6hcuurx8z1iehsqq6uro12qjfeoxrkmk9fmom-1ub4wsmlpl4zhqalzdrgukx3l 192.168.232.132:2377

This node joined a swarm as a worker.

[root@docker-2 ~]#
[root@docker-3 ~]# docker swarm join --token SWMTKN-1-0200k3nv43fmc6hcuurx8z1iehsqq6uro12qjfeoxrkmk9fmom-1ub4wsmlpl4zhqalzdrgukx3l 192.168.232.132:2377

This node joined a swarm as a worker.

[root@docker-3 ~]#
root@chaochao:~# docker swarm join --token SWMTKN-1-0200k3nv43fmc6hcuurx8z1iehsqq6uro12qjfeoxrkmk9fmom-1ub4wsmlpl4zhqalzdrgukx3l 192.168.232.132:2377

This node joined a swarm as a worker.

root@chaochao:~#

Tips

退出swarm集群的命令:docker swarm leave

对于manager,解散集群需要加上--force:docker swarm leave --force

6.查看集群的相关信息

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chaochao️

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值