为了丰富21运维网站内容和记录下配置服务器步骤,本文简单记录下Linux环境下lvs-dr模式(基于请求包mac地址欺骗)负载均衡简单配置,揭开这个神秘东西的面纱,让你10钟搞定配置lvs。
环境配置: 三台centos 6.5
调度器: DIP:192.168.1.11 VIP:192.168.1.110
web服务器: RIP:192.168.1.9 RIP:192.168.1.10
一,前期服务器环境搭建
(1) 配置lamp环境,这里不做演示。
(2)关闭selinux和所有web服务器上的iptables
(3)设置时间同步,保证服务器时间一致(后期nfs或数据同步用到,包括session同步需要)
二,配置LVS
1,调度器安装ipvsadm和keepalived
首先安装依赖包:
yum -y install gcc make openssl-devel openssl net-snmp net-snmp-devel popt popt-devel
安装ipvs和keepalived:
yum install ipvsadm keepalived -y 并设置下:
chkconfig ipvsadm on
chkconfig keepalived on
修改keepalived.conf配置文件:
global_defs {
router_id LVSTEST #负载均衡器标识,同一网段内,可以相同
}
vrrp_instance LVSTEST {
state MASTER #主调度器
interface eth0 #实例绑定的网卡
#lvs_sync_daemon_inteface eth0 #主备间的监控接口
virtual_router_id 61 #vrrp唯一ID,主备id一致
priority 100 #优先级
advert_int 10 #主备间同步检查/秒
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.110 #vip,可以多个ip,每行一个
}
}
virtual_server 192.168.1.110 80 { #定义一个虚拟服务器
delay_loop 6 #健康检测间隔/秒
lb_algo wlc #调度算法
lb_kind DR #模式
persistence_timeout 30 #回话保持时间
protocol TCP #转发协议
#多个real_server重复本节点即可
real_server 192.168.1.9 80 { #定义一台真实服务器
weight 3 #权重
TCP_CHECK { #通过tcpcheck判断真实服务器状态
connect_timeout 10 #连接超时
nb_get_retry 3 #重试次数
delay_before_retry 3 #重试间隔
connect_port 80 #检测端口
}
}
real_server 192.168.1.10 80 {
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
配置完以后启动keepalived:
service keepalived start
启动以后ipvsadm -L 可以查看vip以及rip绑定情况。如果和keepalived配置一致,那么设置正常。如果不一致或无IP信息加载,则需检查。
2,RIP服务器配置VIP和arp禁止响应
vip就是上边的vip添加网卡的命令,写入rc.loca启动中。
/sbin/ifconfig lo:0 192.168.1.110 broadcast 192.168.1.110 netmask 255.255.255.255 up
/sbin/route add -host 192.168.1.110 dev lo:0
arp禁止响应:
vi /etc/rc.local
/usr/local/sbin/realserver.sh stop
/usr/local/sbin/realserver.sh start
保存。
创建禁止arp响应脚本
touch /usr/local/sbin/realserver.sh
chmod 755 /usr/local/sbin/realserver.sh
#!/bin/bash
WEB_VIP=192.168.1.110
. /etc/rc.d/init.d/functions
case "$1" in
start)
ifconfig lo:0 $WEB_VIP netmask 255.255.255.255 broadcast $WEB_VIP
#/sbin/route add -host $WEB_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 $WEB_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
好了,域名host定向到vip,安装一个dz论坛测试看下效果。已经OK。
查看调度器上的链接情况:
中间可能有个别朋友遇到一些报错,这里简单记录下我之前遇到的报错解决思路:
配置完以后不能访问问题:定向到RIP不可以访问,说明RIP本身设置的有问题。如果rip可以访问,那么是vip或lvs调度器配置有问题。
补充LVS添加url检测防止假死:
real_server 192.168.1.120 80 {
weight 50
HTTP_GET {
url {
path /ok.php
status_code 200
}
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
}
}