LVS+keepalived(主从模式)安装
lb-01:172.21.3.186 LVS+keepalived-master
lb-02:172.21.3.187 LVS+keepalived-backup
web-01:172:21.3.185 Server1
web-02:172.21.3.195 Server2
VIP:172.21.3.194
1.安装keepalived
172.21.3.186
172.21.3.187
安装依赖
# yum -y install gcc* pcre-devel zlib-devel openssl-devel popt-devel
- 下载安装
keepalived
# wget http://www.keepalived.org/software/keepalived-1.1.17.tar.gz
# tar -zxvf ./keepalived-1.1.17.tar.gz
# cd ./keepalived-1.1.17
# ./configure --prefix=/usr/local/keepalived
# make && make install
# mkdir /etc/keepalived
# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
# chkconfig --level 2345 keepalived on
- 修改配置文件
# vim /etc/keepalived/keepalived.conf #修改配置文件
172.21.3.186
master主机中的配置文件
global_defs {
router_id LVS_DEVEL # 设置lvs的id,在一个网络内应该是唯一的
}
vrrp_instance VI_1 {
state MASTER #指定Keepalived的角色,MASTER为主,BACKUP为备
interface eth0 #指定网卡
virtual_router_id 51 #虚拟路由编号,主备要一致
priority 103 #定义优先级,数字越大,优先级越高,主DR必须大于备用DR
advert_int 1 #检查间隔,默认为1s
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.21.3.194 #定义虚拟IP(VIP)为192.168.2.33,可多设,每行一个
}
}
# 定义对外提供服务的LVS的VIP以及port
virtual_server 172.21.3.194 80 {
delay_loop 6 # 设置健康检查时间,单位是秒
lb_algo rr # 设置负载调度的算法为rr
lb_kind DR # 设置LVS实现负载的机制,有NAT、TUN、DR三个模式
nat_mask 255.255.255.0
persistence_timeout 0 #保持该时间内请求的是同一个服务器。为了测试效果改为0
protocol TCP
real_server 172.21.3.195 80 { # 指定real server1的IP地址
weight 3 # 配置节点权值,数字越大权重越高
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 172.21.3.185 80 { # 指定real server2的IP地址
weight 3 # 配置节点权值,数字越大权重越高
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
172.21.3.187
backup主机中的配置文件(只需要修改master主机中如下2项)
state BACKU #指定Keepalived的角色,MASTER为主,BACKUP为备
priority 102 #定义优先级,数字越大,优先级越高,主DR必须大于备用DR
- 完成后启动服务
# service keepalived start
2.安装LVS
172.21.3.185
172.21.3.195
下载安装依赖
# yum install -y libnl* popt*
- 查看是否加载lvs模块
# modprobe -l |grep ipvs
kernel/net/netfilter/ipvs/ip_vs.ko
kernel/net/netfilter/ipvs/ip_vs_rr.ko
kernel/net/netfilter/ipvs/ip_vs_wrr.ko
kernel/net/netfilter/ipvs/ip_vs_lc.ko
kernel/net/netfilter/ipvs/ip_vs_wlc.ko
kernel/net/netfilter/ipvs/ip_vs_lblc.ko
kernel/net/netfilter/ipvs/ip_vs_lblcr.ko
kernel/net/netfilter/ipvs/ip_vs_dh.ko
kernel/net/netfilter/ipvs/ip_vs_sh.ko
kernel/net/netfilter/ipvs/ip_vs_sed.ko
kernel/net/netfilter/ipvs/ip_vs_nq.ko
kernel/net/netfilter/ipvs/ip_vs_ftp.ko
kernel/net/netfilter/ipvs/ip_vs_pe_sip.ko
- 下载并安装LVS
# cd /usr/local/src/
# wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz
# tar -zxvf ipvsadm-1.26.tar.gz
# cd ipvsadm-1.26
# make && make install
- 安装完成,查看当前LVS集群
# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
3.172.21.3.185
172.21.3.195
绑定回环地址
- 编写脚本 /etc/init.d/realserver
# vim /etc/init.d/realserver
#!/bin/sh
VIP=172.21.3.194
. /etc/rc.d/init.d/functions
case "$1" in
# 禁用本地的ARP请求、绑定本地回环地址
start)
/sbin/ifconfig lo down
/sbin/ifconfig lo up
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/sysctl -p >/dev/null 2>&1
/sbin/ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP up #在回环地址上绑定VIP,
/sbin/route add -host $VIP dev lo:0
echo "LVS-DR real server starts successfully.\n"
;;
stop)
/sbin/ifconfig lo:0 down
/sbin/route del $VIP >/dev/null 2>&1
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
echo "LVS-DR real server stopped.\n"
;;
status)
isLoOn=`/sbin/ifconfig lo:0 | grep "$VIP"`
isRoOn=`/bin/netstat -rn | grep "$VIP"`
if [ "$isLoON" == "" -a "$isRoOn" == "" ]; then
echo "LVS-DR real server has run yet."
else
echo "LVS-DR real server is running."
fi
exit 3
;;
*)
echo "Usage: $0 {start|stop|status}"
exit 1
esac
exit 0
- 将
realserver
脚本加入开机自启动
# chmod +x /etc/init.d/realserver
# echo "/etc/init.d/realserver" >> /etc/rc.d/rc.local
- 启动
realserver
脚本
[root@Real_Server1 ~]# service realserver start
LVS-DR real server starts successfully.\n
4.测试
- 在
172.21.3.185
172.21.3.195
上查看
# ipvsadm -l
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.21.3.194:http rr
-> 172.21.3.185:http Route 3 0 0
-> 172.21.3.195:http Route 3 0 0
- 访问网址