LVS DR模式搭建
- 在生产环境中,使用较多的是DR模式,网站服务器在10台之内的可以使用NAT模式,好处在于节省公网IP资源。DR模式可以搭建内部的LVS,全部使用内网,只使用一个公网IP,做一个端口映射即可(公网的IP 的80端口映射到内网vip上的80端口)
- 准备工作
1 . 需要3台机器,都需要有“公网”IP,但在这种模式下又多了一个vip.
例如:
分发器,也叫调度器(简称dir) 244.136
服务器rs1 :244.135
服务器rs2: 244.137
vip :244.200
2 .将之前修改的2台rs服务器的网关修改成原来的状态,并重启网络服务。如果没有修改过,请忽略这一步。
3 .在分发器(dir)上编辑一个shell脚本
vim /usr/local/sbin/lvs_dr.sh //写入一下内容
#! /bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward //打开端口转发
ipv=/usr/sbin/ipvsadm
vip=192.168.244.200
rs1=192.168.244.135
rs2=192.168.244.137
#注意这里的网卡名字
ifdown ens33
ifup ens33
ifconfig ens33:2 $vip broadcast $vip netmask 255.255.255.255 up
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
$ipv -a -t $vip:80 -r $rs2:80 -g -w 1
4 . 2台rs上也编写脚本
vim /usr/local/sbin/lvs_rs.sh //写入以下内容
#/bin/bash
vip=192.168.244.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
5 . 测试
在浏览器中访问192.168.244.200,可以看到显示的内容有变化,说明配置成功
但是不能再在dir用curl命令测试了,因为vip在三台机器上都有设置,直接curl去访问VIP的话不可能成功,就只能使用浏览器来测试了。
keepalived lvs ##
- lvs架构中,不管是NAT模式还是DR模式,当后端的rs宕机后,调度器依然会把请求转发到宕掉的rs上,这样肯定是不是想要的结果。其实,keepalived加入lvs就可以解决该问题,它不仅有高可用的功能,还有负载均衡的功能。在dir上安装keepalived后,就不用再安装ipvsadm,也不用去编写Lvs相关的脚本了。
- 完整的keepalived+LVS架构需要有2台调度器分别安装keepalived来实现高可用,提供调度服务的只需要1台,另外一台作为备用。
- 实验只安装一台keepalived
1 . 三台机器
dir(安装keepalived)244.136
rs1 244.135
rs2 244.137
vip 200
2 . 编辑配置文件/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.244.200
}
}
virtual_server 192.168.244.200 80 {
#(每隔10秒查询realserver状态)
delay_loop 10
#(lvs 算法)
lb_algo wlc
#(DR模式)
lb_kind DR
#(同一IP的连接60秒内被分配到同一台realserver)
persistence_timeout 0
#(用TCP协议检查realserver状态)
protocol TCP
real_server 192.168.244.135 80 {
#(权重)
weight 100
TCP_CHECK {
#(10秒无响应超时)
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.244.137 80 {
weight 100
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
3 启动keepalived
systemctl start keepalived
4 . 查看链接数
ipvsadm -ln
如果关闭了rs2 ,那么是没有244.137的,但是当打开rs2后,那么就又可以看到链接数的变化,那就说明配置成功。