portainer安装_10 Swarm 的安装和基本的服务编排调度

e1946ad9e5425f52bd83ca36473fa7b3.png

Swarm 的安装和基本的服务编排调度

前提条件:

准备好三台测试用机器:

Ubuntu 18.04/ 1 CPU/ 2GB 内存/ 30GB磁盘

并且安装好Docker

安装Swarm

在master上执行

docker swarm init --advertise-addr 10.0.0.4

d5d9dc86733ad36b3d1f172d96b5e3c1.png

注意:复制docker swarm join --token 整段

在node上执行

docker swarm join --token xxxxxxxxxxxx

539afbbafad12624dfd7db4f40c46e38.png

在master节点上查看node状态

docker node ls

eecfed1511183583f82daf793b437c10.png

部署可视化机架

docker service create

--name=viz

--publish=8000:8080/tcp

--constraint=node.role==manager

--mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock

dockersamples/visualizer

631686f8bf3487a52afcd9810013d5a4.png

访问任一节点的8080端口即可看到visualizer的界面

da914bca7e9b8f2470fa2a323230f6d6.png

部署第一个服务

docker service create --name web_server --publish 80:80 --replicas=3 yeasy/simple-web

55861c3718c8101096b8f98b659d4214.png

在机架上观察副本和节点的对应情况

7a283c9190f167b1cd5316ee70320da1.png

观察服务页面,对比docker第一个实验时该容器的行为,尤其是两段地址,多做几次F5

0b990269fbd385047675fbcf48493675.png

扩展服务

docker service scale web_server=9

be1f28c8009c460a4087d88cab388229.png

同时观察机架上的变化

cb0fb9fe741deb987ac6fea85b981915.png

也可以访问前端页面,看看是否可以把访问请求定向到新的容器副本

排空一个节点,观察failover,如果是基于web的环境,(swarmVM02=worker1)

docker node update --availability drain swarmVM02

a246a05074d794accc381c21c17f1094.png

重新启动之前的节点,如果是基于web的环境,swarmVM02=worker1

docker node update --availability active swarmVM02

扩展服务规模,并且查看节点之间的负载均衡

docker service scale web_server=15

546ac3d5a6322188f604e2b7e28b1cff.png

收缩服务

docker service scale web_server=3

查看服务

docker service ls

f51404e727185a8765c3914902bdce2e.png

删除服务

docker service rm web_server

16ef3116f9271e52ecb494c25a535777.png

4653d64848d38ba8c16c2d0e3d32e553.png

测试服务升级

创建测试服务

docker service create --name my_web --replicas=3 httpd:2.2.31

使用机架观察服务部署情况,需要特别注意容器的版本信息

a0bcdec0816e6a698ba7bd93ee405888.png

2.2.31-->2.2.32

docker service update --image httpd:2.2.32 my_web

使用机架仔细观察升级过程

2565e70306e3dee93a419156707c70fa.png

调整升级行为,服务规模增加到6个副本,每次更新2个副本,间隔时间45s

docker service update --replicas 6 --update-parallelism 2 --update-delay 45s my_web

aa60266438d5664eba718e2a096f677b.png

2.2.32-->2.4.16

docker service update --image httpd:2.4.16 my_web

1cfeaa5c1644d868e0393b45f537a6de.png

请仔细通过机架观察滚动更新过程

滚回

docker service update --rollback my_web

注意:swarm仅支持一次滚回

删除服务

docker service rm my_web

部署stack

创建yml文件

nano wordpress.yml

将以下内容拷贝到yml文件里

version: '3'

services:

db:

image: mysql:5.7

volumes:

- db_data:/var/lib/mysql

restart: always

environment:

MYSQL_ROOT_PASSWORD: somewordpress

MYSQL_DATABASE: wordpress

MYSQL_USER: wordpress

MYSQL_PASSWORD: wordpress

wordpress:

depends_on:

- db

image: wordpress:latest

ports:

- "80:80"

restart: always

environment:

WORDPRESS_DB_HOST: db:3306

WORDPRESS_DB_USER: wordpress

WORDPRESS_DB_PASSWORD: wordpress

volumes:

db_data:

使用stack创建wordpress服务

docker stack deploy -c wordpress.yml wpstack

119f5d8085c167aa8087e8aefd7fb6f3.png

扩展前端

docker service scale wpstack_wordpress=4

7b563e44cdacf05898d281f992dc4e07.png

同时可以借助weavescope检查前端和后端之间的调用情况

c18f4ed03795aa1e84fa521f147efc1a.png

Swarm可视化管理

部署portainer

curl -L https://downloads.portainer.io/portainer-agent-stack.yml -o portainer-agent-stack.yml

docker stack deploy --compose-file=portainer-agent-stack.yml portainer

cdda22285ddad941c86241bd9f4e170e.png

cdd6baf53705d2f316a912d761743bda.png

d0485b4df27b65f5c7e99c51deb65cbc.png

部署Prometheus + Grafana

git clone https://github.com/stefanprodan/swarmprom.git
cd swarmprom

ADMIN_USER=admin
ADMIN_PASSWORD=admin
SLACK_URL=https://hooks.slack.com/services/TOKEN
SLACK_CHANNEL=devops-alerts
SLACK_USER=alertmanager
docker stack deploy -c docker-compose.yml mon

照例访问3000端口的dashboard

1c8fa666596c4a4170d2d1e49a2e842a.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值