1.环境需求
LVS负载均衡器:192.168.20.150 VIP地址:192.168.20.100
http服务器1:192.168.20.152
http服务器2:192.168.20.153
2.安装IPVSADM:
IPVS管理工具,LVS的核心就是IPVS(IP Virtual Server),从Linux内核2.6开始,IPVS模块已经编译进了Linux内核
使用yum命令进行安装:
yum -y install ipvsadm
3.关闭防火墙:
在实际使用中开启需要的端口即可,测试中直接关闭
service iptables stop
4.安装keepalived:
keepalived是一个路由软件,通过简单配置,实现高可用的负载均衡.keepalived 不仅会检测负载均衡服务器池中每台机器的健康状况,并通知ipvs将非健康机器从池中移除掉;同时还能对负载调度器本身的健康状态检查,当主LB出现问题时,备用LB项替主进行工作
cd /usr/src
yum -y install openssl-devel
wget http://www.keepalived.org/software/keepalived-1.2.7.tar.gz
wget http://mirror.centos.org/centos/6/os/x86_64/Packages/popt-static-1.13-7.el6.x86_64.rpm
yum -y install popt-static-1.13-7.el6.x86_64.rpm
yum -y install kernel-devel make gcc openssl-devel libnl* popt*
ln -s /usr/src/kernels/2.6.32-220.13.1.el6.x86_64/ /usr/src/linux
tar zxvf keepalived-1.2.7.tar.gz
cd keepalived-1.2.7
./configure --with-kernel-dir=/usr/src/kernels/2.6.32-358.2.1.el6.x86_64/
执行完最后一条,终端应该显示为下图:
继续执行如下命令
make && make install
cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalived
cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/sbin/keepalived /usr/sbin/
keepAlived安装完毕
5.配置keepalived
<1>打开ip forward功能
vi /etc/syctl.conf
修改里面的“net.ipv4.ip_forward = 1”,如下图所示:
修改好保存退出,执行如下命令使设置立即生效
sysctl -p
<2>配置keepalived:
配置文件位置:/etc/keepalived/keepalived.conf
启动keepalived时,会自动到/etc/keepalived下面查找该配置文件
! 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 127.0.0.1
smtp_connect_timeout 30
router_id LVS_Master
}
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.20.100
}
}
virtual_server 192.168.20.100 8080 {
delay_loop 6
lb_algo rr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server 192.168.20.152 8080 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
以上完成了keepalived的配置
6.启动keepalived
chkconfig keepalived on
service keepalived start
查看进程:
ps aux | grep keepalived
启动正常的话会看到如下图所示进程
如上图所示,共启动3个进程,一个进程是父进程,负责监控其子进程;一个是vrrp子进程,另外一个是checkers子进程
查看下虚拟ip是否已加上(重要)
ip a
如下图所示:
说明虚拟ip已经自动配置上
7.配置WEB服务器WEB1_RealServer
<1>打开虚拟机WEB1_RealServer
<2>配置虚拟ip启动脚本
vi /etc/init.d/realserver.sh
在文件输入如下内容:
#!/bin/bash
SNS_VIP=192.168.20.100
. /etc/rc.d/init.d/functions
case "$1" in
start)
ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
/sbin/route add -host $SNS_VIP dev lo:0
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
sysctl -p >/dev/null 2>&1
echo "RealServer Start OK"
;;
stop)
ifconfig lo:0 down
route del $SNS_VIP >/dev/null 2>&1
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 "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
<3>安装tomcat
<4>启动虚拟ip的脚本
sh /etc/init.d/realserver.sh start
ifconfig
运行后会看到网络有一个虚拟ip, 如下图
<5>去LVS_MASTER服务器终端查看下ipvsadm,查看已经连接上了WEB1服务器,运行命令
ipvsadm -ln
结果如下图
通过上图可以看到已经有服务器加入进来
<6>使用命令行测试转发情况如下
ipvsadm -lcn | grep 192.168.20.100
8.克隆服务器LVS_MASTER,起名为LVS_BACKUP,修改其中的参数,MASTER与BACKUP配置仅三处不同:
global_defs中的route_id,vrrp_instance中的state,priority
配置如下文:
! 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 127.0.0.1
smtp_connect_timeout 30
router_id LVS_Backup
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.20.100
}
}
virtual_server 192.168.20.100 8080 {
delay_loop 6
lb_algo rr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server 192.168.20.152 8080 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
9.从WEB1_RealServer克隆一个WEB2_RealServer,将安装tomcat,启动realserver.sh
至此全部配置完成,配置出两个lvs主从服务器,2个web服务器
10.负载和可用性测试
测试LVS层
1)首先执行ip a命令,主服务器会存在一个虚拟IP,从服务器不会存在这个虚拟IP。现在浏览网页显示正常。虚拟IP如图所示:
显示集群中服务器ip信息:ipvsadm -ln
查看日志:tail -f /var/log/messages
查看请求转发情况:ipvsadm -lcn | grep 虚拟IP
LVS_MASTER中的ip信息:
LVS_BACKUP中的ip信息:
2)现在停掉LVS_MASTER的keepAlived服务,看LVS_BACKUP是否可以自动加上虚拟IP地址,并且开始转发请求。
LVS_BACKUP服务器截图:
3)、恢复主服务器的keepAlived服务后,主服务器立刻接替了从服务器的工作,就不做截图了。和第1)个正常效果是一样的。
4)、测试WEB服务器,看能否正常提供服务。先断掉WEB1,看下效果。
ipvsadm中的服务器列表,已经去掉了WEB1服务器,访问网页也只能访问到WEB2服务器了。
5)开启WEB1,关掉WEB2。测试正常。