一、概述

LVS作为一个百万级的调度器,非常适合高并发的场景。LVS在早期Linux不是内核的功能,需要单独安装软件包,现在的内核已经将LVS功能集成在内核中,LVS的整体网络架构如下:

image.png

二、LVS常用的两种算法

1、NAT(网络地址转换)模式

  1. 客户端向LVS调度器发起请求(更多的情况LVS前有防火墙做NAT映射)
  2. LVS调度器将请求转发给内部服务器的RealServer
  3. RealServer的回程路由必须要通过LVS调度器
  4. LVS调度器将请求发给客户端 整个访问流程跟用防火墙或者Linux做DNAT一致,所以这种模式是NAT模式。 image.png

2、DR(直接路由)模式

  1. 客户端向LVS调度器发起请求(更多的情况LVS前有防火墙做NAT映射)
  2. LVS调度器将请求转发给内部服务器的RealServer,请求的地址集群的虚拟IP地址。
  3. RealServer以虚拟IP作为源地址对客户端进行响应,通过各自的路由直接返回。

整个访问流程是通过LVS调度器接收请求,真正响应回包是通过RealServer自己的网络去响应。 image.png

三、LVS的DR模式的实践

实验拓扑: image.png

1、开启ROUTER服务器的IP_FORWARD功能

echo  1 > /proc/sys/net/ipv4/ip_forward

配置外网卡地址

nmcli con add con-name ens37 type ethernet \
 ifname ens37 ipv4.addresses  192.168.28.128/24 \
ipv4.method manual autoconnect yes
nmcli con up ens37

配置内网卡地址

nmcli con add con-name ens33 type ethernet \
 ifname ens33 ipv4.addresses  192.168.96.133/24 \
ipv4.method manual autoconnect yes
nmcli con up ens33

2、配置LVS服务器

配置回环VIP 地址

 ip address add 192.168.96.200/32 label lo:1 dev lo

配置LVS的规则

ipvsadm -A -t 192.168.96.200:80 -s rr
ipvsadm -a -t 192.168.96.200:80 -r 192.168.96.8 -g 
ipvsadm -a -t 192.168.96.200:80 -r 192.168.96.18 -g 

image.png

3、配置客户端IP地址

image.png

4、配置RS1服务器IP地址

配置IP地址

nmcli con add con-name ens33 type ethernet \
 ifname ens33 ipv4.addresses  192.168.96.8/24 \
ipv4.address 192.168.96.133 ipv4.method manual \
autoconnect yes
nmcli con up ens33

配置arp应答忽略

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore 
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore 
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce 

配置VIP回环地址

 ip address add 192.168.96.200/32 label lo:1 dev lo

配置测试web服务 image.png 创建测试页

 echo "This test page on RS1" > /var/www/html/index.html

5、配置RS2服务器

配置IP地址

nmcli con add con-name ens33 type ethernet \
 ifname ens33 ipv4.addresses  192.168.96.18/24 \
ipv4.address 192.168.96.133 ipv4.method manual \
autoconnect yes
nmcli con up ens33

配置arp忽略

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore 
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore 
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce 

配置VIP回环地址

 ip address add 192.168.96.200/32 label lo:1 dev lo

配置测试web服务 image.png 创建测试页面

echo "This test page on RS2" > /var/www/html/index.html

6、测试客户端访问

image.png

查看RS2服务器的日志 image.png ++注意:在router和LVS服务器上默认是开启的firewalld并且不允许80访问的,在测试过程中需要查看是否因为防火墙阻止访问失败,报错抓包如下。 image.png++

四、总结

通过上面的实现基础的LVS DR模型的配置,在配置过程中注意SELINUX 和FIREWALLD影响。