LVS+Keepalived高可用集群

一、高可用集群简介

1、什么是高可用集群

高可用集群(High Availability Cluster,简称HA Cluster),是指以减少服务中断时间为目的的服务器集群技术。它通过保护用户的业务程序对外不间断提供的服务,把因软件、硬件、人为造成的故障对业务的影响降低到最小程度。

2、高可用集群衡量标准

通常用平均无故障时间(MTTF:mean time tofailure)来度量系统的可靠性,用平均故障维修时间(MTTR: meantime to restoration)来度量系统的可维护性。于是可用性被定义为: HA=MTTF/(MTTF+MTTR)*100%。
· 具体HA衡量标准:

描述通俗叫法可用性级别年度停机时间
基本可用性2个999%87.66小时
较高可用性3个999.9%8.8小时
具有故障自动恢复能力的可用性4个999.99%53分钟
极高可用性5个999.999%5分钟

3、自动切换/故障转移(failovwe)

自动切换阶段某一主机如果确认对方故障,则正常主机除继续进行原来的任务,还将依据各种容错备援模式接管预先设定的备援作业程序,并进行后续的程序服务。
通俗地说,即当A无法为客户服务时,系统能够自动地切换,使B能够及时地顶上继续为客户提供服务,且客户感觉不到这个为他提供服务的对象已经更换。
通过上面判断节点故障后,将高可用集群资源(如VIP、httpd等)从该不具备法定票数的集群节点转移到故障转移域(Failover Domain,可以接收故障资源转移的节点)。

4、自动侦测:

自动侦测阶段由主机上的软件通过冗余侦测线,经由复杂的监听程序,逻辑判断,来相互侦测对方运行的情况。
常用的方法是:集群各节点间通过心跳信息判断节点是否出现故障。
(1)脑裂:
· 脑裂简介:
在高可用(HA)系统中,当联系2个节点的“心跳线"断开时,本来为一整体、动作协调的HA系统,就分裂成为2个独立的个体。由于相互失去了联系,都以为是对方出了故障。两个节点上的HA软件像“裂脑人"一样,争抢“共享资源"、争起用服务",就会发生严重后果——或者共享资源被瓜分、2边"服务"都起不来了;或者2边“服务"都起来了,但同时读写"共享存储",导致数据损坏(常见如数据轮询着的联机日志出错)。
· 脑裂产生的原因:
· 常见的解决方案:
1)添加冗余的心跳线
例如:双线条线(心跳线也HA),尽量减少“裂脑"发生几率;
2)启用磁盘锁
正在服务一方锁住共享磁盘,“裂脑"发生时,让对方完全“抢不走"共享磁盘资源。但使用锁磁盘也会有一个不小的问题,如果占用共享盘的一方不主动"解锁",另一方就永远得不到共享磁盘。现实中假如服务节点突然死机或崩溃,就不可能执行解锁命令。后备节点也就接管不了共享资源和应用服务。于是有人在HA中设计了“智能"锁。即:正在服务的一方只在发现心跳线全部断开(察觉不到对端)时才启用磁盘锁。平时就不上锁了。
3)设置仲裁机制
例如设置参考IP(如网关IP或某一个服务器),当心跳线完全断开时,2个节点都各自ping一下参考IP,不通则表明断点就出在本端。不仅“心跳"、还兼对外“服务"的本端网络链路断了,即使启动(或继续)应用服务也没有用了,那就主动放弃竞争,让能够ping通参考IP的一端去起服务。更保险一些,ping不通参考IP的一方干脆就自我重启,以彻底释放有可能还占用着的那些共享资源:

4)裂脑的监控报警

5、其他高可用方案:heartbeat、pacemaker、piranha (web页面)

二、Keepalived

1、什么是keepalived

· keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单点故障。

2、Keepalived的工作原理

· keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router RedundancyProtocol,即虚拟路由冗余协议。
将N台提供相同功能的服务器组成一个服务器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该服务器所在局域网内其他机器的默认路由为该vip) , master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master
· 组播:lPV4总共三种通信方式:单播,组播,广播。组播是指以224.0.0.0地址作为通信地址的一种方式。

3、Vrrp协议(略)

4、Keepalived的主要三个模块

分别是core、checkvrrp
· core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。
· check负责健康检查,包括常见的各种检查方式。
· vrrp模块是来实现VRRP协议的。

三、实战案例1:

1、准备环境:

Server1:  192.168.100.131
Server2:  192.168.100.133
VIP:     192.168..100.140

2、操作步骤:
·sever1:
(1)在server1上安装keepalived:
在这里插入图片描述
(2)编辑keepalived的配置文件:清空配置文件里面的所有内容:
在这里插入图片描述
(注意:“! Configuration File for keepalived”是keepalived的文档说明,一定要在第一行 )
在这里插入图片描述
(红框表示与主服务器不同的配置)
(3)启动keepalived.service:
在这里插入图片描述
(4)安装nginx:
在这里插入图片描述
(5)修改一下nginx网页中的内容,等下方便识别:
在这里插入图片描述
在这里插入图片描述
(6)启动nginx、keepalived:
在这里插入图片描述
在这里插入图片描述
(7)真机访问192.168.100.131:
在这里插入图片描述
· server2:
(1)在server2上安装keepalived:
在这里插入图片描述
(2)编辑keepalived的配置文件:清空配置文件里面的所有内容:
在这里插入图片描述
在这里插入图片描述
(3)安装nginx:
在这里插入图片描述
(4)修改一下nginx网页中的内容,等下方便识别:
在这里插入图片描述
在这里插入图片描述
(5)启动nginx:
(6)访问:
在这里插入图片描述
(7)启动keepalived:
在这里插入图片描述
(8)测试:访问VIP:
在这里插入图片描述
断开主服务器的网络连接之后访问:
在这里插入图片描述
3、关于keepalived对nginx状态未知的问题
·Keepalived是个网络层面的协议问题,它只关心这台机器的IP在不在,但是如果这台机器的服务停了keepalived是无感知的
4、解决方案:使keepalived与某个程序产生关联(这里以nginx为例)
(1)添加nginx监控脚本:
在这里插入图片描述
在这里插入图片描述
给权限
在这里插入图片描述
这个脚本每个服务器都要做
所以我们给另外一个服务器传过去:
在这里插入图片描述
也给权限:
在这里插入图片描述
(2)编辑配置文件:
· 注意刚才我们的配置文件注释的地方:现在我们把注释给取消掉:
呃…:下图的global{}配置中应该是“router_id”,少写了一个r
在这里插入图片描述
“chk_nginx”对应上面的策略名(vrrp_script chk_nginx)
(Sever2的的配置文件也要记得取消注释哦~)
(3)测试:
1)把sever1的nginx停掉:
在这里插入图片描述
2)重启keepalived:
在这里插入图片描述
3)查看nginx状态:
在这里插入图片描述
· 可以使用crontab制定周期任务定期去执行这个脚本。当然也可以用zabbix进行监控。

四、实战案例2:

· LVS+keepalived集群:
在这里插入图片描述
1、准备环境:

192.168.100.131   DR1        负载均衡器     master
192.168.110.134	  DR2        负载均衡器	  backup
192.168.100.135	  rs1		   web1
192.168.100.136   rs2		   web2

2、在master上安装配置keepalived:
在这里插入图片描述
提示:ipvsadm不用启动
3、在master上修改配置文件:(老规矩,先删除文件里面的内容):
在这里插入图片描述
4、在backup上安装keepalived:
在这里插入图片描述
5、拷贝master上的keepalived.conf到backup上:
在这里插入图片描述
6、拷贝后,修改配置文件:
需要修改的有:
(1)router_id Director 2
(2)State BACKUP
(3)Priority 120
在这里插入图片描述
7、启动master和backup的keepalived服务:
在这里插入图片描述
8、重启这两塔机器:reboot
9、web服务器配置(两台web服务器配置相同)
(1)安装apache:
在这里插入图片描述
(2)启动Apache:
在这里插入图片描述
查看端口:
在这里插入图片描述
(3)配置虚拟IP:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(4)重启网卡:
在这里插入图片描述
(5)配置路由:
在这里插入图片描述
在这里插入图片描述
(6)配置ARP:
在这里插入图片描述
在这里插入图片描述
(7)重启机器:reboot
(8)查看master:
在这里插入图片描述
10、测试:
访问192.168.100.150:
在这里插入图片描述
如果19.168.100.131断开连接,192.168.100.134马上就会政变:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值