Docker Swarm集群管理/容器编排

2019-09-29  本文已影响0人  DDDDAIPING

以下实验是我在本地环境中,对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

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

worker1: machine12 machine12 worker2:machine13 machine13

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 查看单个服务的概况

查看服务状态 注意
  当service创建成功时,创建命令中使用-p 所指定的端口,在集群中 所有节点 上都会被占用。 
worker1 worker2
并且在manager上,此时已有一个容器在运行中。该容器使用创建服务时所指定的镜像创建 工作容器
  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个节点中,并且节点均工作正常。

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

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

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

以上。

上一篇下一篇

猜你喜欢

热点阅读