高可用(HA)集群之keepalived 安装
大纲
一、HA基础
二、KeepAlived 介绍和基本实现
三、VRRP协议
四、环境准备与安装
什么是HA?
HA(High Available) 高可用性集群,指的是通过一组计算机系统提供透明的冗余处理能力,从而保证系统服务高度的连续可用。
1,HA 通常是软件和硬件相结合的集群方案,是自动且透明的。
2,只有硬件的方案不是HA,那是热备,通常是人工的切换备用机。
3,HA 通常由软件检测故障,一旦故障发生立即切换服务到集群中正常的服务器上,通过提供故障恢复,实现最大化系统和应用的可用性。
4,HA 在故障恢复的切换过程中,会有短暂的服务暂停的过程,因为选取新的服务器,以及资源转移都需要一定的时间,当然这个时间很短。
HA 的几种常见的部署方式
1,主从方式:两台服务器 ,一台为主,另外一台为备份服务器
2,对称方式 :两台服务器,互为备份
3,多机方式:多台服务器,故障时切换至其中一台
HA 的基本实现原理
1:提供虚拟Ip 供外部访问
2:节点之间通过心跳或信息报文来确定健康状态
3:节点之间通讯通常会加密,以防止非法主机加入
Keepalived介绍
Keepalived是一款用于保障服务高可用性的软件,它能自动侦测服务器状态、移出
故障服务器、切换到正常运行的服务器、添加恢复后的服务器到集群中。
实现的基本思路
Keepalived是基于VRRP协议的实现,主要用在IP层、TCP层和应用层。
1:IP层:Keepalived会定期向服务器群中的服务器发送一个数据包(既Ping),如果发现IP地址没有**,Keepalived便报告这台服务器失效,并将它从服务器群中剔除。
2:TCP层:类似IP层,只不过这里是检测服务的端口
3:应用层:Keepalived将根据用户的设定来检查服务程序的运行是否正常
VRRP协议解决的问题
在现实网络中,两台服务器之间通常是没有直接连接的,那么A机如何选择到达B机的路由呢?通常的解决方案有两种:
1:在A机上使用动态路由协议 (问题:管理维护成本、是否支持等)
2:在A机上配置静态路由(问题:路由器或默认的网关成单点、需重启网络等)VRRP协议的目的就是解决路由单点故障问题
VRRP协议
VRRP (Virtual Router Redundancy Protocol),虚拟路由冗余协议,是解决局域网中配置静态网关出现单点故障的路由协议。在具有多播或广播能力的局域网中,借助VRRP能在某台路由器出现故障时仍然提供高可靠的缺省链路,有效避免单一链路发生故障后网络中断的问题,而无需修改动态路由协议、路由发现协议等配置信息。
名词解释
1:VRRP路由器:物理的路由器,上面运行了实现VRRP协议的VRRPD程序
2:VRRP虚拟路由器:逻辑上的路由器,通常由多台路由器组成,可以看成是一个VRRP路由器池,对外看起来是一个路由器,就是那个虚拟的路由器,其标识称为VRID(范围是0-255)
3:Master和Backup:一个虚拟路由里面的多个路由器,并不是同时工作的,工作的那台称为Master,其他的就是Backup。
对VRRP协议的理解
1:VRRP是一种选择协议,它可以把一个虚拟路由器的职责,动态转交给Master进行处理
2:VRRP是一种路由容错协议,也可以叫做备份路由协议。当Master宕掉后,虚拟路由将启用备份路由器,从而实现网络通信可用
VRRP协议工作机制
1:路由器开启VRRP功能后,会根据优先级确定出Master
2:Master会通过IP多播包的形式来发送公告报文,Backup会接收到这些报文
3:如果是抢占式:Backup会跟发送报文的Master比较优先级,如果Backup优先级更高,那么Backup会抢占成为Master,而Master会让位成为Backup
4:如果是非抢占式:只要Master没有故障,不会出现新的Master。
5:如果备份路由器在连续三个公告间隔内收不到VRRP公告,或收到优先级为0的公告的话,就会按照竞选协议来选出新的Master,以保证服务的可用
VRRP负载分担
在实际组网中一般会进行VRRP负载分担方式的设置。负载分担方式是指多台路由器同时承担业务,避免设备闲置。
同一台路由器可以加入多个备份组,在不同组中有不同的优先级,使得该路由器可以在一个组中作为Master,在其他的备份组中作为Backup
Keepalived安装
下载并安装IPVS
1:Keepalived需要IPVS,首先要确保安装了IPVS(IP虚拟服务器,IPVirtual Server,是一种提供负载平衡功能的技术)。
检查是否安装了IPVS:在linux系统任意路经下执行ipvsadm命令
如下图 出现如下 信息 说明已经安装过:
如果没出现上图所示信息 说明需要安装
2:去http://www.linuxvirtualserver.org/software/ipvs.html下载相应的包,注意要跟你的linux内核版本匹配。查看linux版本的命令:cat /proc/version
3:创建一个连接文件,其命令为:ln -sv /usr/src/kernels/2.6.18-194.el5-i686/ /usr/src/linux,注意一定要与当前的运行的内核相一致,因为usr/src/kernels目录下可多个目录。如果不创建这个连接文件,在编译时会出错,从而不能继续进行安装。
4:然后 make , make install ,ipvsadm命令会被安转到 /sbin下面
5:在任意路经下执行ipvsadm命令,检查是否正确安装
下载并安装Keepalived,去http://www.keepalived.org/下载最新的源码包
这里以1.2.15 版本演示
1:解压包, tar zxvf keepalived-1.2.15.tar.gz ,然后进入到解压的文件夹里面 cd keepalived-1.2.15
2:第一步:./configure --prefix=/usr/local/common/keepalived --disable-fwmark
(1)如果出现No SO_MARK declaration in headers 这样的错误提示,可以在命令上添加--disable-fwmark
上图箭头的地方 必须要有
(2)如果要使用lvs,还需要指定内核的目录,也就是添加:--with-kernel-dir=具体的路径,以指定使用内核源码里面的文件
第二步:make 第三步:make install
3:验证安装
(1)到sbin下,执行 ./keepalived 命令
(2)察看进程,ps -ef | grep keepalived ,应该有三种进程,父进程(内存管理,监控子
进程),健康检查子进程,VRRP子进程
(3)察看内核模块ip_vs是否装载到内核空间,lsmod | grep ip_vs
(4)执行tail –f /var/log/messages来查看日志
(5)执行pkill keepalived来关闭keepalived
至此安装完成