LVS+KEEPALIVED
安装master和backup
-
安装前准备
运行ipvsadm
查看内核模块是否存在
设置master /etc/keepalived/文件
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
vrrp_instance VI_1 {
state MASTER
interface ens192
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.0.108
}
}
virtual_server 192.168.0.108 80 {
delay_loop 6
#lb_algo rr
lb_algo wlc
lb_kind DR
persistence_timeout 0
protocol TCP
real_server 192.168.0.103 80 {
weight 1
TCP_CHECK { # check usability of the Port:47380 service
connect_timeout 3 # connection timeout, /sec
retry 3 # retry times
delay_before_retry 3 # connetcion retry interval, /sec
connect_port 80 # connection port
}
}
real_server 192.168.0.101 80 {
weight 1
TCP_CHECK { # check usability of the Port:47380 service
connect_timeout 3 # connection timeout, /sec
retry 3 # retry times
delay_before_retry 3 # connetcion retry interval, /sec
connect_port 80 # connection port
}
}
}
设置backup /etc/keepalived/文件
! Configuration File for keepalived
vrrp_instance VI_1 {
state BACKUP
interface ens192
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.0.108
}
}
Real server节点2台配置脚本:
#! /bin/bash
vip=192.168.0.108
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip 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
-----------------
#!/bin/bash
VIP=10.46.79.98
source /etc/rc.d/init.d/functions
case "$1" in
start)
echo "start LVS of RealServer DR"
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $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
;;
stop)
/sbin/ifconfig lo:0 down
echo "close LVS of RealServer DR"
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
exit 0
------
#!/bin/sh
VIP="192.168.0.108" # value of vip
ETH_DEV="ens192" # local eth_dev name
VIP_DEV="lo:0" # eth_dev name for vip
IFCONFIG_CMD="/sbin/ifconfig"
ROUTE_CMD="/sbin/route"
case "$1" in
start)
#set ip_forward off(1 on, 0 off).
echo "0" >/proc/sys/net/ipv4/ip_forward
echo "/proc/sys/net/ipv4/ip_forward ="
cat /proc/sys/net/ipv4/ip_forward
#hiding interface ETH_DEV, will not arp
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "/proc/sys/net/ipv4/conf/all/arp_ignore ="
cat /proc/sys/net/ipv4/conf/all/arp_ignore
echo "1" >/proc/sys/net/ipv4/conf/$ETH_DEV/arp_ignore
echo "/proc/sys/net/ipv4/conf/${ETH_DEV}/arp_ignore ="
cat /proc/sys/net/ipv4/conf/$ETH_DEV/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/$ETH_DEV/arp_announce
echo "/proc/sys/net/ipv4/conf/${ETH_DEV}/arp_announce ="
cat /proc/sys/net/ipv4/conf/$ETH_DEV/arp_announce
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
echo "/proc/sys/net/ipv4/conf/all/arp_announce ="
cat /proc/sys/net/ipv4/conf/all/arp_announce
#add ethernet device and routing for VIP
$IFCONFIG_CMD $VIP_DEV $VIP broadcast $VIP netmask 0xffffffff up
$ROUTE_CMD add -host $VIP dev $VIP_DEV
echo "Set ENV for RL_SERVER-DR OK!"
;;
stop)
#remove ethernet device and routing about VIP
$ROUTE_CMD del -host $VIP
$IFCONFIG_CMD $VIP_DEV down
#set ip_forward on(1 on, 0 off).
echo "1" >/proc/sys/net/ipv4/ip_forward
echo "/proc/sys/net/ipv4/ip_forward ="
cat /proc/sys/net/ipv4/ip_forward
#recover arp
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "/proc/sys/net/ipv4/conf/all/arp_ignore ="
cat /proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/$ETH_DEV/arp_ignore
echo "/proc/sys/net/ipv4/conf/${ETH_DEV}/arp_ignore ="
cat /proc/sys/net/ipv4/conf/$ETH_DEV/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/$ETH_DEV/arp_announce
echo "/proc/sys/net/ipv4/conf/${ETH_DEV}/arp_announce ="
cat /proc/sys/net/ipv4/conf/$ETH_DEV/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
echo "/proc/sys/net/ipv4/conf/all/arp_announce ="
cat /proc/sys/net/ipv4/conf/all/arp_announce
echo "Recover ENV from RL_SERVER-DR OK!"
;;
*)
echo "Usage:$0 {start|stop}"
exit 1
esac
exit 0
chmod a+x /root/lvs_dr_realserver.sh
ln -s /root/lvs_dr_realserver.sh /etc/init.d/kenolvs
service kenolvs start
service kenolvs stop
[root@lvs01 keepalived]# ipvsadm -L --stats ipvsadmin -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes
-> RemoteAddress:Port
TCP lvs01:http 472 2848 0 192425 0
-> 192.168.0.101:http 172 1047 0 73284 0
-> 192.168.0.103:http 300 1801 0 119141 0