什么是docker集群
不同服务实例,来共同提供服务的一组集合,集群
集群类型
1、先看两个集群例子:nginx集群,redis集群
2、然后总结
1、对称集群
不同服务实例,功能地位相等(每一个实例提供的功能机会相同)
定位:数据计算
2、非对称集群
不同服务实例,功能地位不相等(每一个实例提供功能的机会不相同)
定位:数据存储
什么是docker集群
接下来,考一下大家,大家认为docker集群是个什么集群
总结
1、docker集群是非对称集群
为什么要使用docker集群
从docker集群图来进行分析,docker里面运行着容器,如果docker宕机?
docker容器对外提供 访问,如果访问量越大,一台docker的并发量毕竟有限
总结:
1、单点故障问题
2、性能问题
所以为了解决这两个问题,就出现了docker集群
实现docker集群方式
1、swarm
2、k8s
但是我们今天只会讲解swarm,今天我们选择swarm
选择原因
1、swarm是docker官方提供的集群工具
2、k8s是谷歌开发的
3、k8s理解使用起来比较难
swarm如何管理docker集群
swarm是什么,怎么理解?
swarm 就好比是地铁购票机安装员。同理swarm就是地铁购票机安装员
Docker Swarm 是 Docker 的集群管理工具。它将 Docker 主机池转变为单个虚拟 Docker 主机。 Docker Swarm 提供了标准的 Docker API,所有任何已经与 Docker 守护程序通信的工具都可以使用 Swarm 轻松地扩展到多个主机。
swarm内部概念
1、node节点概念
就是将集群的docker通过node分配角色的方式进行维护
node 就是docker的别名,就好比,我们去公司上班,每一个人都有一个工号,工号就是我们的别名,那么node就是docker的别名,但是node有两个类型,manager 和work,就是讲docker分成了两类,就好比,公司里面有老板和员工,manager就是老板,work就是员工,老板是管理的,员工是干事的。有时候人工不够的时候,老板也过来干事。
swarm如何创建docker集群
条件
1、两台以上docker主机
2、docker swarm
步骤
1、安装两台docker主机,使用linux或者centos7.0以上
安装1.12 版本以上的docker,会在主机上默认提供支持
2、如何使用docker swarm?
1、输出docker命令,会看到有一个swarm管理命令
docker swarm
2、然后输入docker swarm 命令
可以看到很多的帮助命令
3、创建集群管理节点
docker swarm init --advertise-addr 123.57.164.54 (创建老板===manager) 创建成功后提示一个创建工作节点(员工===worker的命令) 把这个命令复制到另外一个docker主机上运行
4、创建工作节点 (复制到另外一个docker主机上运行)
docker swarm join --token SWMTKN-1-2bomg3tb4cs8f5g7oqrw34k1mql9i0tr2msn8leqyphgac5hct-db4iwy32sdr6m0bmqyhi47jyn 123.57.164.54:2377
5、查看集群消息,查看工作节点和管理节点
docker info
工作节点 (worker)
1、提供容器服务
swarm是如何操作集群节点容器的?
在使用之前我们必须要准备一些概念,这些概念是swarm的核心,掌握了这些概念,就已经理解了swarm 50%
后面都是基于这些概念的操作
service是什么?(类似部门经理)
是指不同节点容器集合,用来维护容器 (用来创建集群的容器)
task是什么?
在集群环境中,用来运行容器
stack是什么?
是指stack的集合,用来维护service
swarm集群中如何管理容器?
使用service 你们想一下,公司除了人工还有什么,是不是还有部分经理,那么service就是部分经理
就好比公司的部门经理
条件
1、rmcore镜像
2、nginx镜像
3、docker service
步骤
1、查看rmcore镜像和nginx镜像
使用rmcore镜像来进行集群服务部署
2、 如何使用docker service?
1、输出docker命令,会看到有一个service管理命令
docker service
2、然后输入docker service命令
可以看到很多的帮助命令
3、创建服务 (所有的操作在管理节点中操作)
docker service create --replicas 1 -- name rmcoreservice rmcore
--replicas 配置服务副本(容器在不同节点启动)
--name 服务名称
4、列表服务
docker service ls
5、查看服务运行在哪个节点
docker service ps rmcore-service
6、查看服务部署详细信息
docker service inspect --pretty rmcoreservice
7、服务扩展(向其他节点添加服务副本)
docker service scale rmcoreservice=2
8、删除服务
docker service rm rmcoreservice
9、服务如何进行外部访问
docker service create --replicas 1 -- name --publish 6066:80 rmcoreservice
--publish 发布端口例如 6066:80
10、进行网络访问
111.229.181.115:6066
123.57.164.54:606699-6
swarm集群中如何管理不同容器?
使用stack 你们想一下,公司除了人工,是不是还有部门经理,还有什么,就是总经理,那么stack 就是总经理
用来管理部门经理
条件
1、rmcore镜像
2、nginx镜像
3、docker-compose.yml
4、stack
1、查看rmcore镜像和nginx镜像
使用rmcore镜像来进行集群服务部署
2、 如何使用docker stack?
1、输出docker命令,会看到有一个service管理命令
docker stack
2、然后输入docker stack命令
有很多的帮助命令
3、创建堆栈(服务集合)
1、创建一个stack目录(在当前目录/root下创建一个stack)
mkdir stack
2、配置yml文件
在原有docker.compose.yml增加配置
version: '3.4'
deploy: #集群模式配置 mode: replicated #配置副本模式,gloab replicas: 2 # 副本份数
附件
6、stack docker-compose.yml文件?
deploy
可以选参数:
endpoint_mode:访问集群服务的方式。
endpoint_mode: vip
# Docker 集群服务一个对外的虚拟 ip。所有的请求都会通过这个虚拟 ip 到达集群服务内部的机器。
endpoint_mode: dnsrr
# DNS 轮询(DNSRR)。所有的请求会自动轮询获取到集群 ip 列表中的一个 ip 地址。
labels:在服务上设置标签。可以用容器上的 labels(跟 deploy 同级的配置) 覆盖 deploy 下的 labels。
mode:指定服务提供的模式。
replicated:复制服务,复制指定服务到集群的机器上。
global:全局服务,服务将部署至集群的每个节点。
replicas:mode 为 replicated 时,需要使用此参数配置具体运行的节点数量。
resources:配置服务器资源使用的限制,例如上例子,配置 redis 集群运行需要的 cpu 的百分比 和 内存的占用。避免占用资源过高出现异常。
restart_policy:配置如何在退出容器时重新启动容器。
condition:可选 none,on-failure 或者 any(默认值:any)。
delay:设置多久之后重启(默认值:0)。
max_attempts:尝试重新启动容器的次数,超出次数,则不再尝试(默认值:一直重试)。
window:设置容器重启超时时间(默认值:0)。
rollback_config:配置在更新失败的情况下应如何回滚服务。
parallelism:一次要回滚的容器数。如果设置为0,则所有容器将同时回滚。
delay:每个容器组回滚之间等待的时间(默认为0s)。
failure_action:如果回滚失败,该怎么办。其中一个 continue 或者 pause(默认pause)。
monitor:每个容器更新后,持续观察是否失败了的时间 (ns|us|ms|s|m|h)(默认为0s)。
max_failure_ratio:在回滚期间可以容忍的故障率(默认为0)。
order:回滚期间的操作顺序。其中一个 stop-first(串行回滚),或者 start-first(并行回滚)(默认 stop-first )。
update_config:配置应如何更新服务,对于配置滚动更新很有用。
parallelism:一次更新的容器数。
delay:在更新一组容器之间等待的时间。
failure_action:如果更新失败,该怎么办。其中一个 continue,rollback 或者pause (默认:pause)。
monitor:每个容器更新后,持续观察是否失败了的时间 (ns|us|ms|s|m|h)(默认为0s)。
max_failure_ratio:在更新过程中可以容忍的故障率。
order:回滚期间的操作顺序。其中一个 stop-first(串行回滚),或者 start-first(并行回滚)(默认stop-first)
3、创建stack
docker stack deploy -c docker-compose.yml rmstack
-c 是指定docker-compose.yml文件
rmcorestack 指定stack 标识(名称)
4、查看stack列表
docker stack ls
5、查看stack 服务列表信息
docker stack ps rmstack
或者 docker service ls
5、删除stack
docker stack rm rmstack
通过两个节点查看,所有的信息是否删除
version: '3'
services:
rmcore:
image: rmcore
ports:
- 8088:80
- 8089:443
deploy:
mode:
replicated
replicas: 2
nginx:
image: nginx
ports:
- 8090:80
deploy:
mode:
replicated
replicas: 2
不同服务实例,来共同提供服务的一组集合,集群
集群类型
1、先看两个集群例子:nginx集群,redis集群
2、然后总结
1、对称集群
不同服务实例,功能地位相等(每一个实例提供的功能机会相同)
定位:数据计算
2、非对称集群
不同服务实例,功能地位不相等(每一个实例提供功能的机会不相同)
定位:数据存储
什么是docker集群
接下来,考一下大家,大家认为docker集群是个什么集群
总结
1、docker集群是非对称集群
为什么要使用docker集群
从docker集群图来进行分析,docker里面运行着容器,如果docker宕机?
docker容器对外提供 访问,如果访问量越大,一台docker的并发量毕竟有限
总结:
1、单点故障问题
2、性能问题
所以为了解决这两个问题,就出现了docker集群
实现docker集群方式
1、swarm
2、k8s
但是我们今天只会讲解swarm,今天我们选择swarm
选择原因
1、swarm是docker官方提供的集群工具
2、k8s是谷歌开发的
3、k8s理解使用起来比较难
swarm如何管理docker集群
swarm是什么,怎么理解?
swarm 就好比是地铁购票机安装员。同理swarm就是地铁购票机安装员
Docker Swarm 是 Docker 的集群管理工具。它将 Docker 主机池转变为单个虚拟 Docker 主机。 Docker Swarm 提供了标准的 Docker API,所有任何已经与 Docker 守护程序通信的工具都可以使用 Swarm 轻松地扩展到多个主机。
swarm内部概念
1、node节点概念
就是将集群的docker通过node分配角色的方式进行维护
node 就是docker的别名,就好比,我们去公司上班,每一个人都有一个工号,工号就是我们的别名,那么node就是docker的别名,但是node有两个类型,manager 和work,就是讲docker分成了两类,就好比,公司里面有老板和员工,manager就是老板,work就是员工,老板是管理的,员工是干事的。有时候人工不够的时候,老板也过来干事。
swarm如何创建docker集群
条件
1、两台以上docker主机
2、docker swarm
步骤
1、安装两台docker主机,使用linux或者centos7.0以上
安装1.12 版本以上的docker,会在主机上默认提供支持
2、如何使用docker swarm?
1、输出docker命令,会看到有一个swarm管理命令
docker swarm
2、然后输入docker swarm 命令
可以看到很多的帮助命令
3、创建集群管理节点
docker swarm init --advertise-addr 123.57.164.54 (创建老板===manager) 创建成功后提示一个创建工作节点(员工===worker的命令) 把这个命令复制到另外一个docker主机上运行
4、创建工作节点 (复制到另外一个docker主机上运行)
docker swarm join --token SWMTKN-1-2bomg3tb4cs8f5g7oqrw34k1mql9i0tr2msn8leqyphgac5hct-db4iwy32sdr6m0bmqyhi47jyn 123.57.164.54:2377
5、查看集群消息,查看工作节点和管理节点
docker info
工作节点 (worker)
1、提供容器服务
swarm是如何操作集群节点容器的?
在使用之前我们必须要准备一些概念,这些概念是swarm的核心,掌握了这些概念,就已经理解了swarm 50%
后面都是基于这些概念的操作
service是什么?(类似部门经理)
是指不同节点容器集合,用来维护容器 (用来创建集群的容器)
task是什么?
在集群环境中,用来运行容器
stack是什么?
是指stack的集合,用来维护service
swarm集群中如何管理容器?
使用service 你们想一下,公司除了人工还有什么,是不是还有部分经理,那么service就是部分经理
就好比公司的部门经理
条件
1、rmcore镜像
2、nginx镜像
3、docker service
步骤
1、查看rmcore镜像和nginx镜像
使用rmcore镜像来进行集群服务部署
2、 如何使用docker service?
1、输出docker命令,会看到有一个service管理命令
docker service
2、然后输入docker service命令
可以看到很多的帮助命令
3、创建服务 (所有的操作在管理节点中操作)
docker service create --replicas 1 -- name rmcoreservice rmcore
--replicas 配置服务副本(容器在不同节点启动)
--name 服务名称
4、列表服务
docker service ls
5、查看服务运行在哪个节点
docker service ps rmcore-service
6、查看服务部署详细信息
docker service inspect --pretty rmcoreservice
7、服务扩展(向其他节点添加服务副本)
docker service scale rmcoreservice=2
8、删除服务
docker service rm rmcoreservice
9、服务如何进行外部访问
docker service create --replicas 1 -- name --publish 6066:80 rmcoreservice
--publish 发布端口例如 6066:80
10、进行网络访问
111.229.181.115:6066
123.57.164.54:606699-6
swarm集群中如何管理不同容器?
使用stack 你们想一下,公司除了人工,是不是还有部门经理,还有什么,就是总经理,那么stack 就是总经理
用来管理部门经理
条件
1、rmcore镜像
2、nginx镜像
3、docker-compose.yml
4、stack
1、查看rmcore镜像和nginx镜像
使用rmcore镜像来进行集群服务部署
2、 如何使用docker stack?
1、输出docker命令,会看到有一个service管理命令
docker stack
2、然后输入docker stack命令
有很多的帮助命令
3、创建堆栈(服务集合)
1、创建一个stack目录(在当前目录/root下创建一个stack)
mkdir stack
2、配置yml文件
在原有docker.compose.yml增加配置
version: '3.4'
deploy: #集群模式配置 mode: replicated #配置副本模式,gloab replicas: 2 # 副本份数
附件
6、stack docker-compose.yml文件?
deploy
可以选参数:
endpoint_mode:访问集群服务的方式。
endpoint_mode: vip
# Docker 集群服务一个对外的虚拟 ip。所有的请求都会通过这个虚拟 ip 到达集群服务内部的机器。
endpoint_mode: dnsrr
# DNS 轮询(DNSRR)。所有的请求会自动轮询获取到集群 ip 列表中的一个 ip 地址。
labels:在服务上设置标签。可以用容器上的 labels(跟 deploy 同级的配置) 覆盖 deploy 下的 labels。
mode:指定服务提供的模式。
replicated:复制服务,复制指定服务到集群的机器上。
global:全局服务,服务将部署至集群的每个节点。
replicas:mode 为 replicated 时,需要使用此参数配置具体运行的节点数量。
resources:配置服务器资源使用的限制,例如上例子,配置 redis 集群运行需要的 cpu 的百分比 和 内存的占用。避免占用资源过高出现异常。
restart_policy:配置如何在退出容器时重新启动容器。
condition:可选 none,on-failure 或者 any(默认值:any)。
delay:设置多久之后重启(默认值:0)。
max_attempts:尝试重新启动容器的次数,超出次数,则不再尝试(默认值:一直重试)。
window:设置容器重启超时时间(默认值:0)。
rollback_config:配置在更新失败的情况下应如何回滚服务。
parallelism:一次要回滚的容器数。如果设置为0,则所有容器将同时回滚。
delay:每个容器组回滚之间等待的时间(默认为0s)。
failure_action:如果回滚失败,该怎么办。其中一个 continue 或者 pause(默认pause)。
monitor:每个容器更新后,持续观察是否失败了的时间 (ns|us|ms|s|m|h)(默认为0s)。
max_failure_ratio:在回滚期间可以容忍的故障率(默认为0)。
order:回滚期间的操作顺序。其中一个 stop-first(串行回滚),或者 start-first(并行回滚)(默认 stop-first )。
update_config:配置应如何更新服务,对于配置滚动更新很有用。
parallelism:一次更新的容器数。
delay:在更新一组容器之间等待的时间。
failure_action:如果更新失败,该怎么办。其中一个 continue,rollback 或者pause (默认:pause)。
monitor:每个容器更新后,持续观察是否失败了的时间 (ns|us|ms|s|m|h)(默认为0s)。
max_failure_ratio:在更新过程中可以容忍的故障率。
order:回滚期间的操作顺序。其中一个 stop-first(串行回滚),或者 start-first(并行回滚)(默认stop-first)
3、创建stack
docker stack deploy -c docker-compose.yml rmstack
-c 是指定docker-compose.yml文件
rmcorestack 指定stack 标识(名称)
4、查看stack列表
docker stack ls
5、查看stack 服务列表信息
docker stack ps rmstack
或者 docker service ls
5、删除stack
docker stack rm rmstack
通过两个节点查看,所有的信息是否删除
version: '3'
services:
rmcore:
image: rmcore
ports:
- 8088:80
- 8089:443
deploy:
mode:
replicated
replicas: 2
nginx:
image: nginx
ports:
- 8090:80
deploy:
mode:
replicated
replicas: 2