keepalived实现高可用的LVS负载均衡集群
1、准备知识
1.1、LVS
LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。
1.2、keepalived
keepalived是一个类似于layer3, 4 & 7交换机制的软件,也就是我们平时说的第3层、第4层和第7层交换。我们只需要简单配置keepalived的配置文件即可实现自动生成ipvsadm规则。还可以监控后端realserver主机的健康状态,出现故障时自动剔除集群,恢复后自动添加,以及MASTER与BACKUP之间的故障切换。
1.3、为什么要keepalived+LVS
lvs是一个在四层上实现后端realserver的负载均衡的集群,lvs遗留下两个问题:一个是lvs的单点故障; 第二个是lvs不能检测后端realserver的健康状态检查。最常用的方法就是在负载调度层构建双机热备系统。keepalived的配置文件里面可以自行生成ipvs的规则,并且自行检测后端realserver的状态,当后端realserver不能提供服务了,keepalived会自行将其在ipvs规则里面删除,当后端realserver可以提供服务了,又自行的在ipvs规则里面添加。
2、实验测试
2.1 实验拓扑结构
2.1 实验准备
本次实验使用VMwaer安装一台centos5.5(mini安装),完成后再复制出三台刚才已安装好的centos5.5(注意修改mac地址)并配置好ip(dircetirserver自动生成vip,只需要配置realserver),一共四台虚拟机。分别是负载调度器mastr、backup,服务器池webserver1、webserver2。
设置 vip(虚拟ip)
ifconfig eth0:0 192.168.100.100 netmask 255.255.255.0 up
写在/etc/rc.local里也可以,写在这里就不怕断电后机器无法正常使用了。
关闭防火墙和selinux
service iptables stop
service ip6tables stop
vim /etc/selinux/config
修改为SELINUX=disabled
2.1.1 Mastr配置
由于是mini安装的系统,keepalived前的准备
1、安装安全套接字层密码库openssl
yum install -y openssl openssl-devel
2、安装内核编译工具kernel-devel
yum install -y kernel-devel
3、安装编译工具gcc-c++
yum install -y gcc-c++
4、安装opvs管理工具 ipvsadm
yum install -y ipvsadm
安装keepalived
1、安装keepalived
wget http://www.keepalived.org/software/keepalived-1.2.7.tar.gz
2、解压keepalived
tar xvf keepalived-1.2.7.tar.gz
3、进入文件内
cd keepalived-1.2.7
4、配置安装路径
./configure --sysconf=/etc --with-kernel-dir=/usr/src/kernels/2.6.18-417.el5
5、编译
make
6、安装
make install#由于编译程序找不到对应的内核照成的,要创建链接
ln -s /usr/local/sbin/keepalived /sbin
修改keepalived的配置文件
vim /etc/keepalived/keepalived.conf
修改成
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost #设置报警邮件地址,即收件人地址
}
notification_email_from admin@localhost #设置邮件的发送地址
smtp_server 127.0.0.1 #设置smtp server的ip地址
smtp_connect_timeout 30 #设置连接smtp server的超时时间
router_id LTT #表示运行keepalived服务器的一个标识,名字可以随便取,名字会显示在发邮件时邮件的主题信息
}
vrrp_instance IN_1 {
state MASTER #指定keepalived的角色,此服务为master
interface eth0 #指定监测网络的接口
virtual_router_id 51 #虚拟路由的标识
priority 100 #定义优先级,数字越大优先级越高,1-255之间
advert_int 1 #设置同步检查的时间间隔,单位是秒
authentication { #设置验证类型
auth_type PASS #验证类型为PASS
auth_pass 1111 #验证的密码
}
virtual_ipaddress {
192.168.100.100 #设置虚拟IP
}
}
virtual_server 192.168.100.100 80 { #定义虚拟服务器,需指定虚拟ip和端口
delay_loop 6 #设置健康检查时间,单位为秒
lb_algo wlc #设置负载调度算法,此处为加权最少连接
lb_kind DR #设置LVS实现负载均衡的模式
nat_mask 255.255.255.0 #设置子网掩码
protocol TCP #设置转发协议的类型
real_server 192.168.100.6 80 { #定义realserver,需指定ip和端口
weight 1 #指定权重
HTTP_GET { #设置检测后端realserver的方式为获取http协议报文
url {
path /
status_code 200 #状态码为200则证明后端服务器是在线的
}
connect_timeout 3 #设置超时时间
nb_get_retry 3 #设置超时时候重试几次
delay_before_retry 3 #在重试的时候的时间间隔
}
}
real_server 192.168.100.7 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
启动服务
service keepalived start
2.1.2 Backup配置
安装前需要的软件和mastr一样,然后安装keepalived
修改keepalived的配置文件
将vim /etc/keepalived/keepalived.conf
只需要修改两个地方
state BACKUP #把这里原先的MASTER改成BACKUP
priority 99 #把这里原先的100改成9
启动服务
service keepalived start
2.1.3 Realserver1配置
1、安装httpd服务
yum install httpd
2、配置测试页,启动httpd服务
echo "this is realserver1" > /var/www/html/index.html
service httpd start
3、配置arptable调整网卡的响应/通告级别
echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
4、配置网络别名及添加路由
ifconfig lo:0 192.168.100.100 broadcast 192.168.100.100 netmask 255.255.255.255 up
route add -host 192.168.100.100 dev lo:0
2.1.4 Realserver2配置
1、安装httpd服务
yum install httpd
2、配置测试页,启动httpd服务
echo "this is realserver2" > /var/www/html/index.html
service httpd start
3、配置arptable调整网卡的响应/通告级别
echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
4、配置网络别名及添加路由
ifconfig lo:0 192.168.100.100 broadcast 192.168.100.100 netmask 255.255.255.255 up
route add -host 192.168.100.100 dev lo:0
到此 全部配置已完成
2.2 测试
2.2.1 查看ipvs规则和VIP
ip addr #查看vip
ipvsadm -l -n #查看ipvs规则
2.2.2 测试realserver是否可以访问
2.2.3 测试dircetirserver故障
假设把mastr网络断掉 ,我们查看backup的规则和访问vip
停掉Master的keepalived服务,vip和ipvs规则切换到Backup服务器上
realserver正常访问
2.2.4 测试realserver故障
假设把webserver2网络断掉
看ipvs的规则是否清除,显示已经清楚规则
此致,keepalived实现高可用的LVS负载均衡集群已经完成,可以自动的故障转移,还可以根据后端realserver的状态,自动的修改其规则