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 (二)

???

???????????? ((本次演示由于之前做ansible了,所以环境有点不同,请忽略))

??????? 前面提到了通过swarm如何部署service,也验证了swarm的failover(故障切换)的特性,现在来说说,如何去访问service。

1、(1)创建一个service

????

service已经创建好了,接下来就是怎么去访问了?但是访问的知道ip啊,所以我们要看看容器的IP,使用docker inspect 容器ID。

?

?但是这样的访问只限制与容器与本地之间,服务并没有暴露在外部。

(2)从外部访问service

???? 要将service暴露到外部,只需要暴露一个端口就可以了

curl 127.0.0.1:8080

2、service之间进行通信

?????? 微服务的架构中的应用由多个service组成,比如前端的apache或nginx,提供缓存的memcached,存放数据的mysql等,每一层都是swarm的一个service,每个service运行了多个容器,在这种情况下。service与service之间通信是必须的。

??????? 一种方法是将所有service都publish出去,通过service端口访问,缺点就是直接把后台服务器也暴露了,不安全。那么就需要另外一种方法,swarm提供了一种机制,这种机制的作用如下:

??? (1)让service通过简单的方法访问到其他service;

??? (2)当service副本的ip或者副本数发生变化时,不会影响到正在访问该service的其他service;

????? 创建overlay网络?

要使用服务发现,需要相互通信的service必须属于同一个overlay网络,所以先创建一个新的overlay网络;

?部署一个service使用overlay网络;

?再部署另外一个service使用同一网络,用于验证;

?查看到busy在host2上,我们去host2上验证;

? ? ?? 可以看到验证成功,那这个ip就是myweb-1的service的vip,swarm会对vip的访问进行负载均衡的处理。可以利用docker service inspect myweb-1 查看是否ip是一样的。

-----------------------------------------------------------------------------------------

滚动更新

??? 在生产环境中,需要升级app或更新时,利用滚动更新可以降低应用更新的风险,如果某个更新的副本失败或者由故障,整个更新会暂停,其他的副本则可以继续提供服务。现在我用httpd-2.2.31和httpd2.2.32来实验。

(1)先创建2.2.31的service

?下面将service更新到httpd-2.2.32,使用docker service update --image httpd-2.2.32(要升级到的版本) myweb(service)

?swarm滚动更新的步骤如下

?(1)停止一个副本

?(2)调度任务,选择worker node;

?(3)在worker上用新的镜像启动副本;

?(4)如果更新副本运行成功,继续更新下一个副本,如果失败,暂停整个更新。

?? 通过docker service logs myweb可以查看升级更新的顺序

也可以使用命令?? watch docker service ps myweb查看详细更新过程

?还可以利用--update-parallelism设置并行更新的副本数目,通过--update-delay指定滚动更新的间隔时间。

?可以慢慢观察它更新的时间和顺序。到最后全部更新成功

?????? 如果更新的结果不理想,swarm还提供了一种功能。就是回滚,可以通过--rollback恢复到更新之前的状态? docker service update --rollback myweb。

------------------------------------------------------------------------------------

?????? swarm在创建容器时,默认使用replicated mode,就是通过--replicas调整容器副本的数量,内部的调度器会根据当前集群的妓院使用状况在不同的node上启停容器,每个node上运行的副本有多有少,资源丰富的肯定比较多,反之亦然。

?????? 除了replicated mode,swarm还提供了一个global mode,这种模式是强制在每个node上只运行一个副本,比如EFK的filebeat,再比如zabbix的agent端等等,哪怕后期有新的容器加入进来,swarm会自动在新容器上运行一个。

?????? 下面来看一下global mode的实际效果把。

? ? ? ? 可以看的出来容器是均匀的跑在各个node上,来测试一下加入一台node,swarm会不会帮我创建一个副本。我重新开启一台机器,安装好docker,测试网通,在manager节点使用命令docker swarm join-token manager,查看manager的token值,在新服务器上执行,显示加入成功,然后什么都不用做,到manager上看看有没有给新node创建一个副本。

??????? host3就是我新加的服务器,测试成功!!! 使用docker service inspect myweb-1可以看到这个service的mode是什么。

---------------------------------------------------------------------------------------------------

???????? 以上都是swarm按照自己规则来决定容器应该跑在哪个node上的,swarm想在哪个node上跑容器我们干预不了,但是我们还有办法可以精确的控制service的运行位置。

??? Label控制Service的位置

?? 大体分为两步:(1)为每个node定义label;

??????????????????????????? (2)在创建service时指定node的label,label可以灵活的描述node的属性(自定义),格式为 key=value。

??? 使用命令 docker service inspect service_name可以看到label的定义。

?? 我来给每个node打上label:host1 label:test-1

???????????????????????????????????????????????? host2 label:test-2

???????????????????????????????????????????????? host3 label:test-3

?接下来我在3个node上跑不同的服务。

?

?可以看到所有的容器都在按照我的预期执行在每个固定的node上,这就是labels的作用。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-07-25 12:01:39  更:2021-07-25 12:02:47 
 
开发: 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年12日历 -2024/12/27 11:38:41-

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