实验环境:ubuntu14.10,
准备4台服务器(互相可以访问)
lvs_master 192.168.142.145
lvs_slave 192.168.142.137
real_server_1 192.168.142.143
real_server_2 192.168.142.146
(下面配置过程中会将VIP设为192.168.142.144)
配置4台服务器
修改当前会话中的主机名
hostname lvs-master
永久修改主机名
vi /etc/hostname(ubuntu)
vi /etc/sysconfig/network(其他)
IP地址与主机名的绑定
vi /etc/hosts
添加一行
192.168.142.145 lvs-master
重启网络
/etc/init.d/networking restart(ubuntu)
service network restart(其他)
验证
ping lvs-master(未通过)
关闭防火墙
ufw disable(ubuntus)
service iptables stop(其他)
执行关闭防火墙自动运行命令
(ubuntu不用,上一步已关闭)
chkconfig iptables off(其他)
chkconfig –list | grep iptables(其他)
配置2台realserver
装上nginx,访问80端口返回不同内容
进入指定文件夹
cd /etc/init.d/
编辑脚本文件:vim realserver
SNS_VIP=192.168.142.144
/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
保存脚本文件后更改该文件权限
chmod 755 realserver
开启realserver服务
service realserver start
配置主lvs
安装keepalived
apt-get install keepalived
进入keepalived.conf所在目录
cd /etc/keepalived
首先清除掉keepalived原有配置
> keepalived.conf
重新编辑keepalived配置文件
vi keepalived.conf
global_defs {
notification_email {
edisonchou@hotmail.com
}
notification_email_from sns-lvs@gmail.com
smtp_server 192.168.80.1
smtp_connection_timeout 30
router_id LVS_DEVEL # 设置lvs的id,在一个网络内应该是唯一的
}
vrrp_instance VI_1 {
state MASTER #指定Keepalived的角色,MASTER为主,BACKUP为备
interface eth0 #指定Keepalived的角色,MASTER为主,BACKUP为备
virtual_router_id 51 #虚拟路由编号,主备要一致
priority 100 #定义优先级,数字越大,优先级越高,主DR必须大于备用DR
advert_int 1 #检查间隔,默认为1s
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.142.144 #定义虚拟IP(VIP)为192.168.2.33,可多设,每行一个
}
}
# 定义对外提供服务的LVS的VIP以及port
virtual_server 192.168.142.144 80 {
delay_loop 6 # 设置健康检查时间,单位是秒
lb_algo wrr # 设置负载调度的算法为wlc
lb_kind DR # 设置LVS实现负载的机制,有NAT、TUN、DR三个模式
nat_mask 255.255.255.0
persistence_timeout 0
protocol TCP
real_server 192.168.142.143 80 { # 指定real server1的IP地址
weight 3 # 配置节点权值,数字越大权重越高
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.142.146 80 { # 指定real server2的IP地址
weight 3 # 配置节点权值,数字越大权重越高
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
开启keepalived服务
service keepalived start
配置从lvs
配置文件只需修改2两处
将state由MASTER改为BACKUP
将priority由100改为99
验证性测试
1.指定请求的均衡转发:因为两个Web服务器的权重都一样,所以会依次转发给两个Web服务器;
2.Web服务器发生故障时:再来看看这时从外部访问VIP时是否可以获得另一个realserver返回的内容;
3.主负载均衡服务器发生故障时,备机立即充当主机角色提供请求转发服务;(暂停其keepalived服务:service keepalived stop)