Docker Swarm集群

释放双眼,带上耳机,听听看~!

一、Swarm 关键概念

1、Swarm

集群的管理和编排是使用嵌入到 docker 引擎的 SwarmKit,可以在 docker 初始化时启动 swarm 模式或者加入已存在的 swarm

2、Node

一个节点(node)是已加入到 swarm 的 Docker 引擎的实例 当部署应用到集群,你将会提交服务定义到管理节点,接着 Manager管理节点调度任务到 worker 节点,manager 节点还执行维护集群的状态的编排和群集管理功能,worker 节点接收并执行来自

manager 节点的任务。通常,manager 节点也可以是 worker 节点,worker 节点会报告当前状态给 manager 节点

3、服务(Service)

服务是要在 worker 节点上要执行任务的定义,它在工作者节点上执行,当你创建服务的时,你需要指定容器镜像

4、任务(Task)

任务是在 docekr 容器中执行的命令,Manager 节点根据指定数量的任务副本分配任务给 worker 节点
Docker Swarm集群

二、环境准备
3台虚拟机:
系统:Linux Center OS 7
Docker版本: 19.03.1
虚拟机1:192.168.226.145(swarm01)
虚拟机2:192.168.226.146(swarm02)
虚拟机3:192.168.226.147(swarm03)

1、修改主机名
修改主机名


1
2
3
1hostnamectl set-hostname swarm01
2
3

查看主机名


1
2
3
1hostname      
2
3

2、swarm安装


1
2
3
1docker pull swarm
2
3

3、建立集群
swarm01为leader,swarm02、swarm03为节点
3.1 master机器上swarm初始化


1
2
3
1docker swarm init
2
3

命令执行后,该机器自动加入到swarm集群。这个会创建一个集群token,获取全球唯一的 token,作为集群唯一标识。后续将其他节点加入集群都会用到这个token值
Docker Swarm集群
3.2查看该集群相关信息


1
2
3
1docker node ls
2
3

Docker Swarm集群
3.3.节点执行初始化集群时提供的命令
Docker Swarm集群
3.4再次查看集群


1
2
3
1docker node ls
2
3

Docker Swarm集群
3.5 节点离开集群


1
2
3
1docker swarm leave  --froce
2
3

3.6 leader删除节点


1
2
3
1docker node rm
2
3

3.7 再次获取leader上的token信息


1
2
3
1docker swarm join-token manager
2
3

Docker Swarm集群
3.8 查看集群网络


1
2
3
1docker network ls
2
3

Docker Swarm集群

3.9 创建集群网络(用于内部通信)


1
2
3
1docker network create -d  overlay --attachable 网络名称
2
3

再次查看


1
2
3
1docker network ls
2
3

Docker Swarm集群
4、创建服务
4.1创建服务


1
2
3
4
5
1docker service create 服务名
2
3docker service rm 服务名
4
5

参数
–name 服务名
–network 集群网络名称
–mount 数据挂载
–constraint node.hostname==主机名
–env 环境

示例:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
1docker service rm citydew-admin
2docker service create \
3--name citydew-admin \
4--network wushan \
5--mount type=bind,source="$(pwd)"/app.tgz,target=/server/data/app.tgz \
6--constraint node.hostname==master \
7--replicas 1 -p 9055:9055 \
8--log-opt "tag=citydew-admin" \
9--env "downloadURL=file:///server/data/app.tgz"  \
10--env "redis_ip=192.168.11.100" \
11--env "postgresql_ip=192.168.11.100" \
12--env "postgresql_user=ascs" \
13--env "postgresql_pwd=ascs.123456" \
14--env "database_name=ascs_auth" \
15--env "rabbitmq_host=192.168.11.100" \
16--env "rabbitmq_port=5672" \
17--env "rabbitmq_username=ascs" \
18--env "rabbitmq_password=ascs" \
19--env "rabbitmq_virtualHost=/" \
2011.23.254.120:5000/public/openjdk:1.0.0
21
22

给TA打赏
共{{data.count}}人
人已打赏
安全运维

基于spring boot和mongodb打造一套完整的权限架构(三)【抽象实现类和swagger的实现】

2021-12-11 11:36:11

安全运维

Ubuntu上NFS的安装配置

2021-12-19 17:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索