一、keepalived软件简介
keepalived是基于vrrp协议实现高可用功能的一种软件,它可以解决单点故障的问题,通过keepalived搭建一个高可用的LVS负载均衡集群时,keepalived还能检测后台服务器的运行状态。
二、vrrp协议原理简介
vrrp(虚拟路由器冗余协议),是为了解决网络上静态路由出现的单点故障的问题,举个例子,如下图
主机A和B均在同一个局域网内,C和D均是该局域网的网关,即A和B想与外网通信,需指网关到C或D,那究竟指向C好还是指向D好呢?都不好!当指向C时,如果C出故障时,局域网内的主机就没法与外界通信了,指向D问题也是一样,vrrp这时候就有用了,在C和D之间运行vrrp协议,vrrp将C和D虚拟成一个设备E,对外提供一个虚拟ip地址,A和B将网关指向虚拟ip地址即可,在vrrp组内,将各成员分为MASTER和BACKUP(一个组内只能有1个MASTER,可以有多个BACKUP),MASTER就是实际上提供服务的节点,MASTER和BACKUP的选举通过优先级选举,优先级高的即为MASTER,VRRP运行时MASTER定时发送VRRP通告信息,表示MASTER工作正常,BACKUP只接收VRRP数据,不发送数据,如果一定时间内没有接收到MASTER的通告信息,各BACKUP将宣告自己成为MASTER,发送通告信息,重新进行MASTER选举状态。
三、实验部分
ip地址分配:
VIP:192.168.56.110
Director Server1 IP:192.168.56.101
Director Server2 IP:192.168.56.102
Realserver1 IP:192.168.56.103
Realserver2 IP:192.168.56.104
LVS相关配置方案:
模型:DR
调度算法:rr(轮循)
安装配置过程:
通过keepalived搭建LVS高可用集群配置非常简单,lvs的配置和节点的监控均在keepalived配置文件中配置完成
1、安装前先检查/usr/src/kernels目录下有没有内核的源码,后面keepalived编译时要用到,如果没有,则先安装
yum install kernel-devel
2、编译安装keepalived
tar zxvf keepalived-1.2.23.tar.gz cd keepalived-1.2.23 ./configure --sysconf=/etc --with-kernel-dir=/usr/src/kernels/2.6.32-642.4.2.el6.x86_64/ make && make install ln -sv /usr/local/sbin/keepalived /sbin/keepalived #创建链接(不创建的话启动/etc/init.d/keepalived脚本时会报错)
3、修改配置文件/etc/keepalived/keepalived.conf
#全局定义部分 global_defs { notification_email { root@lzs.com zsgg@lzs.com } #设置发生异常时向哪个邮箱发通知,可以设>置多个邮箱,每个一行,服务器上的sendmail服务必须开启 notification_email_from keepalived@lzs.com #设置邮件的发送方 smtp_server 192.168.56.1 #设置smtp服务器的ip地址 smtp_connect_timeout 30 #设置连接smtp服务器的超时时间 router_id LVS_LZS #keepalived服务器的标识,将显示在报警邮件的主题>中 } #定义vrrp实例 vrrp_instance VI_1 { state MASTER #指定此主机的角色是MASTER,注意要大写 interface eth0 #指定绑定的接口,即配置虚拟ip地址的接口 virtual_router_id 51 #指定VRID,该标识为一个数字,同一个vrrp实例中的MASTER和BACKUP的VRID必须一致 priority 100 #指定优先级,MASTER的优先级必须高于BACKUP advert_int 1 #指定MASTER发送通告信息的时间间隔 authentication { #设置同一个vrrp组中各节点的验证类型和验证密码,>即同一vrrp组下,各节点的验证类型和验证密码必须一致才能互相通信 auth_type PASS #设置验证类型,有PASS和HA两种 auth_pass 1111 #设置验证密码, } virtual_ipaddress { #设置虚拟ip地址,可多个 192.168.56.110 192.168.56.120 } } #虚拟服务器定义(在这部分配置LVS) virtual_server 192.168.56.110 80 { #设置虚拟服务器的ip和端口,用空格隔开 delay_loop 6 #每隔6秒对realserver进行健康状态检查 lb_algo rr #设置调度算法 lb_kind DR #设置LVS的类型,有DR、NAT和TUN persistence_timeout 50 #设置会话保持时间,用户在请求页面后,若在50s内有操作时,请求会一直分发到同一服务节点上,并重新开始计时 protocol TCP #指定转发协议类型,有UDP和TCP real_server 192.168.56.103 80 { #配置realserver的ip和端口,用空格隔开 weight 1 #设置权重 TCP_CHECK { #对realserver状态检查的设置 connect_timeout 3 #3秒无响应时超时 nb_get_retry 3 #表示重试的次数 delay_before_retry 3 #表示重试的时间间隔 } } real_server 192.168.56.104 80 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } }
注意要点:keepalived启动时默认查找/etc/keepalived/keepalived.conf配置文件,若想指定配置文件,可”keepalived -f 配置文件 “启动。
4、将MASTER的配置文件复制到BACKUP上,并修改配置文件中的state和priority
state BACKUP priority 70 #改得比MASTER小
5、配置realserver服务器
1、编写启动脚本
vim /etc/init.d/lvs_rs #! /bin/bash VIP=192.168.56.110 case $1 in start) echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce /sbin/ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP up ;; stop) /sbin/ifconfig lo:0 down echo "0" > /proc/sys/net/ipv4/conf/lo/arp_ignore echo "0" > /proc/sys/net/ipv4/conf/lo/arp_announce echo "0" > /proc/sys/net/ipv4/conf/all/arp_ignore echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce ;; *) echo "usage:$0 {start|stop}" exit 1 ;; esac
2、添加执行权限
chmod +x /etc/init.d/lvs_rs
3、启动脚本
./etc/init.d/lvs_rs
6、启动MASTER和BACKUP上的keepalived服务
/etc/init.d/keepalived start
至此,搭建的LVS集群系统已正常运行了~~~~