LVS(Linux virual server)
目录
LVS简介(重点NAT模式和DR模式)
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
测试效果

更多推荐



所有评论(0)