failover swarm 故障转移
#故障转移 Failover
#当其中一个节点关闭宕机时,其节点中的service会转移到另一个节点上。
Swarm会检测到node1发生故障并把此故障节点的状态标记为Down; docker node ls 可查看 node1的STATUS 为Down
同时 Swarm会把node1上的service调度到其它有资源的节点上来运行;docker service ps web_server 可查看其过程和状态
#访问server
#便于分析,重新部署一个
docker service create --name=htdocs_nginx --replicas=3 nginx
docker service ps htdocs_nginx 可查看副本数
--replicas可直接指定副本数 ,不需要再用docker scale命令
#现在我们要访问server
在以上操作中,我们每个节点都有运行service, node1、node2、node3 容器里是监听80端口的,但我们并没有映射端口到Host,所以要进行以下操作
#进入容器查看:
docker exec 容器ID /bin/sh 也可使用 /bin/bash
容器IP 为172.12.0.5, 实际上连接的是Docker的bridge网络
crul 172.12.0.5 可以访问
但是这是在容器内部,需要实现在外部也可访问,也就时暴露80端口
#外部访问
docker service update --publish-add 80:80 htdocs_nginx
这样就映射端口了,外部也可访问。
当然新建service时也可直接指定
docker service create --name htdocs_nginx --replicas=3 --publish-add 80:80 nginx
#routing mesh
我们访问每个节点的80端口都可以返回结果; swarm 内部的 load balancer 会将请求转发给 web_server 其中的一个副本。这就是 routing mesh 的作用。
注:当我们使用 --publish-add 80:80 时 swarm会重新配置副本,容器内的网络就会发生改变
器的网络与 --publish-add 之前已经大不一样了,现在有两块网卡,每块网卡连接不同的 Docker 网络。
实际上:
eth0 连接的是一个 overlay 类型的网络,名字为 ingress,其作用是让运行在不同主机上的容器可以相互通信。
eth1 连接的是一个 bridge 类型的网络,名字为 docker_gwbridge,其作用是让容器能够访问到外网。
ingress 网络是 swarm 创建时 Docker 为自动我们创建的,swarm 中的每个 node 都能使用 ingress。
通过 overlay 网络,主机与容器、容器与容器之间可以相互访问;同时,routing mesh 将外部请求路由到不同主机的容器,
从而实现了外部网络对 service 的访问。
#service与service通信 内部的
为了不暴露端口 增加安全性 ,我们可以用一下方法:
服务发现:
如果不 publish,那么 swarm 就要提供一种机制,能够:
让 service 通过简单的方法访问到其他 service。
当 service 副本的 IP 发生变化时,不会影响访问该 service 的其他 service。
当 service 的副本数发生变化时,不会影响访问该 service 的其他 service。
这其实就是服务发现(service discovery)。Docker Swarm 原生就提供了这项功能,通过服务发现,
service 的使用者不需要知道 service 运行在哪里,IP 是多少,有多少个副本,就能与 service 通信。
#创建overlay网络
docker network create --driver overlay app_net
docker network ls
#部署
docker service create --name my_web --replicas=5 --network app_net nginx
docker service create --name database --network app_net mysql
docker service ps database 查看容器 然后进入容器
docke exec 容器ID /bin/sh ping my_web 发现可通
同时ping所得到的my_webIP是VIP 虚拟IP ,swarm 会将对 VIP 的访问负载均衡到每一个副本。
failover swarm 故障转移的更多相关文章
- 同一域环境下SQLServer DB Failover故障转移配置详解
前 言: 很多情况下,虽然我们的站点.APIService.Redis等已经做成了分布式架构,但是SQLServer依然还是单体结构,当出现网络异常.服务器宕机时便存在极大的风险,这时候我们需要 ...
- 第7章 性能和可靠性模式 Failover Cluster(故障转移群集)
上下文 您已经决定在设计或修改基础结构层时使用群集以提供高度可用的服务. 问题 您应该如何设计一个高度可用的基础结构层,来防止因单台服务器或它所运行的软件出现故障而导致的服务丢失? 影响因素 在设计高 ...
- Oracle Dataguard故障转移(failover)操作
注意:故障转移会破坏DG的主从关系,使其变为互不相关的2个数据库,谨慎使用. (一)故障转移操作流程图 (二)故障转移操作流程 备注:以下操作步骤与上面流程图步骤一一对应 STEP1:刷新所有未发送到 ...
- Oracle DataGuard故障转移(failover)后使用RMAN还原失败的主库
(一)DG故障转移后切换为备库的方法 在DG执行故障转移之后,主库与从库的关系就被破坏了.这个时候如果要恢复主从关系,可以使用下面的3种方法: 将失败的主库重新搭建为备库,该方法比较耗时: 使用数据库 ...
- 在Windows Server 2012 R2中搭建SQL Server 2012故障转移集群
需要说明的是我们搭建的SQL Server故障转移集群(SQL Server Failover Cluster)是可用性集群,而不是负载均衡集群,其目的是为了保证服务的连续性和可用性,而不是为了提高服 ...
- 在Azure上实现Linux Server故障转移
要充分利用公有云的弹性扩展和高可用, 首先要在应用系统层面支持横向扩展(scale out),这个说起来很容易,或者说对新开发的应用系统而言已经成为标配.但是对已有的.老旧的应用系统来说,这就比较困难 ...
- Hyper-V 2012 R2 故障转移群集
和终端用户相比,企业用户对于业务的连续性和可靠性更为在意.相对而言,企业一般不会将追逐单一硬件的性能排在第一位. 如何衡量业务是否持续可用,一般使用"x 个 9"这种方式来定义.如 ...
- Apache ActiveMQの版本更迭和Apache ActiveMQの故障转移
本文描述apache activemq 版本更迭的原因以及Apache ActiveMQのThe Failover Transport new features in 5.2.0 1.对信息的传输/ ...
- 为什么很多人用keepalived来实现redis故障转移
目前,Redis还没有一个类似于MySQL Proxy或Oracle RAC的官方HA方案.Redis作者有一个名为Redis Sentinel的计划 ,据称将会有监控,报警和自动故障转移三大功能,非 ...
随机推荐
- Linux查看硬件等基本参数
http://www.cnblogs.com/xd502djj/archive/2011/02/28/1967350.html
- scoketio
服务器代码let net = require('net'); // 创建服务器 let server = net.createServer(); // 定义一个数组 ,存放每一个连接服务器的客户端用户 ...
- JavaScript中变量、执行环境、作用域与C#中的异同
首先需要明确一个执行环境的概念,执行环境这个概念是用来理解作用域的,在js中,执行环境分为全局执行环境和局部(function)执行环境,而在C#这类的C类语言中,还有一个块级别的执行环境,如if语句 ...
- Windows10 等 administrator 打开IE 或者edge的方法
gpedit.msc 组策略处理即可
- Day 4-1 模块的导入方法和路径
什么是模块? 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码 ...
- 莫烦theano学习自修第十天【保存神经网络及加载神经网络】
1. 为何保存神经网络 保存神经网络指的是保存神经网络的权重W及偏置b,权重W,和偏置b本身是一个列表,将这两个列表的值写到列表或者字典的数据结构中,使用pickle的数据结构将列表或者字典写入到文件 ...
- Vue簡介
vue使用由下向上的增量開發模型: vue是javascript的漸進框架: vue的目標是盡量使用簡單的API實現響應的數據綁定和組合的視圖組件.
- shell命令相关
1.服务端登录退出 登录服务器 ssh kayan.sjc@xx.xx.xx.67 退出登录:logout 192.168.0.10 2.目录管理 显示目录 pwd 创建目录 mkdir resour ...
- LODOP中预览界面查看打印机的可打区域具体值
LODOP在打印预览的时候,如果选择的打印机是真实打印机,会发现可能会有虚线,不同打印机虚线的位置不同,这个虚线是打印机的可打区域,Lodop无法控制. 可打区域,顾名思义,就是打印机可以打印的区域, ...
- Military Problem CodeForces 1006E (dfs序)
J - Military Problem CodeForces - 1006E 就是一道dfs序的问题 给定一个树, 然后有q次询问. 每次给出u,k, 求以u为根的子树经过深搜的第k个儿子,如果一个 ...