keepalived介绍
keepalived作为高可用集群的一种实现方式,相对于proxy和heartbeat轻量得多,而集群根据实现的功能不同可以分为3种:
1.HA(high available)集群:由一组对外提供相同服务的设备组成,组内每一台设备故障不会影响到服务的正常提供。
2.LB(load balance)集群:有2个或2个以上的设备分摊用户请求。
3.HP(high poformance)集群:由一组设备组成,对外提供高计算和存储性能。
HA和LB的进群于大多场景都有应用,而HP集群除非是计算天气等场景企业中很少会用到。
keepalived实现方式
keepalived是vrrp(virtual route redundant protocol)协议的软件实现方式,vrrp协议是为了避免网络设备成为单点故障而产生的一种协议,其结构如下:
2个设备分别在接口上配置地址1和地址2,创建一个vrrp实例,将每个设备上vrrp实例配置段中虚拟路由ID号设为相同,确保2台设备处于同一vrrp实例中,将地址3配置给该实例对外提供服务,客户端通过vrrp实例向系统发出请求。地址3同一时间只能在其中1个设备的接口或别名上生效,具体在哪个设备上生效,需要根据设备上vrrp实例配置段中优先级来决定。这种方案的特点是1台设备始终处于备机状态。为了避免1台设备始终处于备机状态,于是产生了第2种结构:
类似上述方法创建2个vrrp实例,让使用地址3的实例在地址1服务器上拥有高优先级,而使用地址4的实例在地址2服务器上拥有高优先级,这样2台服务器同时工作且互为备份,即双主模式,通过DNS上添加多条A记录的方法使客户端的访问分散到不同的服务器上。具体到实际场景,还可分为多种情况,后面再做作介绍。
keepalived安装
keepalive可以直接通过yum进行安装,安装过程不再赘述,通过rpm -qc可以看到keepalived服务的2个配置文件
keepalived.conf文件由全局配置段、vrrp实例配置段以及virtual_server配置段,其中virtual_server配置段中可以直接定义LVS的规则,定义方法后面再介绍。全局配置段如下图所示:
上图中红框的地址设置了收件人和发件人的邮箱地址,router_id是使用字符串给这台主机做标记,可以使用主机名,下图是vrrp实例配置段
vrrp_instance定义了实例名称;virtual_router_id使用同一实例的id号必须相同;
priority定义了该主机的优先级;authentication访问vrrpd的密码,最大8位,所有主机密码要相同;virtual_ipaddress对外提供服务的地址。
安装完成后,找不到keepalived的日志文件,从/etc/sysconfig/keepalived配置文件中得知keepalived默认使用的是LOG_DAEMON
而/etc/rsyslog.conf配置文件中并没有设置LOG_DAEMON的记录位置,在rsyslog.conf文件中添加记录local3的日志位置,重启rsyslog服务
将keepalived配置文件中日志改为本地设备,再重启keepalived服务,就能看到日志了
补充说明
keepalived默认工作在抢占模式下,即谁的优先级高,谁成为MASTER。非抢占模式只能配置在BACKUP角色的主机上,配置后即使BACKUP的优先级调高也不会抢夺MASTER角色,不过此处有个特殊情况:如果BACKUP角色配置完nopreempt后再将优先级调至大于MASTER的时候,角色不会发生转移,但是如果此时MASTER掉线后,再重新上线,尽管BACKUP配置了nopreempt,由于他的优先级比MASTER高,所以除非BACKUP掉线否则不会将MASTER角色还给MASTER主机