Docker Swarm集群管理/容器编排

  • Swarm是一个Docker(现在叫Moby)官方提供的一个安全的docker容器集群管理工具,一个微服务应用编排引擎。它通过将容器(container)抽象为服务(service),从而使多个节点(node)成为一个整体对外进行服务。
  • 实现中所使用的镜像及项目git地址:https://github.com/zydp/WeatherInfos

以下实验是我在本地环境中,对swarm集群进行一些常规的操作。

  • 我的测试环境

IP: 192.168.6.75 HostName: cs-compiler Role: leader
IP: 192.168.6.103 HostName: machine12 Role: worker
IP: 192.168.6.93 HostName: machine13 Role: worker

  • 准备工作
    首先将3台测试机器docker daemon安装好,并确保测试机之间相互能够访问。
    防火墙上提前打开端口:

2377/tcp 用于客户端与 Swarm 进行安全通信
7946/tcp 用于控制面 gossip 分发
7946/udp 用于控制面 gossip 分发
4789/udp 用于基于 VXLAN 的覆盖网络

  • 防火墙操作命令

firewall-cmd --zone=public --add-port=2377/tcp --permanent
firewall-cmd --zone=public --add-port=7946/tcp --permanent
firewall-cmd --zone=public --add-port=7946/udp --permanent
firewall-cmd --zone=public --add-port=4789/udp --permanent
firewall-cmd --reload

  • 在leader上进行swarm集群的初始化
    docker swarm init --advertise-addr 192.168.6.75     // --advertise-addr 集群的交互地址

    swarm初始化输出

  • 图中提到两点,为集群添加worker使用命令:
    docker swarm join --token SWMTKN-1-2abkt4nbd49eop3jurvdiu27iweak5801fnwu52rvn8tx3ov7y-1pag0z4e2jchm4fgfxwsjt9h5 192.168.6.75:2377

  • 为集群添加manager,执行docker swarm join-token manager并根据提示操作
    添加集群worker或是manager是跟据对应不同的join-token去分辨的,我的测试环境中,只预备一台manager。因此,此处不对添加manager进行探讨

  • 使用 docker node ls 查看集群中的节点

    节点状态

  • 可以看到此时集群中只有一个可用的节点,使用命令将另外两台worker也加入到集群中

worker1: machine12
machine12

worker2:machine13
machine13
  • 加入worker以后的集群节点状态
    节点状态
  • 此时我们可以为该集群创建service并对外提供调用服务了

docker service create --name weather -p 3244:3244 erfengd/weather:latest
--name 指定服务的名称
-p    指定对外提供服务的端口
erfengd/weather 镜像名
该条命令大意为:使用镜像erfengd/weather创建一个命为weather的服务,该服务使用物理机的3244端口映射到容器的3244端口。 erfengd/weather是我提交到docker-hub的一个天气数据查询的镜像,开箱即用。

创建service

  • 查看服务状态 docker service ls & docker service ps weather

docker service ls  查看集群中服务的列表
docker service ps weather 查看单个服务的概况

查看服务状态
注意
  当service创建成功时,创建命令中使用-p 所指定的端口,在集群中 所有节点 上都会被占用。 
worker1
worker2

并且在manager上,此时已有一个容器在运行中。该容器使用创建服务时所指定的镜像创建
工作容器

  • 扩展集群副本
      通过图<查看服务状态>可以看到,此时该集群中只有一个service,且该service只有一个节点副本,该节点的hostname是cs-compiler,状态是Running。
      此时我们对该服务进行扩展,使用命令 docker service scale weather=3 。使用该命令将该服务的副本伸缩到3节点,如下图:
    扩展节点副本
    此时我们使用 docker service ls & docker service ps weather 查看service的状态:
    扩展后的service状态
  • 下面我们对该集群服务进行测试
  1. 首先我们检索节点日志,以便得知该节点被请求。

使用命令 docker exec [containerID] tail -f ./logs/wearth.log

节点日志检索

  1. 使用测试工具Apache Jmeter 进行并发访问,用以监测swarm service对worker节点的调度是否均匀
Apache Jmeter

请求详情

使用该测试用例,我们在5秒内对swarm中weather service 进行10*10*100次请求 //线程数*请求用例*循环次数
聚合报告
日志检索
从日志中可以看到,10000次请求被分配到weather service所涵盖的3个节点中,并且节点均工作正常。
  • 在这里顺道提一下docker swarm 的调度策略,swarm的调度策略共分三种:

spread   优先选择CPU、MEM占用率底的节点(default)
binpack    尽量的将某一个节点全占满(与spread相反)
random   随机选择一个节点(多用在测试环境)
在使用swarm manager时可以使用--strategy选项进行指定。官方传送门

  • 节点自动恢复(HA)

使用命令docker stop e24db70fdbbd 在worker1(machine12)上停止容器后,docker swarm会瞬间再拉起一个容器进行恢复。使用docker ps -a查看容器,则可看到新服务被拉起的过程

容器被拉起
在服务详情中,也可见到节点machine12掉线一次,且被恢复后machine12的状态为running
service详情

以上。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 227,797评论 6 531
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 98,179评论 3 414
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 175,628评论 0 373
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 62,642评论 1 309
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 71,444评论 6 405
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 54,948评论 1 321
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 43,040评论 3 440
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 42,185评论 0 287
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 48,717评论 1 333
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 40,602评论 3 354
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 42,794评论 1 369
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 38,316评论 5 358
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 44,045评论 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 34,418评论 0 26
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 35,671评论 1 281
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 51,414评论 3 390
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 47,750评论 2 370

推荐阅读更多精彩内容