18.11 LVS DR模式搭建
18.11 LVS DR模式搭建18.12 keepalived + LVS
首先将两台rs的网关改回来,因为在做nat模式的时候更改了网关
vip需要绑定在所有的机器上
18.11 LVS DR模式搭建18.12 keepalived + LVS
在分以器dir上编辑脚本
vim /usr/local/sbin/lvs_dr.sh
内容
#! /bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
ipv=/usr/sbin/ipvsadm
vip=192.168.133.200
rs1=192.168.133.132
rs2=192.168.133.133
#注意这里的网卡名字
ifdown ens33
ifup ens33 (这时重启一下网卡,如果再一次去执行这个脚本就不用重复去设置ens33:2的ip了)
ifconfig ens33:2 $vip broadcast $vip netmask 255.255.255.255 up 这里设置的ens33:2是虚拟网卡
route add -host $vip dev ens33:2
$ipv -C 清空规则
$ipv -A -t $vip:80 -s rr
$ipv -a -t $vip:80 -r $rs1:80 -g -w 1 -g指的是DR模式 -m指的是NAT模式
$ipv -a -t $vip:80 -r $rs2:80 -g -w 1
18.11 LVS DR模式搭建18.12 keepalived + LVS
最的执行一下脚本
sh /usr/local/sbin/lvs_dr.sh
两台rs也要编辑一下脚本
18.11 LVS DR模式搭建18.12 keepalived + LVS
vim /usr/local/sbin/lvs_rs.sh
#/bin/bash
vip=192.168.133.200
#把vip绑定在lo上,是为了实现rs直接把结果返回给客户端
ifdown lo
ifup lo
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0
#以下操作为更改arp内核参数,目的是为了让rs顺利发送mac地址给客户端
#参考文档www.cnblogs.com/lgfeng/archive/2012/10/16/2726308.html
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
18.11 LVS DR模式搭建18.12 keepalived + LVS
最后执行一下脚本
sh /usr/local/sbin/lvs_dr.sh
查看dir上的ens33是否有绑定的vip
18.11 LVS DR模式搭建18.12 keepalived + LVS
查看rs上是否有绑定的vip
18.11 LVS DR模式搭建18.12 keepalived + LVS
3台机器的脚本都执行完成,剩下的就是测试了
在浏览器输入192.168.137.200
但在浏览器上试不出效果,可以是缓存的原因,刷新只有一台机器上
18.11 LVS DR模式搭建18.12 keepalived + LVS
curl在本机上也法测试成功,因为3台机器都绑定了同样的vip,无法使用curl测试,只有重新开一台虚拟机才能用curl测试,但当防问量达到一定多的时候肯定是可以负载均衡的
18.12 keepalived + LVS18.11 LVS DR模式搭建18.12 keepalived + LVS
18.11 LVS DR模式搭建18.12 keepalived + LVS
vim /etc/keepalived/keepalived.conf
先将内容清空
内容
vrrp_instance VI_1 {
#备用服务器上为 BACKUP
state MASTER
#绑定vip的网卡为ens33,你的网卡和阿铭的可能不一样,这里需要你改一下
interface ens33
virtual_router_id 51
#备用服务器上为90
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass aminglinux
}
virtual_ipaddress {
192.168.137.200
}
}
virtual_server 192.168.137.200 80 {
#(每隔10秒查询realserver状态)
delay_loop 10
#(lvs 算法)
lb_algo wlc
#(DR模式)
lb_kind DR
#(同一IP的连接60秒内被分配到同一台realserver)
persistence_timeout 60
#(用TCP协议检查realserver状态)
protocol TCP
real_server 192.168.137.130 80 {
#(权重)
weight 100
TCP_CHECK {
#(10秒无响应超时)
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.137 135 80 {
weight 100
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}

然后启动keepalived服务
systemctl start keepalived
18.11 LVS DR模式搭建18.12 keepalived + LVS
查看一下规则 ,因为之前设置了规则,所以这里有规则
ipvsadm -ln
18.11 LVS DR模式搭建18.12 keepalived + LVS
首先要清空一下规则,停一下keepalived
systemctl stop keeplived
这时候规则没有了
18.11 LVS DR模式搭建18.12 keepalived + LVS
之前设置的虚拟ip192.168.137.200也没有了
18.11 LVS DR模式搭建18.12 keepalived + LVS
再开启keepalived,新的规则出现了
18.11 LVS DR模式搭建18.12 keepalived + LVS
把192.168.137.135的nginx停掉
systemctl stop nginx
隔一段时间再查看,这时候192.168.137.135的机器不见了,这就说明keepalived可以自动检测到那一台机器有问题,就会自动把它排除掉
18.11 LVS DR模式搭建18.12 keepalived + LVS
再开户192.168.1.135主机的nginx
systemctl start nginx
它会自动连接回来
18.11 LVS DR模式搭建18.12 keepalived + LVS
在浏览器上输入19.168.137.200多刷新几次,查看一下负载均衡的关系,基本是1:1的关系
18.11 LVS DR模式搭建18.12 keepalived + LVS
扩展
haproxy+keepalived http://blog.csdn.net/xrt95050/article/details/40926255
nginx、lvs、haproxy比较 http://www.csdn.net/article/2014-07-24/2820837
keepalived中自定义脚本 vrrp_script http://my.oschina.net/hncscwc/blog/158746
lvs dr模式只使用一个公网ip的实现方法 http://storysky.blog.51cto.com/628458/338726