LVS/DR安装配置
一、拓扑图
二、系统环境
类别 |
ip |
系统 |
内存 |
负载均衡器 |
192.168.1.210 |
centos6.5(64 bit) |
4G |
Web服务器 |
192.168.1.170 |
centos6.5(32 bit) |
256M |
Web服务器 |
192.168.1.171 |
centos6.5(32 bit) |
256M |
压力测试机 |
192.168.1.168 |
centos6.5(32 bit) |
512M |
三、LVS安装配置
Centos6.5可直接通过yum来安装
安装ipvsadm:yum install ipvsadm
安装keepalived: yum install keepalived
安装好后修改keepalived配置文件:vi /etc/keepalived/keepalived.conf
! 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 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
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.1.169
}
}
virtual_server 192.168.1.169 80 {
delay_loop 6 //每隔6秒检查realserver状态
lb_algo rr //LVS算法
lb_kind DR //Direct Route
persistence_timeout 5 //同一ip的连接5秒内被分配到同一台realserver
protocol TCP //用tcp协议检查realserver状态
real_server 192.168.1.170 80 {
weight 3 //权重
TCP_CHECK {
connect_timeout 3 //3秒无响应超时
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.1.171 80 {
weight 3
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
还需要对系统内核响应参数进行修改(centos6.5默认值可不需要配置):
停止路由转发功能
sysctl –w net.ipv4.ip_forward=0
sysctl –w net.ipv4.conf.all.send_redirects=1
sysctl –w net.ipv4.conf.default.send_redirects=1
sysctl –w net.ipv4.conf.eth0.send_redirects=1 //eth0根据实际情况修改
可以用下面的脚本快速设置
vs.sh
echo "0">/proc/sys/net/ipv4/ip_forward
echo "1">/proc/sys/net/ipv4/conf/all/send_redirects
echo "1">/proc/sys/net/ipv4/conf/default/send_redirects
echo "1">/proc/sys/net/ipv4/conf/eth0/send_redirects
sysctl –p >/dev/null 2>&1
该设置会在重启网络服务或者系统重启后失效,需重新配置,也可在/etc/sysctl.conf中直接添加使其永久生效。
四、realserver配置
停止路由转发
sysctl –w net.ipv4.ip_forward=0
忽略arp设置
sysctl –w ipv4.conf.lo.arp_ignore=1
sysctl –w ipv4.conf.all.arp_ignore=1
参数1的意义:只回答目标IP地址是来访网络接口本地地址的ARP查询请求(比如eth0=192.168.0.1/24,eth1=10.1.1.1/24,那么即使eth0收到来自10.1.1.2这样地址发起的对192.168.0.1的查询会回答,而对10.1.1.1 的arp查询不会回应)。
设置arp宣告值
sysctl –w ipv4.conf.lo.arp_announce=2
sysctl –w ipv4.conf.all.arp_announce=2
参数2的意义:对查询目标使用最适当的本地地址.在此模式下将忽略这个IP数据包的源地址并尝试选择与能与该地址通信的本地地址.首要是选择所有的网络接口的子网中外出访问子网中包含该目标IP地址的本地地址. 如果没有合适的地址被发现,将选择当前的发送网络接口或其他的有可能接受到该ARP回应的网络接口来进行发送。
注:lo的两条配置是可以不用的,arp对逻辑接口是没有意义的。
添加vip,掩码四个255使其处于一个独立网段,不与外部主机广播
ifconfig lo:0 192.168.1.169 netmask=255.255.255.255 broadcast 192.168.1.169 up
添加主机vip路由
route add –host 192.168.1.169 dev lo:0
这个可以用下面的脚本来快速设置
realserver.sh
#!/bin/bash
VIP=192.168.1.169
. /etc/rc.d/init.d/functions
case "$1" in
start)
ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
/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
sysctl -p >/dev/null 2>&1
echo "RealServer Start OK"
;;
stop)
ifconfig lo:0 down
route del $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
realserver.sh start启动vip绑定
完成后ifconfig查看网卡信息
出现这条则表示绑定成功
五、功能验证
在170和171两台realserver上配置apache服务,在客户机浏览器中通过虚ip 192.168.1.169来访问其主页,刷新后主页会进行轮询,则说明配置成功。
注:需要将keepalived配置文件的persistence_timeout设置为0才能看见明显的效果。