一,keepalived介绍
keepalived是一个可以实现某些资源高可用的开源软件,其主要的组件包括core,check,vrrp,libipfwc,libipvs,这里说下各个组件的功能。
core:keepalived的核心组件,负责主进程的启动和维护以及加载解析配置文件等。
check:负责healthchecker,负责各种健康检查方式,和对应的配置解析以及LVS的配置解析。
vrrp:vrrpd的子进程。
libipfwc:结合iptables的ipchains库来使用。
libipvs:结合LVS使用。
keepalived启动后会生成3个进程,master主进程,VRRP子进程,healthchecker子进程。
VRRP协议是实现keepalived高可用的一个基础,下面说一下VRRP的实现原理:
VRRP虚拟路由(VRRP router),VRRP是一个“选举”协议,它能够动态地将一个虚拟路由器的责任指定至同一个VRRP组中的其它路由器上,VRRP的优势:
冗余:可以使用多个路由器设备作为LAN客户端的默认网关,大大降低了默认网关成为单点故障的可能性;
负载共享:允许来自LAN客户端的流量由多个路由器设备所共享;
多VRRP组:在一个路由器物理接口上可配置多达255个VRRP组;
多IP地址:基于接口别名在同一个物理接口上配置多个IP地址,从而支持在同一个物理接口上接入多个子网;
抢占:在master故障时允许优先级更高的backup成为master;
通告协议:使用IANA所指定的组播地址224.0.0.18进行VRRP通告;
VRRP追踪:基于接口状态来改变其VRRP优先级来确定最佳的VRRP路由器成为master;
二,实验环境:
192.168.30.116 OS:CentOS 6.4 x86_64 master.luojianlong.com
192.168.30.117 OS:Centos 6.4 x86_64 backup.luojianlong.com
keepalived版本:keepalived-1.2.7
首先,分别在2台服务器上,安装keepalived,haproxy,由于系统版本是Centos 6.4,这2个软件已经被整合在内部了,所以使用yum来安装
[root@master ~]# yum -y install keepalived haproxy
[root@backup ~]# yum -y install keepalived haproxy
接下来,先配置master与backup服务器的优先级,virtual_router_id(同一个实例2台服务器必须相同),编辑配置文件:
[root@master ~]# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
[root@backup ~]# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
[root@master ~]# vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.30.230
}
}
[root@backup ~]# vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.30.230
}
}
global_defs:全局配置标识破;
notification_email:表示告警时发送的邮件地址;
notification_email_from:表示发送邮件的源地址;
smtp_server:发送邮件的smtp服务器地址;
router_id:机器标识;
vrrp_instance:定义一个vrrp实例;
state:state指定instance(Initial)的初始状态,就是说在配置好后,这台服务器的初始状态就是这里指定的,但这里指定的不算,还是得要通过竞选通过优先级来确定,里如果这里设置为master,但如若他的优先级不及另外一台,那么这台在发送通告时,会发送自己的优先级,另外一台发现优先级不如自己的高,那么他会就回抢占为master;
interface:实例绑定的网卡,因为在配置虚拟IP的时候必须是在已有的网卡上添加的;
virtual router id:这里设置VRID,这里非常重要,相同的VRID为一个组,他将决定多播的MAC地址;
priority 100:设置本节点的优先级,优先级高的为master;
advert int:检查间隔,默认为1秒;