jmeter怎么编写socket脚本
290
2022-10-30
Dcoker swarm
如果文章内容看不懂,最后有个小实验可以了解一下
docker swarm集群:三剑客之一
准备:
docker01 | docker02 | docker03 |
---|---|---|
192.168.1.10 | 192.168.1.20 | 192.168.1.30 |
myvisualizer.tar | nginx.tar | nginx.tar |
nginx.tar |
关闭防火墙,禁用selinux,3台dockerhost区别主机名,时间同步
[root@docker01 ~]# systemctl stop firewalld [root@docker01 ~]# systemctl disable firewalld [root@docker01 ~]# setenforce 0
时间同步:
mv /etc/localtime/etc/localtime. bk cp /usr/share/zoneinfo/Asia/Shanghai/etc/localtime
docker版本必须是:v1.12版本开始。
[root@docker01 ~]# docker -v Docker version 18.09.0, build 4d60db4
每台添加域名解析:
[root@docker01 ~]# vim /etc/hosts 192.168.1.10 docker01 192.168.1.20 docker02 192.168.1.30 docker03
Swarm:作用运行docker engin(引擎)的多个主机组成的集群。 node:每一个docker engin都是一个(node)节点,分为manager和worker。 manager node:负责执行编排和集群的管理工作,保持并维护swarm处于期望的状态。swram可以有多个manager node,他们会自动协商并选举一个Leader执行编排任务。但相反,不能没有manager node。 worker node:接受并执行manager node派发的任务,并且默认manager node也是一个worker node,不过可以将它设置为manager-only node,让它只负责编排和管理工作。 service:用来定义worker上执行的命令。
1)初始化集群
docker初始化:
[root@docker01 ~]# docker swarm init --advertise-addr 192.168.1.10
//--advertis-addr:指定其他node通信的地址。
上面返回的结果告诉我们:初始化成功,并且,如果想要添加work节点运行下面的命令
docker swarm join --token SWMTKN-1-0tx0cf540mq3stxknq8xlv2183ymeeld9zvxen7x1tepw1z2un-e6onamnuj4nck4bw8k294ujnn 192.168.1.10:2377
PS:这里注意,token只有24小时的有效期。
如果想要添加manager节点,运行下边的命令:
docker swarm join-token manager
docker02和docker03运行:
[root@docker02 ~]# docker swarm join --token SWMTKN-1-0tx0cf540mq3stxknq8xlv2183ymeeld9zvxen7x1tepw1z2un-e6onamnuj4nck4bw8k294ujnn 192.168.1.10:2377
当其他两个节点加入成功之后,我们可以用 docker node ls查看节点信息
docker01查看:
[root@docker01 ~]# docker node ls
PS:
*:当前所在终端 Ready:准备报,可以进行工作 Active:正在运行中
dokcer02和docker03操作:
docker swarm leave :申请离开一个集群(自动离职),之后查看节点状态会变成down,然后可以通过manager node将其删除。
自动离职:
[root@docker02 ~]# docker swarm leave Node left the swarm.
docker01上操作:
docker node rm xxx:删除某个节点(开除)。
开除:
[root@docker01 ~]# docker node rm docker02 docker02 [root@docker01 ~]# docker node rm docker03 docker03
基本操作命令:
docker swarm join-token [manager| worker]:生成令牌,可以是manager身份或worker身份。
[root@docker01 ~]# docker swarm join-token manager To add a manager to this swarm, run the following command: docker swarm join --token SWMTKN-1-0tx0cf540mq3stxknq8xlv2183ymeeld9zvxen7x1tepw1z2un-ca100vimkqxp3d2ka30o2y0fi 192.168.1.10:2377
docker02和docker03上操作:
[root@docker03 ~]# docker swarm join --token SWMTKN-1-0tx0cf540mq3stxknq8xlv2183ymeeld9zvxen7x1tepw1z2un-ca100vimkqxp3d2ka30o2y0fi 192.168.1.10:2377 This node joined a swarm as a manager.
docker node demote (降职):将此swram节点的manager
降级为work.
docker node promote (升职):将swarm节点的work升级为manager.
docker01上操作:
[root@docker01 ~]# docker node demote docker02 Manager docker02 demoted in the swarm. [root@docker01 ~]# docker node demote docker03 Manager docker03 demoted in the swarm. [root@docker01 ~]# docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION kzwsrnrij3gauh9kkzio2ktab * docker01 Ready Active Leader 18.09.0 c39620kukfj2lgjm53yw7srq5 docker02 Ready Active 18.09.0 mtghji5h1muwrxrb1j174u66p docker03 Ready Active 18.09.0
2)部署docker swarm集群网络
overlay:覆盖型网络。
docker01操作:
[root@docker01 ~]# docker network create -d overlay --attachable docker sfot05jf5hkjjdx1el56ffc9e
//attachble:这个参数必须要加,否则不能用于容器。
在创建网络的时候,我们并没有部署一个存储服务,比如consul,那是因为docker swarm自带存储。
3)部署一个图形化webUI界面。
docker01导入myvisualizer.tar镜像
[root@docker01 ~]# docker load < myvisualizer.tar [root@docker01 ~]# docker run -d -p 8080:8080 -e HOST=192.168.1.10 -e PORT=8080 -v /var/run/docker.sock:/var/run/docker.sock --name visualizer dockersamples/visualizer
然后可以通过浏览器访问验证:
如果网页访问不到,需要开启路由转发:
[root@docker01 ~]# echo net.ipv4.ip_forward = 1 >> /etc/sysctl.conf [root@docker01 ~]# sysctl -p net.ipv4.ip_forward = 1
4)创建service
三台docker都操作
[root@docker01 ~]# docker service create --replicas 1 --network docker --name web1 -p 80 nginx:latest
//--replicas:副本数量。
大概可以理解为:一个副本等于一个容器。
//查看service:
[root@docker01 ~]# docker service ls ID NAME MODE REPLICAS IMAGE PORTS ivihvmk98bz5 web1 replicated 1/1 nginx:latest *:80->80/tcp
//查看service信息:
[root@docker01 ~]# docker service ps web1 ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS w9u7bun0cg1f web1.1 nginx:latest docker03 Running Running 4 minutes ago
//创建5个容器:
[root@docker01 ~]# docker service create --replicas 5 --network docker --name web -p 80 nginx:latest
将docker02挂起后:
将docker03挂起后:都到docker01上
但是当docker02和docker03启动后,工作也回不去
//删除容器:
[root@docker01 ~]# docker service rm web1 web1
//增加或减少容器:
[root@docker01 ~]# docker service scale web=8
//设置manager node不参加工作:
[root@docker01 ~]# docker node update --availability drain docker01 docker01
5)搭建私有仓库
docker pull registry:2 docker run -itd --name registry --restart=always -p 5000:5000 -v /registry:/var/lib/registry registry:2 docker pull busybox docker tag busybox:latest 192.168.1.10:5000/busybox vim /usr/lib/systemd/system/docker.service 13行: ExecStart=/usr/bin/dockerd --insecure-registry 192.168.1.10:5000 systemctl daemon-reload systemctl restart docker docker push 192.168.1.10:5000/busybox:latest
6)自定义镜像
要求:基于~]# mkdir {v1,v2,v3} [root@docker01 v1]# cd [root@docker01 ~]# cd v1/ [root@docker01 v1]# cat index.html 1111111111111111111 ##另外v2,v3为222 222 [root@docker01 v1]# cat Dockerfile FROM httpd ADD index.html /usr/local/apache2/htdocs/index.html [root@docker01 v1]# docker build -t 192.168.1.10:5000/. [root@docker01 v1]# docker push 192.168.1.10:5000/v1]# docker service create --replicas 3 --name bdqn -p 80:80 192.168.1.10:5000/service ls查看一下,是否一共有三台bdqn!!!
docker02:
[root@docker02 ~]# docker exec -it 915bb2da7d43 /bin/bash root@915bb2da7d43:/usr/local/apache2# cd htdocs/ root@915bb2da7d43:/usr/local/apache2/htdocs# echo 12345 > index.html [root@docker02 ~]# curl 127.0.0.1 54321
docker03:
[root@docker03 ~]# docker exec -it bdqn.1.kaksxkdur0fhypukm8q2zms3i /bin/bash root@31c5f6af1259:/usr/local/apache2# cd htdocs/ root@31c5f6af1259:/usr/local/apache2/htdocs# echo 54321 > index.html root@31c5f6af1259:/usr/local/apache2/htdocs# exit exit [root@docker03 ~]# curl 127.0.0.1 54321
之后验证:
[root@docker01 ~]# curl 127.0.0.1 1111111111111111111 [root@docker01 ~]# curl 127.0.0.1 12345 [root@docker01 ~]# curl 127.0.0.1 54321
默认的ingress网络,包括创建的自定义overlay网络,为后端真正为用户提供服务的container,提供了一个统一的入口。
服务的扩容与缩容
[root@docker01 ~]# docker service create --replicas 3 --name test -p 80 192.168.1.10:5000/~]# docker service scale bdqn=6
扩容与缩容可以直接通过scale进行设置副本数量。
服务的升级与回滚
升级操作
[root@docker01 ~]# docker service update --image 192.168.1.10:5000/bdqn
//平滑的更新。
[root@docker01 ~]# docker service update --image 192.168.1.10:5000/--update-parallelism 2 --update-delay 1m bdqn
PS:默认情况下,swarm一次只更新一个副本,并且两个副本之间没有等待时间,我们可以通过--update-parallelism设置并行更新的副本数量。
--update-delay:指定滚动更新的时间间隔。
回滚操作
[root@docker01 ~]# docker service rollback bdqn
PS:注意docker swarm的回滚操作,默认只能回滚到上一次操作的状态,并不能连续回滚操作。
小实验:3台docker:docker01 docker02 docker03192.168.1.10 192.168.1.20 192.168.1.30193.部署一个swarm集群,要求3台dockerhost,docker01为manager node,02和03为worker node.三台docker都做:DNS域名解析[root@docker01 ~]# vim /etc/hosts
192.168.1.10 docker01192.168.1.20 docker02192.168.1.30 docker03
初始化:[root@docker01 ~]# docker swarm init --advertise-addr 192.168.1.10
docker02加入群集:[root@docker02 ~]# docker swarm join --token SWMTKN-1-3rtvbfgl70u9fndd02kazcne3ib7zqzfhrx7v1ty2ebmod4ex6-2xe4chwto2m04mcwcn601zn54 192.168.1.10:2377
docker03加入群集:[root@docker03 ~]# docker swarm join --token SWMTKN-1-3rtvbfgl70u9fndd02kazcne3ib7zqzfhrx7v1ty2ebmod4ex6-2xe4chwto2m04mcwcn601zn54 192.168.1.10:2377
需要myvisualizer.tar镜像,可以从网上找将myvisualizer.tar导入docker镜像:[root@docker01 ~]# docker load < myvisualizer.tar
运行myvisualizer.tar[root@docker01 ~]# docker run -d -p 8080:8080 -e HOST=192.168.1.10 -e PORT=8080 -v /var/run/docker.sock:/var/run/docker.sock --name visualizer dockersamples/visualizer
部署一个servcie服务,要求使用节点不参加工作。
需要~]# docker load < ~]# docker network create -d overlay --attachable docker
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~