LVS/DR 实战
环境准备:一台Load Balancer,两台nginx,系统:Centos6.6
#首先在Load Balancer中安装IPVS 内核模块
yum install ipvsadm
#尝试ipvsadm能否正常使用
ipvsadm -L
#配置 eth0 的别名,VIP 的使用
ifconfig eth0:0 192.168.119.200 netmask255.255.255.0 up
#为了确保,还是使用该命令查看一下
ifconfig
#添加调度器,以及监听的端口号
ipvsadm -A -t 192.168.119.200:80 -s rr
#添加 Real Server
ipvsadm -a -t 192.168.119.200:80 -r192.168.119.134:80 -g
ipvsadm -a -t 192.168.119.200:80 -r192.168.119.135:80 -g
Real Server nginx 操作
#两台nginx服务器,修改首页,并确定可以打开
#编写脚本,保证到/etc/init.d/lvsrs
#description : Start Real Server
VIP=192.168.119.200
. /etc/rc.d/init.d/functions
case "$1" in
start)
echo " Start LVS of Real Server "
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 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
;;
stop)
/sbin/ifconfig lo:0 down
echo "Close LVS Director server"
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
注:
#设置只回答目标IP地址是来访网络接口本地地址的ARP查询请求
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
#设置对查询目标使用最适当的本地地址.在此模式下将忽略这个IP数据包的源地址并尝试选择与能与该地址通信的本地地址.首要是选择所有的网络接口的子网中外出访问子网中包含该目标IP地址的本地地址. 如果没有合适的地址被发现,将选择当前的发送网络接口或其他的有可能接受到该ARP回应的网络接口来进行发送.
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
#启动脚本
/etc/init.d/lvsrs start
#为了保险自己可以查看一下是否成功修改
cat /proc/sys/net/ipv4/conf/lo/arp_ignore
到此为止,我们便完成了 VS/DR 的负载均衡的所有配置
验证一下,浏览器打开http://192.168.119.200
LVS + keepalived实战
环境准备:两台Load Balancer(主备),两台nginx,系统:Centos6.6
#首先在两台Load Balancer中安装IPVS 内核模块和Keepalived
yum install ipvsadm keepalived –y
#并尝试ipvsadm能否正常使用
ipvsadm -L
#编辑Keepalived配置文件
vim /etc/keepalived/keepalived.conf
以下便是Keepalived配置文件的内容,请勿将注释内容写入
! Configuration File for keepalived
#全局配置,在发现某个节点出故障的时候以邮件的形式同时管理员
global_defs {
notification_email{
sysadmin@localhost #通知管理员的邮箱
}
notification_email_from root
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
#配置vrrp
vrrp_instance VI_1 {
state MASTER #设置为主节点
interface eth0 #设置发送消息的网卡
virtual_router_id 51
priority 100 #设置主节点的优先级
advert_int 1 #master与 backup 之间同步检查时间间隔,单位秒
authentication { #配置vrrp直接的认证
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { #配置虚拟 IP
192.168.119.200
}
}
#配置虚拟 IP
virtual_server 192.168.119.200 80 {
delay_loop 6 #健康检查时间
lb_algo rr #ipvs的调度算法选择rr
lb_kind DR #使用 VS/DR 模式
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP #转发协议类型
real_server 192.168.119.134 80 { #配置 realserver 的信息
weight 1 #配置该节点的权重
HTTP_GET { #健康检查方式
url { #检查的路径
path /
status_code 200
}
connect_timeout 2 #连接超时时间
nb_get_retry 3 #重新连接次数
delay_before_retry 1 #重连时间间隔
}
}
real_server 192.168.119.135 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 2
nb_get_retry 3
delay_before_retry 1
}
}
}
保存,配置完主Keepalived后,将此文件复制到备用Keepalived,然后修改以下两个参数即可:
将“state MASTER”更改为“state BACKUP”。
将“priority 100”更改为一个较小的值“priority 80”。
启动Keepalived+LVS集群,Real Server nginx 操作同上实例相同,LVS + keepalived就已经完成了。最后~测试手动stop 一个keepalived 或nginx是否可以正常访问服务