提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
提示:所有的而操作都时在虚拟机中完成
学习LVS的经验贴,自己实际操作时碰到的问题和解决方法。虚拟机环境如下
系统:CentOS 7
一、LVS-NAT是什么?
一种外网和内网的地址映射技术。每一台RealServer的网关是LVS服务器的地址,用户请求的数据进出
都要经过LVS(容易成为瓶颈)。当LVS服务器收到用户请求时会进行目标地址转换(DNAT),将请求
IP修改为后端Real Server的IP,此时客户端IP不变,目标IP时VIP。RealServer响应用户请求时,需要再
让LVS做源地址转换(SNAT),将返回的数据包源地址改为VIP。此时目标IP时客户端IP,而源IP时VIP,
可以着呢工厂响应客户端请求。而对客户端来说仿佛时LVS进行的响应,无法感知到后端RealServer的
存在。
二、NAT的操作步骤
1.准备三台虚拟机。
一台LVS服务器
两台WEB服务器
由于NAT模式的特性,需要在LVS服务器上配置两个网卡,一个网卡用于和外网通信,一个和内网通信。
因为是在虚拟机上操作,所以为了接近真实的网络环境,LVS服务器用于外网通信的网卡需要用桥接模式。另一块网卡需要和WEB服务器在同一个局域网中所以,网卡要和WEB服务器上的一样才行。
LVS:ens33:192.168.47.100
ens34:192.168.64.128
WEB1:192.168.64.129
WEB2:192.168.64.130
web服务器上需要提前部署好可以访问的服务。
接下来开始对LVS服务器操作。
yum install -y ipvsadm
#启动计算机的路由转发功能
echo 1 > /proc/sys/net/ipv4/ip_forward
#添加LVS服务器
ipvsadm -A -t 192.168.47.100:80 -s rr
#添加RealServer IP和可访问的端口
ipvsadm -a -t 192.168.47.100:80 -r 192.168.64.129:80 -m
ipvsadm -a -t 192.168.47.100:80 -r 192.168.64.130:80 -m
WEB服务器
添加路由
#WEB-1
route add -net 192.168.47.0/24 gw 192.168.64.128
#WEB-2
route add -net 192.168.47.0/24 gw 192.168.64.128
LVS-NAT就部署完成了,在部署的过程中,需要注意的点为
- 注意桥接的网卡是否能上网,对外网通信。
- WEB添加的路由信息,LVS重启或WEB重启过后都会失效。
- 在配置完成过后,测试中可以使用 ipvsadm -Lnc 查看数据的转发过程
三、LVS-DR是什么
客户端请求依然由LVS接受,但是最终数据包由Real Server传输给用户,不再经过LVS转发,避免了NAT模式的瓶颈问题。DR模式的工作过程比较复杂:
当用户发起请求时,源地址是客户端IP,目标地址是VIP;而LVS调度器将请求转发给Real Server处理后再发送给用户,这个时候源IP是RIP,目标地址是客户端IP,但是客户端一开始并没有请求RIP,而用RIP去响应请求时CIP是不会接受的,所以就需要用VIP响应请求。在DR模式下LVS和Real server都需要配备一样的VIP(VIP的MAC地址和物理网卡是一样的)(Real Server通过将VIP绑定在loopback实现)。由于一个网段内多台服务器出现同样IP地址会引起冲突,所以要在LVS服务器上设置一个VIP一个DIP,而每个Real Server也有一个RIP和一个VIP,并且将Real Server的VIP地址做了隐藏和ARP抑制,不会应答广播,只在响应CIP时作为源地址使用。当产生请求时LVS将目标MAC地址修改为某台Real Server的MAC,该包就会被转发到相应的Real Server处理,此时源IP和目标IP都没变。Real Server收到LVS转发来的包时发现MAC是自己的,IP也是自己的,于是这个包被合法地接受。当Real Server返回响应时,只要直接向CIP返回即可,不再经过LVS。
LVS-DR的部署
环境同样是三台虚拟机,三个服务器都需要在同一个网段中,由于DR的特性,需要在LVS服务中的网卡中添加一块虚拟网卡,设置一个没用过的IP。同样也需要另外两台服务器中的lo网卡设置相同的虚拟IP。
LVS:ens33:192.168.47.128
ens33:0:192.168.47.100
WEB-1:ens33:192.168.47.129
lo:0:192.168.47.100
WEB-2:ens33:192.168.47.130
lo:0:192.168.47.100
LVS服务器上的操作。
yum install -y ipvsadm
ifconfig ens33:0 192.168.47.100 broadcast 192.168.47.255 netmask 255.255.255.0 up
#此操作可复制一份ifcfg-ens33 进行编辑
route add -host 192.168.47.100 ens33:0
开启计算机路由转发功能
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
设置负载均衡规则
ipvsadm -C
ipvsadm -A -t 192.168.47.100:80 -s rr
ipvsadm -a -t 192.168.47.100:80 -r 192.168.47.129:80 -g
ipvsadm -a -t 192.168.47.100:80 -r 192.168.47.130:80 -g
配置永久生效
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl enable ipvsadm
WEB:
一和二相同的操作
设置虚拟IP
ifconfig lo:0 192.168.47.100/32
设置内核参数
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
客户端访问时,访问虚拟ip