LVS集群技术

发布于:2025-07-17 ⋅ 阅读:(19) ⋅ 点赞:(0)

LVS-nat模式

本质是多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和 PORT实现转发

 原理

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的调度机容易阻塞

主机 IP 模式
LVS(网卡1) 172.25.254.100 nat
LVS(网卡2) 192.168.0.100 仅主机
Real Server1 192.168.0.10 仅主机
Real Server2 192.168.0.11 仅主机
客户端 172.25.254.110 nat

Real Server 主机 

rs1:192.168.0.10(仅主机)

开启路由转发
[root@localhost ~]# sysctl -a | grep ip_forward
net.ipv4.ip_forward = 0
net.ipv4.ip_forward_update_priority = 1
net.ipv4.ip_forward_use_pmtu = 0
[root@localhost ~]# echo net.ipv4.ip_forward=1 >/etc/sysctl.conf
[root@localhost ~]# sysctl -p
net.ipv4.ip_forward = 1
安装httpd 
[root@localhost ~]# dnf install httpd
[root@localhost ~]# systemctl enable --now httpd
[root@localhost ~]# echo rs1 - 192.168.0.10 >/var/www/html/index.html
[root@localhost ~]# curl 192.168.0.10
rs1 - 192.168.0.10
检测主机网关和防火墙

rs2:192.168.0.11(仅主机)

开启路由转发
[root@localhost ~]# sysctl -a | grep ip_forward
net.ipv4.ip_forward = 0
net.ipv4.ip_forward_update_priority = 1
net.ipv4.ip_forward_use_pmtu = 0
[root@localhost ~]# echo net.ipv4.ip_forward=1 >/etc/sysctl.conf
[root@localhost ~]# sysctl -p
net.ipv4.ip_forward = 1
安装httpd
[root@localhost ~]# dnf install httpd
[root@localhost ~]# systemctl enable --now httpd
[root@localhost ~]# echo rs2 - 192.168.0.11 >/var/www/html/index.html
[root@localhost ~]# curl 192.168.0.11
rs2 - 192.168.0.11
检测主机网关和防火墙

LVS调度服务器

网卡1:172.25.254.100 

网卡2:192.168.0.100

主机中检测

[root@localhost ~]# curl 192.168.0.10
rs1 - 192.168.0.10
[root@localhost ~]# curl 192.168.0.11
rs2 - 192.168.0.11

开启路由转发模式 

[root@localhost ~]# echo net.ipv4.ip_forward=1 >/etc/sysctl.conf
[root@localhost ~]# sysctl -p
net.ipv4.ip_forward = 1

安装ipvsadm 

[root@localhost ~]# dnf install  ipvsadm

建立ipvsadm集群

[root@localhost ~]# ipvsadm -A -t 172.25.254.100:80 -s rr
[root@localhost ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10:80 -m
[root@localhost ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.11:80 -m
​
[root@localhost ~]# ipvsadm-save
-A -t localhost.wan.org:http -s rr
-a -t localhost.wan.org:http -r 192.168.0.10:http -g -w 1
-a -t localhost.wan.org:http -r 192.168.0.11:http -g -w 1
-A -t 172.25.254.202:http -s rr
[root@localhost ~]# ipvsadm-save > /etc/ipvsadm
[root@localhost ~]# systemctl enable --now ipvsadm

客户端测试

client 172.25.254.110

LVS-DR模式

Direct Routing,直接路由,LVS默认模式,应用最广泛,通过为请求报文重新封装一个MAC首部进行 转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源 IP/PORT,以及目标IP/PORT均保持不变

原理

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

主机 IP 模式
Router(网卡1) 172.25.254.100 nat
Router(网卡2) 192.168.0.100 仅主机
Real Server1 192.168.0.10 仅主机
Real Server2 192.168.0.11 仅主机
DR-lvs 192.168.0.200 仅主机
客户端 172.25.254.110 nat

设置回环

rs1:192.168.0.10

[root@localhost ~]# cd /etc/NetworkManager/system-connections/
[root@localhost system-connections]# ls
ens160.nmconnection  lo.nmconnection
[root@localhost system-connections]# vim lo.nmconnection [connection]
id=lo
type=loopback
interface-name=lo

[ipv4]
address1=127.0.0.1/8
address2=192.168.0.254/32
dns=114.114.114.114;
method=manual

设定主机lo不对外响应 
[root@localhost ~]# sysctl -a |grep arp
[root@localhost ~]# echo net.ipv4.conf.lo.arp_ignore = 1 >>/etc/sysctl.conf
[root@localhost ~]# echo net.ipv4.conf.lo.arp_announce = 2 >>/etc/sysctl.conf
[root@localhost ~]# echo net.ipv4.conf.all.arp_ignore = 1 >>/etc/sysctl.conf
[root@localhost ~]# echo net.ipv4.conf.all.arp_announce = 2  >> /etc/sysctl.conf
[root@localhost ~]# sysctl -p
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

rs2:192.168.0.11

[root@localhost ~]# cd /etc/NetworkManager/system-connections/
[root@localhost system-connections]# ls
ens160.nmconnection  lo.nmconnection
[root@localhost system-connections]# vim lo.nmconnection 
[connection]
id=lo
type=loopback
interface-name=lo

[ipv4]
address1=127.0.0.1/8
address2=192.168.0.254/32
dns=114.114.114.114;
method=manual

设定主机lo不对外响应
[root@localhost ~]# sysctl -a |grep arp
[root@localhost ~]# echo net.ipv4.conf.lo.arp_ignore = 1 >>/etc/sysctl.conf
[root@localhost ~]# echo net.ipv4.conf.lo.arp_announce = 2 >>/etc/sysctl.conf
[root@localhost ~]# echo net.ipv4.conf.all.arp_ignore = 1 >>/etc/sysctl.conf
[root@localhost ~]# echo net.ipv4.conf.all.arp_announce = 2  >> /etc/sysctl.conf
[root@localhost ~]# sysctl -p
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

 router:

网卡1:172.25.254.100(不设置网关)

网卡2:192.168.0.100(不设置网关)

[root@localhost ~]# cd /etc/NetworkManager/system-connections/
[root@localhost system-connections]# vim ens160.nmconnection
[connection]
id=ens160
uuid=7b186c35-1990-39ca-b128-fa2365823c2e
type=ethernet
autoconnect-priority=-999
interface-name=ens160
timestamp=1752656653

[ipv4]
address1=172.25.254.100/24
method=manual
[root@localhost ~]# cd /etc/NetworkManager/system-connections/
[root@localhost system-connections]# vim ens192.nmconnection
[connection]
id=ens160
uuid=7b186c35-1990-39ca-b128-fa2365823c2e
type=ethernet
autoconnect-priority=-999
interface-name=ens160
timestamp=1731166971

[ipv4]
method=auto
address1=192.168.0.100/24


lvs-dr :192.168.0.200

[root@localhost system-connections]# vim ens160.nmconnection 
[connection]
id=ens160
uuid=7b186c35-1990-39ca-b128-fa2365823c2e
type=ethernet
autoconnect-priority=-999
interface-name=ens160
timestamp=1731166971

[ipv4]
method=auto
address1=192.168.0.200/24,192.268.0.100
address2=192.168.0.254/24
dns=8.8.8.8

 建立ipvsadm集群

[root@localhost ~]# ipvsadm -A -t 192.168.0.254:80 -s rr
[root@localhost ~]# ipvsadm -a -t 192.168.0.254:80 -r 192.168.0.10:80 -g
[root@localhost ~]# ipvsadm -a -t 192.168.0.254:80 -r 192.168.0.11:80 -g
[root@localhost ~]# 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.254:80 rr
  -> 192.168.0.10:80              Route   1      0          0
  -> 192.168.0.11:80              Route   1      0          0

客户端测试:172.25.254.110

LVS-TUN模式

转发方式:不修改请求报文的IP首部(源IP为CIP,目标IP为VIP),而在原IP报文之外再封装一个IP首部 (源IP是DIP,目标IP是RIP),将报文发往挑选出的目标RS;RS直接响应给客户端(源IP是VIP,目标IP 是CIP)

1.客户端发送请求数据包,包内有源IP+vip+dport

2.到达vs调度器后对客户端发送过来的数据包重新封装添加IP报文头,新添加的IP报文头中包含 TUNSRCIP(DIP)+TUNDESTIP(RSIP1)并发送到RS1

3.RS收到VS调度器发送过来的数据包做出响应,生成的响应报文中包含SRCIP(VIP)+DSTIP(CIP) +port,响应数据包通过网络直接回传给client

LVS-fullnet模式

通过同时修改请求报文的源IP地址和目标IP地址进行转发 CIP --> DIP VIP --> RIP

原理

 1.VIP是公网地址,RIP和DIP是私网地址,且通常不在同一IP网络;因此,RIP的网关一般不会指向DIP

2.RS收到的请求报文源地址是DIP,因此,只需响应给DIP;但Director还要将其发往Client 3.请求和响应报文都经由Director

4.支持端口映射


网站公告

今日签到

点亮在社区的每一天
去签到