分享好友 行情首页 行情分类 切换频道
docker.10-Docker主机集群化方案 Docker Swarm
2024-12-27 00:01  浏览:101

Docker Swarm是Docker官方提供的一款集群管理工具,其主要作用是把若干台Docker主机抽象为一个整体,并且通过一个入口统一管理这些Docker主机上的各种Docker资源。Swarm和Kubernetes比较类似,但是更加轻,具有的功能也较kubernetes更少一些。

  • 是docker host集群管理工具
  • docker官方提供的
  • docker 1.12版本以后
  • 用来统一集群管理的,把整个集群资源做统一调度
  • 比kubernetes要轻量化
  • 实现scaling 规模扩大或缩小
  • 实现rolling update 滚动更新或版本回退
  • 实现service discovery 服务发现
  • 实现load balance 负载均衡
  • 实现route mesh 路由网格,服务治理

参考网址:https://docs.docker.com/swarm/overview/

节点 (node): 就是一台docker host上面运行了docker engine.节点分为两类:

  • 管理节点(manager node) 负责管理集群中的节点并向工作节点分配任务
  • 工作节点(worker node) 接收管理节点分配的任务,运行任务
 

服务(services): 在工作节点运行的,由多个任务共同组成

 

任务(task): 运行在工作节点上容器或容器中包含应用,是集群中调度最小管理单元

部署3主2从节点集群,另需提前准备1台本地容器镜像仓库服务器(Harbor)

3.2.1 主机名

 
 

3.2.2 IP地址

 
 

3.2.3 主机名与IP地址解析

 

3.3.4 主机时间同步

 

3.2.5 主机安全设置

 
 
 

3.3.1 docker安装

 
 
 

3.3.2 配置docker daemon使用harbor

 
 
 
 

3.4.1 获取docker swarm命令帮助

 

3.4.2 在管理节点初始化

本次在sm1上初始化

 
 

3.4.3 添加工作节点到集群

 
 

如果使用的token已过期,可以再次生成新的加入集群的方法,如下命令所示。

 
 
 

3.4.4 添加管理节点到集群

 
 
 
 

3.4.5 模拟管理节点出现故障

3.4.5.1 停止docker服务并查看结果
 
 
3.4.5.2 启动docker服务并查看结果
 
 
 
 

准备多个版本的容器镜像,以便于后期使用测试。

4.1.1 v1版本

 
 
 
 
 

4.1.2 v2版本

 
 
 
 
 
 

在docker swarm中,对外暴露的是服务(service),而不是容器。

为了保持高可用架构,它准许同时启动多个容器共同支撑一个服务,如果一个容器挂了,它会自动使用另一个容器

4.2.1 使用查看服务

在管理节点(manager node)上操作

 

4.2.2 发布服务

 
 

4.2.3 查看已发布服务

 

4.2.4 查看已发布服务容器

 
 

4.2.5 访问已发布的服务

 

在集群之外的主机访问

使用scale指定副本数来扩展

 
 
 
 
 

问题:现在仅扩展为2个副本,如果把服务扩展到3个副本,集群会如何分配主机呢

 
 
 
 
 
 
 
 

服务中包含多个容器时,每次访问将以轮询的方式访问到每个容器

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

副本控制器

 
 
 
 
 
 
 
 
 
 
 
 
 
  • 服务模式一共有两种:Ingress和Host,如果不指定,则默认的是Ingress

    • Ingress模式下,到达Swarm任何节点的8080端口的流量,都会映射到任何服务副本的内部80端口,就算该节点上没有tomcat服务副本也会映射
 
 
 
 
 
 
 
 
 
  • Host模式下,仅在运行有容器副本的机器上开放端口,使用Host模式的命令如下
 
 
 
 
 
 
 

4.13.1 本地存储

4.13.1.1 在集群所有主机上创建本地目录
 
4.13.1.2 发布服务时挂载本地目录到容器中
 
4.13.1.3 验证是否使用本地目录
 
 
 
 
 
 

存在数据一致性问题

4.13.2 网络存储

  • 网络存储卷可以实现跨docker宿主机的数据共享,数据持久保存到网络存储卷中
  • 在创建service时添加卷的挂载参数,网络存储卷可以帮助自动挂载(但需要集群节点都创建该网络存储卷)
4.13.2.1 部署NFS存储

本案例以NFS提供远程存储为例

在192.168.10.15服务器上部署NFS服务,共享目录为docker swarm集群主机使用。

 
 
 
 
 
4.13.2.2 为集群所有主机安装nfs-utils软件
 
 
4.13.2.3 创建存储卷

集群中所有节点

 
 
 
4.13.2.4 发布服务
 
4.13.2.5 验证
 
 
 
 
 
 
 

如果一个nginx服务与一个mysql服务之间需要连接,在docker swarm如何实现呢?

方法1:

把mysql服务也使用 参数发布到外网,但这样做的缺点是:mysql这种服务发布到外网不安全

方法2:

将mysql服务等运行在内部网络,只需要nginx服务能够连接mysql就可以了,在docker swarm中可以使用==overlay==网络来实现。

但现在还有个问题,服务副本数发生变化时,容器内部的IP发生变化时,我们希望仍然能够访问到这个服务, 这就是**服务发现(service discovery)**.

通过服务发现, service的使用者都不需要知道service运行在哪里,IP是多少,有多少个副本,就能让service通信

下面使用查看到的ingress网络就是一个overlay类型的网络,但它不支持服务发现

 

我们需要自建一个overlay网络来实现服务发现, 需要相互通信的service也必须属于同一个overlay网络

 

说明:

  • –driver overlay指定为overlay类型
  • –subnet 分配网段
  • self-network 为自定义的网络名称
 

验证自动发现

1, 发布nignx-svc服务,指定在自建的overlay网络

 

2, 发布一个busybox服务,也指定在自建的overlay网络

 

说明:

  • 服务名为test

  • busybox是一个集成了linux常用命令的软件,这里使用它可以比较方便的测试与nginx_service的连通性

  • 没有指定副本,默认1个副本

  • 因为它并不是长时间运行的daemon守护进程,所以运行一下就会退出.sleep 100000是指定一个长的运行时间,让它有足够的时间给我们测试

3, 查出test服务在哪个节点运行的容器

 

4, 去运行test服务的容器节点查找容器的名称

 

5, 使用查找出来的容器名称,执行命令测试

 

测试的结果为: test服务可以ping通nginx_service服务,并且返回的IP为自建网络的一个IP(192.168.100.2)

 

6, 分别去各个节点查找nginx_service服务的各个容器(3个副本),发现它们的IP与上面ping的IP都不同

 
 
 

7, 后续测试, 将nginx_service服务扩展,裁减,更新,回退.都不影响test服务访问nginx-svc。

结论: 在自建的overlay网络内,通过服务发现可以实现服务之间通过服务名(不用知道对方的IP)互联,而且不会受服务内副本个数和容器内IP变化等的影响。

在 Swarm Service 中有三个重要的网络概念

  • Overlay networks 管理 Swarm 中 Docker 守护进程间的通信。你可以将服务附加到一个或多个已存在的 网络上,使得服务与服务之间能够通信。
  • ingress network 是一个特殊的 网络,用于服务节点间的负载均衡。当任何 Swarm 节点在发布的端口上接收到请求时,它将该请求交给一个名为 的模块。 跟踪参与该服务的所有IP地址,选择其中的一个,并通过 网络将请求路由到它。
    初始化或加入 Swarm 集群时会自动创建 网络,大多数情况下,用户不需要自定义配置,但是 docker 17.05 和更高版本允许你自定义。
  • docker_gwbridge是一种桥接网络,将 网络(包括 网络)连接到一个单独的 Docker 守护进程的物理网络。默认情况下,服务正在运行的每个容器都连接到本地 Docker 守护进程主机的 网络。
    网络在初始化或加入 Swarm 时自动创建。大多数情况下,用户不需要自定义配置,但是 Docker 允许自定义。
名称类型注释docker_gwbridgebridgenoneingressoverlaynonecustom-networkoverlaynone
  • docker_gwbridge和ingress是swarm自动创建的,当用户执行了docker swarm init/connect之后。

  • docker_gwbridge是bridge类型的负责本机container和主机直接的连接

  • ingress负责service在多个主机container之间的路由。

早期使用service发布,每次只能发布一个service。

yaml可以发布多个服务,但是使用docker-compose只能在一台主机发布。

一个stack就是一组有关联的服务的组合,可以一起编排,一起发布, 一起管理

  • Docker stack会忽略了“构建”指令,无法使用stack命令构建新镜像,它是需要镜像是预先已经构建好的。 所以docker-compose更适合于开发场景
  • Docker Compose是一个Python项目,在内部,它使用Docker API规范来操作容器。所以需要安装Docker -compose,以便与Docker一起在您的计算机上使用
  • Docker Stack功能包含在Docker引擎中。你不需要安装额外的包来使用它,docker stacks 只是swarm mode的一部分。
  • Docker stack不支持基于第2版写的docker-compose.yml ,也就是version版本至少为3。然而Docker Compose对版本为2和3的 文件仍然可以处理
  • docker stack把docker compose的所有工作都做完了,因此docker stack将占主导地位。同时,对于大多数用户来说,切换到使用docker stack既不困难,也不需要太多的开销。如果您是Docker新手,或正在选择用于新项目的技术,请使用docker stack。
命令描述docker stack deploy部署新的堆栈或更新现有堆栈docker stack ls列出现有堆栈docker stack ps列出堆栈中的任务docker stack rm删除一个或多个堆栈docker stack services列出堆栈中的服务

1, 编写YAML文件

 

说明:

  • placement的constraints限制此容器在manager节点

2, 使用docker stack发布

 

如果报错,使用删除.排完错再启动

 
 

3, 验证

1, 编写YAML文件

 

说明: stack中共有3个service

  • nginx服务,3个副本
  • visualizer服务: 图形查看docker swarm集群
  • portainer服务: 图形管理docker swarm集群

2,使用docker stack发布

 
 

3,验证

1,在docker swarm管理节点上准备配置文件

 

2, 编写YAML编排文件

 

3, 发布

 

4, 验证

    以上就是本篇文章【docker.10-Docker主机集群化方案 Docker Swarm】的全部内容了,欢迎阅览 ! 文章地址:http://w.yusign.com/quote/6966.html 
     行业      资讯      企业新闻      行情      企业黄页      同类资讯      网站地图      返回首页 述古往 http://w.yusign.com/mobile/ , 查看更多   
最新新闻
价格稳定中 白色苹果iPhone 4S售3280元苹果4s手机「价格稳定中 白色苹果iPhone 4S售3280元」
【广西IT资讯11月14日报道】白色苹果是一款外形时尚配置主流的iOS人气智能街机。该产品在广西商家柳州滔滔数码通讯给出最新促销
vivo X9s Plus评测 独立DSP拍出新高度手机2「vivo X9s Plus评测 独立DSP拍出新高度」
【中关村在线】vivo评测:7月6日晚,女神倪妮带我们一起见证了照亮美丽的X9sPlus的2000万像素双摄柔光拍照,同时,我们也再一次
Google相机OPPO版手机PS「Google相机OPPO版」
PS手机版可以在手机上面进行着图片的裁剪、调色滤镜等功能的操作,无需再一次的打开电脑,在手机上面就可以进行的操作,改变图片
“世界最轻量手机”:夏普在台湾地区推出 AQUOS zero 售价为4440元夏普手机「“世界最轻量手机”:夏普在台湾地区推出 AQUOS zero 售价为4440元」
  1月8日消息,据台媒报道,近日,夏普正式向台湾推出了一款号称“世界最轻量”的手机——夏普 AQUOS zero,预计在1月15日正式
“洗心革面”的努比亚,依旧挣扎在小众怪圈努比亚手机「“洗心革面”的努比亚,依旧挣扎在小众怪圈」
编辑 | 虞尔湖出品 | 潮起网「于见专栏」受三年疫情影响,加之全球经济下行,国内手机市场持续萎靡。据IDC数据显示,2023年第一
华为p30pro怎么截屏?华为p30pro三种截屏/截图教程安卓手机怎么截屏「华为p30pro怎么截屏?华为p30pro三种截屏/截图教程」
华为p30pro怎么截屏?华为p30pro有几种很便利的截屏方法,让你不错过手机里的精彩瞬间,下面就由小编这个截图狂魔为大家带来华为p
一加安卓手机一加手机官网旗舰店「一加安卓手机」
一加 13于 2024年10月31日发布,2024年11月1日上午10点正事开售。外观设计方面,提供白露晨曦,黑曜秘境,蓝调时刻(素皮)三种
云手机挂机技术原理分享云手机服务器「云手机挂机技术原理分享」
云手机挂机是一种利用云计算技术的虚拟手机服务。它具备全天候、不间断的服务,提供更快速的运行速度和更大的存储容量,而且还具
初中生心理健康引航-构建师生、家校心理健康合作.pptx
初中生心理健康引航构建师生、家校心理健康合作PresenternameAgenda介绍建立良好的师生关系学生情绪和行为变化与家长沟通合作心
iOS8.4太极越狱正式版越狱教程苹果手机越狱教程「iOS8.4太极越狱正式版越狱教程」
经过TaiG团队的测试和适配,iOS8.4的越狱工具正式和大家见面了。至此,iOS 8系列达成全部越狱。感谢各位用户的支持与厚爱,TaiG
本企业新闻
推荐企业新闻
发表评论
0评