LVS负载均衡集群配置(小白的“升级打怪”成长之路)

个人信息保护合规审计人员(高级)能力考核试卷+面试模拟 《个人信息保护合规审计考试与面试指南》 摘要:本文提供个人信息保护合规审计考试及面试的全面指导。考试采用闭卷笔试形式,满分100分,合格线75分,时长120分钟,包含单选、多选、判断题及综合案例分析题。内容涵盖《个人信息保护法》核心条款、审计程序、风险评估等实务要点。面试环节采用情景模拟方式,重点考察应试者在压力下处理审计独立性、客户关系与监管要求的平衡能力,以及应对数据泄露等突发事件的处置流程。案例题聚焦大型互联网平台的数据收集、共享、跨境传输等高风险环节的合规审计,要求设计完整的审计方案框架。面试评分标 阅读详情

目录

LVS负载均衡集群实验

一、基于NAT的LVS负载均衡

1.1、工作原理

1.2、LVS-NAT模型的特性

1.3、NAT的优点

1.4、NAT的缺点

实战案例

1、LVS调度器配置

2、真实服务器配置

3、LVS调度器配置负载分配策略

4、验证

二、基于DR的LVS负载均衡

2.1、DR 实现原理

2.2、DR 模式的优点

2.3、DR 模式的缺点

2.4、DR 模式的使用场景

实战案例

1、LVS调度器配置

2、真实服务器配置

3、验证

三、基于TUN的LVS负载均衡

3.1、实现原理

3.2、TUN 模式的优点

3.3、TUN 模式的缺点

实战案例

1、LVS调度器配置

2、真实服务器web2配置

3、真实服务器web2配置

4、验证

看到感觉有帮助的朋友,劳烦动动发财的小手给博主点个赞


LVS负载均衡集群实验

一、基于NAT的LVS负载均衡

NAT(network address translation) 网络地址转换,其主要原理是修改数据报头,使得位于企业内部的私有ip地址可以访问外网,以及外部用户可以访问位于公司内部的私有的ip主机。

LVS调度器中有一个连接Hash表,该表会记录连接请求及其转发信息,当同一个连接下一个数据包发送给调度器时,该Hash表可以直接找到之前连接的记录,并根据记录信息选出相同真实服务器及其端口信息。

1.1、工作原理

  • 当用户的请求到达调度器时,请求报文会先到内核空间的PREROUTING链上。此时报文的源IP为CIP,目标IP为VIP

  • PREROUTING检查发现数据包的目标IP是本机,就将数据包送至INPUT链。

  • IPVS工作在INPUT链上,当数据包抵达INPUT链后,IPVS会检查数据包所请求的服务是否为集群服务,若是,修改数据包的目标IP地址为后端服务器RIP,然后将数据包送往 POSTROUTING链。此时报文的源IP为CIP,目标IP为RIP。

  • POSTROUTING链通过选路,将数据包转发给Real Server

  • Real Server对比发现目标IP是自己,就会接受这个请求报文,开始构建响应报文发回给调度器。源IP为RIP,目标IP为CIP

  • 调度器在响应客户端前,会将报文的源IP地址修改为自己的VIP,然后响应给客户端。此时报文的源IP为VIP,目标IP为CIP

1.2、LVS-NAT模型的特性

  • RS应该使用私有地址,RS的网关必须指向DIP

  • DIP和RIP必须要在同一网段中

  • 请求报文和响应报文都需要经过调度器,高负载场景中,调度器容易成为性能瓶颈。

  • 支持端口映射

  • RS可以使用任意操作系统

1.3、NAT的优点

集群中的物理服务器可以使用任何支持TCP/IP操作系统它只需要一个 IP 地址配置在调度器上,服务器组可以用私有的 IP 地址。

1.4、NAT的缺点

伸缩能力有限,当服务器节点(普通PC服务器)增长过多时,负载均衡器将成为整个系统的瓶颈,因为所有的请求包和应答包的流向都经过负载均衡器。当服务器节点过多时,大量的数据包都交汇在负载均衡器那,速度就会变慢。

实战案例

准备三台主机,其中两台主机作为真实服务器(ip分别为192.168.100.1和192.168.100.2),一台主机作为前端负载均衡器节点(内设两个ip,分别192.168.100.100和192.168.58.180)

1、LVS调度器配置

####192.168.58.180
##安装ipvsadm
[root@localhost ~]# yum insatll -y ipvsadm
##加载ip_vs模块
[root@localhost ~]# modprobe ip_vs
[root@localhost ~]# lsmod | grep ip_vs
ip_vs                 229376  0
nf_conntrack          212992  1 ip_vs
nf_defrag_ipv6         24576  2 nf_conntrack,ip_vs
libcrc32c              12288  2 nf_conntrack,ip_vs
​
##修改主机名
[root@localhost ~]# hostnamectl set-hostname lvs
[root@localhost ~]# bash
​
​
Welcome to 6.6.0-79.0.0.84.oe2403sp1.x86_64
​
System information as of time:  2025年 07月 12日 星期六 21:07:49 CST
​
System load:    0.00
Memory used:    8.1%
Swap used:      0%
Usage On:       5%
IP address:     192.168.100.100
IP address:     192.168.58.180
Users online:   2
​
##开启路由功能
[root@lvs ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
​
[root@lvs ~]# sysctl -p
kernel.sysrq = 0
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.tcp_syncookies = 1
kernel.dmesg_restrict = 1
net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0
​
##启动ipvsadm服务
[root@lvs ~]# touch /etc/sysconfig/ipvsadm
[root@lvs ~]# systemctl enable --now ipvsadm
Created symlink /etc/systemd/system/multi-user.target.wants/ipvsadm.service → /usr/lib/systemd/system/ipvsadm.service.
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

2、真实服务器配置

####192.168.100.1
##修改主机名
[root@localhost ~]# hostnamectl set-hostname web1
[root@localhost ~]# bash
​
[root@web1 ~]# yum insatll -y nginx
​
[root@web1 ~]# systemctl start nginx
[root@web1 ~]# echo web1 > /usr/share/nginx/html/index.html 
####192.168.100.2
##修改主机名
[root@localhost ~]# hostnamectl set-hostname web2
[root@localhost ~]# bash
​
[root@web2 ~]# yum insatll -y nginx
​
[root@web2 ~]# systemctl start nginx
[root@web2 ~]# echo web2 > /usr/share/nginx/html/index.html 

3、LVS调度器配置负载分配策略

####192.168.58.180
[root@lvs ~]# curl 192.168.100.1
web1
[root@lvs ~]# curl 192.168.100.2
web2
​
##配置添加虚拟服务节点为192.168.58.180:80,算法为轮询
[root@lvs ~]# ipvsadm -A -t 192.168.58.180:80 -s rr
[root@lvs ~]# 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.58.180:80 rr
##配置虚拟服务节点192.168.58.180:80指定真实服务器节点IP地址,NAT模式
[root@lvs ~]# ipvsadm -a -t 192.168.58.180:80 -r 192.168.100.1 -m
[root@lvs ~]# ipvsadm -a -t 192.168.58.180:80 -r 192.168.100.2 -m
[root@lvs ~]# 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.58.180:80 rr
  -> 192.168.100.1:80             Masq    1      0          0         
  -> 192.168.100.2:80             Masq    1      0          0 

4、验证

网站访问192.168.58.180

二、基于DR的LVS负载均衡

直接路由:Direct Routing,简称 DR 模式,采用半开放式的网络结构,与 TUN 模式的结构类似,但各节点并不是分散在各个地方,而是与调度器位于同一个物理网络,负载调度器与各节点服务器通过本地网络连接,不需要建立专用的 IP 隧道。它是最常用的工作模式,因为它的功能性强大。

2.1、DR 实现原理

  • 当客户端用户发送请求给 www.baidu.com 网站时,首先经过 DNS 解析到 IP 后并向百度服务器发送请求,数据包经过网络到百度 LVS 负载均衡服务器。

  • 这时到达 LVS 网卡时的数据包包括:源 IP 地址(客户端地址)、目的 IP 地址(百度对外服务器 IP 地址,也就是 VIP)、源 MAC 地址(CMAC / LVS 连接路由器的 MAC 地址)、目标 MAC 地址(VMAC / VIP 对应的 MAC 地址)。

  • 数据包到达网卡后,经过链路层到达 PREROUTING 链,进行查找路由,发现目的 IP 是 LVS 的 VIP,这时就会发送至 INPUT 链中并且数据包的 IP 地址、MAC 地址、Port 都未经过修改。

  • 数据包到达 INPUT 链中,LVS 会根据目的 IP 和 Port(端口)确认是否为 LVS 定义的服务。

  • 如是定义过的 VIP 服务,会根据配置的服务信息,从 RealServer 中选择一个后端服务器 RS1,然后 RS1 作为目标出方向的路由,确定下一跳信息及数据包通过具体的哪个网卡发出,最好将数据包通过 INET_HOOK 到 OUTPUT 链中。

  • 数据包通过 POSTROUTING 链后,目的 MAC 地址将会修改为 RealServer 服务器 MAC 地址(RMAC)源 MAC 地址修改为 LVS 与 RS 同网段的 IP 地址的 MAC 地址(DMAC)此时,数据包将会发至 RealServer 服务器。

  • 数据包到达 RealServer 服务器后,发现请求报文的 MAC 地址是自己的网卡 MAC 地址,将会接受此报文,待处理完成之后,将响应报文通过 lo 接口传送给 eth0 网卡然后向外发出。

  • 此时的源 IP 地址为 VIP,目标 IP 为 CIP,源 MAC 地址为 RS1 的 RMAC,目的 MAC 地址为下一跳路由器的 MAC 地址(CMAC),最终数据包通过 RS 相连的路由器转发给客户端。

2.2、DR 模式的优点

  • 响应数据不经过 LVS,性能高。

  • 对数据包修改小,信息完整性好。

2.3、DR 模式的缺点

  • LVS 与 RS 必须在同一个物理网络。

  • RS 上必须配置 lo 和其他内核参数。

  • 不支持端口映射。

2.4、DR 模式的使用场景

对性能要求高的,可首选 DR 模式,还可透传客户端源 IP 地址。

实战案例

所有主机在同一网段下

准备三台主机,其中两台主机作为真实服务器(ip分别为192.168.100.1和192.168.100.2),一台主机作为LVS调度器(ip为192.168.100.100)

1、LVS调度器配置

####192.168.100.100
##安装ipvsadm
[root@localhost ~]# yum insatll -y ipvsadm
##加载ip_vs模块
[root@localhost ~]# modprobe ip_vs
[root@localhost ~]# lsmod | grep ip_vs
ip_vs                 229376  0
nf_conntrack          212992  1 ip_vs
nf_defrag_ipv6         24576  2 nf_conntrack,ip_vs
libcrc32c              12288  2 nf_conntrack,ip_vs
​
##修改主机名
[root@localhost ~]# hostnamectl set-hostname lvs
[root@localhost ~]# bash
​
​
Welcome to 6.6.0-79.0.0.84.oe2403sp1.x86_64
​
System information as of time:  2025年 07月 12日 星期六 21:07:49 CST
​
System load:    0.00
Memory used:    8.1%
Swap used:      0%
Usage On:       5%
IP address:     192.168.100.100
IP address:     192.168.58.180
Users online:   2
​
​
[root@lvs ~]# vim /etc/sysctl.conf
##加入这条内容
net.ipv4.conf.ens160.send_redirects = 0
​
[root@lvs ~]# sysctl -p
kernel.sysrq = 0
net.ipv4.conf.ens160.send_redirects = 0
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.tcp_syncookies = 1
kernel.dmesg_restrict = 1
net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0
​
[root@lvs ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:16:2b:5c brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.100/24 brd 192.168.100.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe16:2b5c/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
##配置虚拟IP地址
[root@lvs ~]# ifconfig ens160:0 192.168.100.101/24
[root@lvs ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:16:2b:5c brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.100/24 brd 192.168.100.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet 192.168.100.101/24 brd 192.168.100.255 scope global secondary ens160:0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe16:2b5c/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
​
​
##启动ipvsadm服务
[root@lvs ~]# touch /etc/sysconfig/ipvsadm
[root@lvs ~]# systemctl enable --now ipvsadm
Created symlink /etc/systemd/system/multi-user.target.wants/ipvsadm.service → /usr/lib/systemd/system/ipvsadm.service.
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
​
##配置添加虚拟服务节点为192.168.100.101:80,算法为轮询
[root@lvs ~]# ipvsadm -A -t 192.168.100.101:80 -s rr
##配置虚拟服务节点192.168.100.101:80指定真实服务器节点IP地址,默认直接路由模式
[root@lvs ~]# ipvsadm -a -t 192.168.100.101:80 -r 192.168.100.1:80
[root@lvs ~]# ipvsadm -a -t 192.168.100.101:80 -r 192.168.100.2:80
[root@lvs ~]# 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.100.101:80 rr
  -> 192.168.100.1:80             Route   1      0          0         
  -> 192.168.100.2:80             Route   1      0          0         
##保存策略
[root@lvs ~]# ipvsadm-save > /etc/sysconfig/ipvsadm
[root@lvs ~]# cat /etc/sysconfig/ipvsadm
-A -t lvs:http -s rr
-a -t lvs:http -r 192.168.100.1:http -g -w 1
-a -t lvs:http -r 192.168.100.2:http -g -w 1

2、真实服务器配置

####192.168.100.1
##修改主机名
[root@localhost ~]# hostnamectl set-hostname web1
[root@localhost ~]# bash
​
[root@web1 ~]# yum insatll -y nginx
​
[root@web1 ~]# systemctl start nginx
[root@web1 ~]# echo web1 > /usr/share/nginx/html/index.html 
​
##防止VIP在同一网络产生IP地址冲突
[root@web1 ~]# vim /etc/sysctl.conf 
##在最后加入这段配置,防止ip冲突
net.ipv4.conf.all.arp_ignore=1 
net.ipv4.conf.all.arp_announce=2 
net.ipv4.conf.default.arp_ignore=1 
net.ipv4.conf.default.arp_announce = 2 
net.ipv4.conf.lo.arp_ignore = 1 
net.ipv4.conf.lo.arp_announce=2
​
[root@web1 ~]# sysctl -p
kernel.sysrq = 0
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.tcp_syncookies = 1
kernel.dmesg_restrict = 1
net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
​
##配置虚拟IP地址
[root@web1 ~]# ifconfig lo:0 192.168.100.101/32
[root@web1 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet 192.168.100.101/0 scope global lo:0
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:66:09:cd brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.1/24 brd 192.168.100.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe66:9cd/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
##添加回环路由
[root@web1 ~]# route add -host 192.168.100.101/32 dev lo:0
####192.168.100.2
##修改主机名
[root@localhost ~]# hostnamectl set-hostname web2
[root@localhost ~]# bash
​
[root@web2 ~]# yum insatll -y nginx
​
[root@web2 ~]# systemctl start nginx
[root@web2 ~]# echo web2 > /usr/share/nginx/html/index.html 
​
##防止VIP在同一网络产生IP地址冲突
[root@web2 ~]# vim /etc/sysctl.conf 
##在最后加入这段配置,防止ip冲突
net.ipv4.conf.all.arp_ignore=1 
net.ipv4.conf.all.arp_announce=2 
net.ipv4.conf.default.arp_ignore=1 
net.ipv4.conf.default.arp_announce = 2 
net.ipv4.conf.lo.arp_ignore = 1 
net.ipv4.conf.lo.arp_announce=2
​
[root@web2 ~]# sysctl -p
kernel.sysrq = 0
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.tcp_syncookies = 1
kernel.dmesg_restrict = 1
net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
​
##配置虚拟IP地址
[root@web2 ~]# ifconfig lo:0 192.168.100.101/32
[root@web2 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet 192.168.100.101/0 scope global lo:0
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:66:09:cd brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.2/24 brd 192.168.100.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe66:9cd/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
##添加回环路由
[root@web2 ~]# route add -host 192.168.100.101/32 dev lo:0

3、验证

网站访问192.168.100.101

三、基于TUN的LVS负载均衡

IP 隧道:IP Tunnel,简称:TUN 模式,采用开放式的网络结构,负载调度器作为客户机的访问入口,各节点通过各自的 Internet 连接直接回应给客户机,而不经过负载调度器,服务器节点分散在互联网中的不同位置,有独立的公网 IP 地址,通过专用 IP 隧道与负载调度器相互通信。

3.1、实现原理

  • 在原有的ip报文外在封装多一层的ip首部,内部ip首部(原地址为cip,目标ip为vip),外层ip首部原地址为dip,.目标地址为rip

  • 客户端发送数据包经过网络后到 LVS 网卡,数据包源 IP 为 CIP,目的 IP 为 VIP。

  • 进入 PREROUTING 链后,会根据目的 IP 去查找路由,确定是否为本机 IP,数据包将转发至 INPUT 链中,到 LVS,源 IP 和 目的 IP 不变。

  • 到 LVS 后,通过目的 IP 和目的 PORT 查找是否为 IPVS 服务,如是 IPVS 服务,将会选择一个 RS 后端服务器, 源 IP 为 DIP,目标 IP 为 RIP,数据包将会转发至 OUTPUT 链中。

  • 数据包根据路由信息到达 LVS 网卡,发送至路由器网关,最终到达后端服务器。

  • 后端服务器收到数据包后,会拆掉最外层的 IP 地址后,会发现还有一层 IP 首部,源 IP 为 CIP,目的 IP 为 VIP,TUNL0 上配置 VIP,查找路由后判断为本机 IP 地址,将会发给用户空间层的应用程序响应后 VIP 为源 IP,CIP 为目的 IP 数据包发送至网卡,最终返回至客户端用户。

3.2、TUN 模式的优点

  • 单臂模式,LVS 负载压力小。

  • 数据包修改小,信息完整性高。

  • 可跨机房。

3.3、TUN 模式的缺点

  • 不支持端口映射。

  • 需在 RS 后端服务器安装模块(ipip)及配置 VIP。

  • 隧道头部 IP 地址固定,RS 后端服务器网卡可能会不均匀。

  • 隧道头部的加入可能会导致分片,最终会影响服务器性能。

实战案例

1、LVS调度器配置

####192.168.100.100
#清空清除DR模式的策略
[root@lvs ~]# ipvsadm -C
#加载隧道模块
[root@lvs ~]# modprobe ipip
[root@lvs ~]#  ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:16:2b:5c brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.100/24 brd 192.168.100.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe16:2b5c/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
4: ens224: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:16:2b:66 brd ff:ff:ff:ff:ff:ff
8: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
    link/ipip 0.0.0.0 brd 0.0.0.0
[root@lvs ~]# ip route
192.168.100.0/24 dev ens160 proto kernel scope link src 192.168.100.100 metric 102 
#添加ip临时添加
[root@lvs ~]# ip addr add 192.168.100.101/24 dev tunl0
#使网卡生效
[root@lvs ~]# ip link set up tunl0
#删除tunl0路由,否则同网段两个相同路由,会导致冲突,无法向外访问
[root@lvs ~]# ip route del 192.168.100.0/24 dev tunl0
​
#设置轮询调度
[root@lvs ~]# ipvsadm -A -t 192.168.100.101:80 -s rr
#-i表示隧道模式,指向真实的web服务器
[root@lvs ~]# ipvsadm -a -t 192.168.100.101:80 -r 192.168.100.1:80 -i
[root@lvs ~]# ipvsadm -a -t 192.168.100.101:80 -r 192.168.100.2:80 -i
#查看配置的策略
[root@lvs ~]# 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.100.101:80 rr
  -> 192.168.100.1:80             Tunnel  1      0          0         
  -> 192.168.100.2:80             Tunnel  1      1          0    

2、真实服务器web2配置

####192.168.100.1
#加载隧道模块
[root@web1 ~]# modprobe ipip
[root@web1 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host proto kernel_lo 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:66:09:cd brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.1/24 brd 192.168.100.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe66:9cd/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
6: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
    link/ipip 0.0.0.0 brd 0.0.0.0
[root@web1 ~]# ip route
default via 192.168.100.100 dev ens160 proto static metric 100 
127.0.0.0/8 dev lo proto kernel scope link src 127.0.0.1 metric 30 
192.168.100.0/24 dev ens160 proto kernel scope link src 192.168.100.1 metric 100 
#添加ip临时添加
[root@web1 ~]# ip addr add 192.168.100.101/24 dev tunl0
#使网卡生效
[root@web1 ~]# ip link set up tunl0
#删除tunl0路由,否则同网段两个相同路由,会导致冲突,无法向外访问
[root@web1 ~]# ip route del 192.168.100.0/24 dev tunl0
​
#开启路由转发功能,过滤规则
[root@web1 ~]# vim /etc/sysctl.conf 
#在最后加上以下内容
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.all.arp_filter = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.arp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.ens160.arp_filter = 0
net.ipv4.conf.ens160.rp_filter = 0
net.ipv4.conf.lo.arp_filter = 0
net.ipv4.conf.lo.rp_filter = 0
net.ipv4.conf.tunl0.arp_filter = 0
net.ipv4.conf.tunl0.rp_filter = 0
[root@web1 ~]# sysctl -p
​
#查看配置的网页内容
[root@web1 ~]# cat /usr/share/nginx/html/index.html 
web1

3、真实服务器web2配置

与真实服务器web1同理配置

[root@web2 ~]# ipvsadm -C
[root@web2 ~]# modprobe ipip
[root@web2 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:80:88:5d brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.2/24 brd 192.168.100.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe80:885d/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: ens224: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:80:88:67 brd ff:ff:ff:ff:ff:ff
4: tunl0@NONE: <NOARP,UP,LOWER_UP> mtu 1480 qdisc noqueue state UNKNOWN group default qlen 1000
    link/ipip 0.0.0.0 brd 0.0.0.0
    inet 192.168.100.101/24 scope global tunl0
       valid_lft forever preferred_lft forever
[root@web2 ~]# ip rotue
[root@web2 ~]# ip addr add 192.168.100.101/24 dev tunl0
[root@web2 ~]# ip link set up tunl0
[root@web2 ~]# ip route del 192.168.100.0/24 dev tunl0
[root@web2 ~]# sysctl -p
[root@web2 ~]# cat /usr/share/nginx/html/index.html 
web2

4、验证

网站访问192.168.100.101

看到感觉有帮助的朋友,劳烦动动发财的小手给博主点个赞

文末含资料链接和视频讲解!YOLOv8集成CoordAtt注意力机制详细教程 本文详细介绍了如何在YOLOv8目标检测框架中集成CoordAtt注意力机制。首先解析了CoordAtt的工作原理,它通过分解式池化将位置信息嵌入到通道注意力中,相比传统注意力机制具有更好的空间信息保持能力。然后提供了PyTorch实现代码解析,包括自适应平均池化、Hard-Swish激活函数等关键实现细节。最后概述了YOLOv8架构,为后续集成CoordAtt提供基础。该教程适合具备深度学习基础的开发者,将理论与实践结合,帮助读者掌握这一目标检测优化技术。 阅读详情

相关推荐

Blender地形建模实战:5步搞定Gazebo仿真地形(附避坑指南)

本文提供了一份详细的Blender地形建模实战指南,旨在帮助开发者快速创建Gazebo仿真地形。文章通过五个核心步骤,从环境准备、地形雕刻、模型优化导出,到创建Gazebo模型包及问题排错,系统讲解了如何将Blender中的地形模型成功导入Gazebo进行机器人仿真,并重点分享了关键的避坑经验。

weixin_28475533的博客 344

高级运维开发工程师的打怪升级之路

人生就像一场游戏,充满了挑战与机遇。作为高级运维开发工程师,我们在职业生涯中不断面对各种困难,为了梦想、为了家人、为了自己,我们不懈奋斗。今天,让我们一起回顾这段充满挑战的“打怪升级”之旅,看看如何从一名初出茅庐的新人成长为行业内的佼佼者。在初级阶段,运维开发工程师的工作可能显得琐碎且缺乏成就感,但这些基础工作为后续的发展奠定了坚实的基础。每年的“金三银四”是跳槽的高峰期,但并不是每个人都能顺利找到理想的工作。掌握80%互联网公司会用到的技术,才能在职场中具备更强的竞争力。

软件架构师笔记 1433

面板数据分析中的随机前沿软件FRONTIER Version 4.1应用

随机前沿模型是一种用于评估单位效率的统计方法。它考虑了输入和输出的随机性,允许我们在效率评估中引入不确定性。随机前沿模型通常用于评估生产单位、金融机构、医院等各种类型的决策单元的效率。FRONTIER是一个广泛使用的随机前沿分析软件,具有用户友好的界面和强大的功能。它提供了估计效率、前沿分析和模型比较的工具,使用户能够深入研究单位的效率和绩效。面板数据是一种包含多个单位(通常是时间序列数据)的数据类型,可以用于分析单位在不同时间点的变化和效率。

目标检测专栏持续更新中,改进YOLO系列通用,适用v5、v7、v8、所有博客均是团队原创博客,所有文章禁止转载,违者必究。 2982

LNMP、keepalived、haproxy打怪升级之路七

目录 1、lnmp安全加固总结’ 2、keepalived实现LVS的高可用 3、实现haproxy+keepalived集群高可用集群转发 4、haproxy调试算法总结 1、lnmp安全加固总结’ 1、nginx应配置隐藏nginx版本号以及PHP版本号;即隐藏报文头Server字段和X-Powered- BY字段 2、屏蔽IP、屏蔽各种user-agent、屏蔽特定的url、强制使用网站使用域名访问、设置timeout设置来抵御DOS攻击 - vim /apps...

Pespi_Co1a的博客 2569

从模型车到真实路口:基于YOLOv5-Lite与SORT的轻量化车流量检测系统实战

本文详细阐述了如何将基于YOLOv5-Lite与SORT的轻量化车流量检测系统从毕业设计原型部署到真实路口。文章聚焦于解决在嵌入式平台(如树莓派)上实现实时、稳定检测的工程挑战,涵盖数据采集、模型微调、系统集成及动态信号灯策略,为智能交通灯系统提供了实用的轻量化解决方案。

weixin_29179311的博客 126

HIDL概述

HIDL背景 Treble 是 Google Android 团队的一项重大项目,意在 Android 操作系统框架在架构方面的一项重大改变,旨在让制造商以更低的成本更轻松、更快速地将设备更新到新版 Android 系统。Android 7.x 及更早版本中没有正式的供应商接口,因此设备制造商必须更新大量 Android 代码才能将设备更新到新版 Android 系统: 图1 Treble ...

u013357557的专栏 2万+

高级运维工程师打怪升级之路

人生就像一场游戏,这场游戏给我们带来了的许多困难,但是我们为了梦想,为了家人,为了自己不断奋斗着,努力工作。 今天就让我带着大家一起回顾高级运维工程师打怪升级之路。 运维工程师在刚入行阶段是一很苦逼的,可能干着修电脑、掐网线、搬机器的活,显得没地位!时间也很碎片化,各种零碎的琐事围绕着你,也很难体现个人价值,渐渐的对行业很迷茫,觉得没什么发展前途。 这些枯燥无味工作的确会使人匮乏!技术是枯燥无味的...

李振良的技术博客 1万+

别再怕DRIVER_VERIFIER_DMA_VIOLATION蓝屏:手把手教你用WinDbg分析IOMMU与驱动冲突

本文深入解析DRIVER_VERIFIER_DMA_VIOLATION蓝屏错误,从IOMMU原理到实战排错,手把手教你使用WinDbg分析驱动冲突。通过理解DMA与IOMMU的核心机制、搭建分析环境、解读DMAR表与设备拓扑,最终定位问题驱动并提供解决方案,帮助开发者和IT运维人员有效应对此类系统崩溃问题。

weixin_30298497的博客 803

运维工程师的打怪升级之路

人生就像一场游戏,这场游戏给我们带来了的许多困难,但是我们为了梦想,为了家人,为了自己不断奋斗着,努力工作。 今天就让我带着大家一起回顾高级运维工程师打怪升级之路。 运维工程师在刚入行阶段是一很苦逼的,可能干着修电脑、掐网线、搬机器的活,显得没地位!时间也很碎片化,各种零碎的琐事围绕着你,也很难体现个人价值,渐渐的对行业很迷茫,觉得没什么发展前途。 这些枯燥无味工作的确会使人匮乏!技术是枯燥...

yaodunlin的博客 6016

顶刊《会计研究》数据复现|最新上市公司数智化数据

本文基于Python文本分析方法构建了中国A股上市公司数智化指标(1991-2024),通过识别年报中的"机器学习""智能医疗"等关键词,量化企业数字化与智能化融合程度。研究发现数智化企业更倾向于非正式渠道的定性披露以规避风险,该指标为监管完善信披规则提供了参考。研究还揭示了数智化对企业信息披露策略的转变,并提出了未来研究方向,包括数智化对绿色创新、ESG表现等影响机制。数据覆盖非金融类上市公司,采用文本挖掘技术构建结构化指标,为相关领域研究提供了微观基础。

PPdata_Academy的博客 1487

labview高低拼接的理解

计算机的一个字节由8位组成,无符号的8位整形表示的范围为0~255,范围太小了,所以用双字节,即16位整形表示更大范围的数字0 ~65535。2.labview中的高低拼接实质是高8位字节左移8位与低8位字节相加,结果是双字节整形。

qwerqwerdhr的博客 834

[转载]运维工程师的打怪升级之路

运维工程师的打怪升级之路 https://www.jishux.com/p/4bd86622bf4f8aaa 努力学习 深入学习.. 初级 1、Linux基础 刚开始阶段需要熟悉Linux/Windows操作系统安装,目录结构、启动流程等。 2、系统管理 主要学习Linux系统,生产环境中基本都在字符界面完成工作,所以要掌握常用的几十个基本管理命令,包括用户管...

weixin_30344131的博客 158

【Proteus仿真】51单片机+DAC0832+LM358放大电路波形发生器

【Proteus仿真】51单片机+DAC0832+LM358放大电路波形发生器

perseverance51博客 5786

高级运维工程师的打怪升级之路

上分布式文件系统,并行处理任务,无单点,高可靠,高性能等特性,主流的有FastDFS、MFS、HDFS、Ceph、GFS等。Web服务器性能瓶颈解决了,数据库更为关键,还是采用集群,就拿学的MySQL来说,可以一主多从架构,在此基础上读写分离,主负责写,多从负责读,从库可水平扩展,前面再来个四层负载均衡器,承载千万级PV,妥妥的!主要学习Linux系统,生产环境中基本都在字符界面完成工作,所以要掌握常用的几十个基本管理命令,包括用户管理、磁盘分区、软件包管理、文件权限、文本处理、进程管理、性能分析工具等。

分享技术架构、运维、程序开发经验 664

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

如何使用 MySQL Router 实现高可用、负载均衡、读写分离?

但是比较遗憾,Router 不会将已有的连接重新分配给“新加入”列表的 Server,比如 Router 有 2 个 Server 地址(S1,S2),某时刻 S1 不可达,那么在 S1 上粘性的客户端连接也将被断开,新建连接将会全部在 S2 上,此后 S1 恢复正常,那么在 S2 上的旧的连接将不会迁移到 S1 上,此时 S1 只会接收新的连接,如果没有新连接请求,那么 S1 将会在一段时间看起来是“不提供服务”的。对于读写两种操作,因为 Router 不对请求拆包,所以它无法判断请求的读写类型。

民工哥的博客 575

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

上一篇: Redis Cluster 手动部署(小白的“升级打怪”成长之路)
下一篇: keeplived双击热备配置(小白的“升级打怪”成长之路)
deeper_wind
博客等级 码龄2年 262粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值