目录

LVS简介(重点NAT模式和DR模式)

LVS概念

LVS集群的类型

环境需求

nat模式介绍

nat实验

DR模式介绍

DR实验


LVS简介(重点NAT模式和DR模式)

LVS 全称 Linux Virtual Server ,是 Linux 内核层实现的 高性能、高可用
的负载均衡集群技术 ,由章文嵩博士开发,目前是 Linux 内核的标准模块
之一。它的核心作用是将前端的请求流量分发到后端多台真实服务器
Real Server )上,从而提升服务的并发处理能力和可用性。

LVS概念

集群体系

LVS集群的类型

lvs-nat: 修改请求报文的目标IP,多目标IP的DNAT

lvs-dr: 操纵封装新的MAC地址

lvs-tun: 在原请求IP报文之外新加一个IP首部

lvs-fullnat: 修改请求报文的源和目标IP

环境需求

调度器需要安装ipvsadm,且保证内网互通

 dnf install ipvsadm-1.31-8.el9.x86_64
主机名 角色
server1 调度器(VS) 
server2 真实服务器(RS)
server3 真实服务器(RS)
server4 测试机

nat模式介绍

1.客户端发送访问请求,请求数据包中含有请求来源(cip),访问目标地址(VIP)访问目标端口 (9000port)
2.VS服务器接收到访问请求做DNAT把请求数据包中的目的地由VIP换成RS的RIP和相应端口 
3.RS1相应请求,发送响应数据包,包中的相应保温为数据来源(RIP1)响应目标(CIP)相应端口 (9000port)
4.VS服务器接收到响应数据包,改变包中的数据来源(RIP1-->VIP),响应目标端口(9000-->80) 
5.VS服务器把修改过报文的响应数据包回传给客户端
6.lvs的NAT模式接收和返回客户端数据包时都要经过lvs的调度机,所以lvs的调度机容易阻塞客户请求到达vip后进入PREROUTING,在没有ipvs的时候因该进入本机INPUT,当IPVS存在后访问请求在通 过PREROUTING后被ipvs结果并作nat转发 因为ipvs的作用点是在PREROUTING和INPUT链之间,所以如果在prerouting中设定规则会干扰ipvs的工 作。所以在做lvs时要把iptables的火墙策略全清理掉。

nat实验

VIP 172.25.1.40
DIP 192.168.0.40
RIP1 192.1680.20
RIP2 192.1680.30

实验前先搭建环境,保证互通且能正常访问后端web服务器

ipvsadm -Ln             #查看LVS的调度规则
ipvsadm -A -t 172.25.1.40:80 -s rr  #创建 VIP 172.25.1.40:80,使用轮询调度算法。
ipvsadm -a -t 172.25.1.40:80 -r 192.168.0.30 -m   #将 192.168.0.30 加入 VIP,NAT 模式转发。
ipvsadm -a -t 172.25.1.40:80 -r 192.168.0.20 -m   #将 192.168.0.20 加入 VIP,NAT 模式转发。

DR模式介绍

1.客户端发送数据帧给vs调度主机帧中内容为客户端IP+客户端的MAC+VIP+VIP的MAC

2.VS调度主机接收到数据帧后把帧中的VIP的MAC该为RS1的MAC,此时帧中的数据为客户端IP+客户端 的MAC+VIP+RS1的MAC

3.RS1得到2中的数据包做出响应回传数据包,数据包中的内容为VIP+RS1的MAC+客户端IP+客户端IP的 MAC

1.Director和各RS都配置有VIP

2.确保前端路由器将目标IP为VIP的请求报文发往Director

3.在前端网关做静态绑定VIP和Director的MAC地址

在RS上使用arptables工具

arptables -A IN -d $VIP -j DROP

arptables -A OUT -s $VIP -j mangle --mangle-ip-s $RIP

在RS上修改内核参数以限制arp通告及应答级别

/proc/sys/net/ipv4/conf/all/arp_ignore 

 /proc/sys/net/ipv4/conf/all/arp_announce

4.RS的RIP可以使用私网地址,也可以是公网地址;RIP与DIP在同一IP网络;

5.RIP的网关不能指向DIP,以确保响应报文不会经由Director

6.RS和Director要在同一个物理网络

7.请求报文要经由Director,但响应报文不经由Director,而由RS直接发往Client

8.不支持端口映射(端口不能修败)

9.RS可使用大多数OS系统

DR实验

路由器需要NAT模式(IP: 172.25.1.10/24)和仅主机模式(IP:192.168.0.10/24)

vsnode需要仅主机模式(VIP:192.168.0.80/24 )(DIP:192.168.0.40/24)

RS1需要仅主机模式(RIP:192.168.0.20/24)(lo:192.168.0.80/32)

RS1需要仅主机模式(RIP:192.168.0.30/24)(lo:192.168.0.80/32)

#在路由器中
[root@router ~]# systemctl disable --now ipvsadm.service
Removed "/etc/systemd/system/multi-user.target.wants/ipvsadm.service".
[root@router ~]# ipvsadm -C

#在路由器中
[root@router ~]# vmset.sh eth0 172.25.254.100 vsnode
[root@router ~]# vmset.sh eth1 192.168.0.100 vsnode noroute、

#设定内核路由功能
[root@router ~]# echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf
[root@router ~]# sysctl  -p
net.ipv4.ip_forward = 1

#数据转发策略
[root@router ~]#iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 192.168.0.10
[root@KA1 ~]# iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source   172.25.1.10

RS1和RS2中解决响应问题 [root@rs1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore [root@rs1 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore [root@rs1 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce [root@rs1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce [root@rs2 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore [root@rs2 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore [root@rs2 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce [root@rs2 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

[root@KA1 ~]# ipvsadm -A -t 192.168.0.80:80 -s wrr
[root@KA1 ~]#  ipvsadm -a -t 192.168.0.80:80 -r 192.168.0.20:80 -g
[root@KA1 ~]# ipvsadm -a -t 192.168.0.80:80 -r 192.168.0.30:80 -g
[root@KA1 ~]#  ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.0.80:80 wrr
  -> 192.168.0.20:80              Route   1      0          0
  -> 192.168.0.30:80              Route   1      0          0
 

测试效果

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐