Keepalived实现HAproxy高可用详解

一,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 {

acassen@firewall.loc

failover@firewall.loc

sysadmin@firewall.loc

}

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 {

acassen@firewall.loc

failover@firewall.loc

sysadmin@firewall.loc

}

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秒;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/eb2a3fb5daa9c3cc8011d329764e1c31.html