当前位置: 首页 > news >正文

LVS 服务器 知识

LVS 服务器

集群

集群分类

  • 按分发器类型分 – LVS集群 – Nginx集群 – haproxy集群 – F5集群

  • 按业务类型分 – web集群 – 数据库集群 – 缓存集群 – …

  • 按功能分类:

    • 负载均衡集群 – LBC: 分担服务的总体压力
    • 高可用集群 – HAC: 尽可能的保障服务状态的可用性
    • 高性能运算集群 – HPC: 提供单台服务器提供不了的计算能力

LVS

LVS 是 Linux Virtual Server 的简称,也就是 Linux 虚拟服务器。

实现四层负载均衡,性能强大,适合日常处理大并发的大型网络架构使用;

所谓四层负载均衡 ,也就是主要通过报文中的目标地址和端口,实现负载均衡;

七层负载均衡 ,也称为“内容交换”,也就是主要通过报文中的真正有意义的应用层内容;

LVS四种模式

  • NAT模式:
    • 使用IP地址转换实现负载均衡;
    • 请求(入)和响应(出)都会经过负载均衡器;
    • 负载均衡器会成为一个流量的瓶颈,建议10台以内的服务器使用;
  • TUN模式:
    • 隧道模式,报文封装,实现负载均衡;
    • 请求会经过负载均衡器,响应直接返回给客户端;
    • 但是需要每台后端真实服务器都要有独立的公网IP;
    • 适合跨机房,跨网段的负载均衡;
  • DR模式(最常用):
    • 直接路由模式,使用的MAC替换,实现负载均衡;
    • 可以实现100+服务器的负载均衡;
    • 请求会经过负载均衡器,响应直接返回给客户端;
    • 不需要独立IP;
  • FULLNAT模式:多层地址转换,超大型架构的负载均衡;(基于NAT实现,LVS 本身不支持,需要额外对内核打补丁后才能使用。)
    • 通过双重地址转换实现负载均衡,客户端和后端服务器双向请求都经过负载均衡器。
    • 提供了跨网段负载均衡功能。

NAT模式(网络地址转换)—— 相当于 “代收代发点”

场景:你(客户端)要寄快递给 “北京仓库”(后端服务器),但不知道仓库地址,只能先寄到 “本地代收点”(LVS 服务器)。

  • 客户端发请求时(寄快递)
    • 源 IP:你的地址(客户端 IP)
    • 目标 IP:代收点地址(LVS 的虚拟 IP,VIP)
    • LVS 的转换:收到后,把 “目标 IP” 改成实际仓库地址(后端服务器的真实 IP,RIP),源 IP 不变(还是你的地址),然后转发给仓库。
  • 后端服务器回响应时(仓库寄回包裹)
    • 源 IP:仓库地址(RIP)
    • 目标 IP:你的地址(客户端 IP)
    • LVS 的转换:仓库必须先把包裹寄回代收点(因为仓库的网关设为 LVS),LVS 收到后,把 “源 IP” 改成自己的 VIP,再发给你。

特点:所有进出数据都经过 LVS,LVS 会改两次 IP(转发时改目标 IP,回传时改源 IP)。

DR 模式(直接路由)—— 相当于 “小区门口的指路牌”

场景:你知道小区门口有个 “总指路牌”(LVS 的 VIP),它会告诉你具体哪家快递柜(后端服务器)能收你的快递。

  • 客户端发请求时(寄快递)
    • 源 IP:你的地址(客户端 IP)
    • 目标 IP:总指路牌地址(VIP)
    • LVS 的转换:只改数据包里的 “目标 MAC 地址”(相当于告诉你快递柜的具体位置),IP 不变(源 IP 还是你,目标 IP 还是 VIP),然后直接发给后端服务器(因为服务器也认识 VIP 这个 “总地址”)。
  • 后端服务器回响应时(取件后通知你)
    • 源 IP:直接用 VIP(总指路牌地址),假装自己是 LVS
    • 目标 IP:你的地址(客户端 IP)
    • LVS 的转换:完全不经过 LVS,服务器直接把响应发给你(因为 MAC 地址已经正确指向你)。

特点:LVS 只改 MAC 地址,不改 IP;回包不经过 LVS,速度快。但要求 LVS 和服务器在同一个局域网(相当于都在一个小区里)。

TUN 模式(隧道模式)—— 相当于 “跨城专用快递通道”

场景:你在上海,要寄快递给北京的仓库,但北京的仓库藏在 “专用隧道” 后面,只有 LVS 知道怎么进去。

  • 客户端发请求时(寄快递)
    • 源 IP:你的地址(客户端 IP)
    • 目标 IP:上海的 LVS 地址(VIP)
    • LVS 的转换:把整个数据包装进一个 “隧道包裹” 里,外层目标 IP 写成北京仓库的真实 IP(RIP),内层源 IP 和目标 IP 不变(还是你和 VIP),通过隧道发给北京仓库。
  • 后端服务器回响应时(北京仓库寄回)
    • 源 IP:直接用 VIP(假装自己是上海的 LVS)
    • 目标 IP:你的地址(客户端 IP)
    • LVS 的转换:不经过 LVS,服务器直接从隧道把响应发给你。

特点:通过隧道跨网段转发,IP 基本不变(只在外层加了个隧道地址),适合服务器分散在不同城市的场景。

常用缩写解释

名称 含义
LB(Load Balancer) 负载均衡
HA(High Available) 高可用
Cluster 集群
DS(Director Server) 前端负载均衡节点服务器
RS(Real SERVER) 后端真实服务器
CIP(Client IP) 客户端IP地址
VIP(Virtual IP) 负载均衡对外提供访问的IP地址,一般负载均衡IP都会通过Viirtual IP实现高可用
RIP(RealServer IP) 负载均衡后端的真实服务器IP地址
DIP(Director IP) 主要用于和内部主机通讯的 IP 地址
LVS的安装
#检查内核是否支持 LVS
# 检查 ip_vs 内核模块是否加载
lsmod | grep ip_vs# 若未加载,手动加载(临时生效)
modprobe ip_vs
modprobe ip_vs_rr  # 加载轮询调度算法模块(根据需要加载其他算法,如 ip_vs_wrr、ip_vs_sh 等)---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#安装 ipvsadm 管理工具# centos安装 ipvsadm
yum install -y ipvsadm# 启动时自动加载 ip_vs 模块(避免重启后模块丢失)
echo "modprobe ip_vs" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local  # 确保 rc.local 可执行#对于 Ubuntu/Debian 系统
# 更新软件源
apt update# 安装 ipvsadm
apt install -y ipvsadm# 启动时自动加载 ip_vs 模块
echo "modprobe ip_vs" >> /etc/rc.local
chmod +x /etc/rc.local---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#验证安装
# 查看 ipvsadm 版本
ipvsadm --version# 查看当前 LVS 规则(初始为空)
ipvsadm -Ln
使用该命令工具来配置LVS和算法
#用法
ipvsadm     选项  服务器地址   -s  算法
ipvsadm     选项  服务器地址   -r  真是服务器地址     [工作模式]  [权重]#选项
-A      添加一个虚拟服务器
-E      编辑一个虚拟服务器
-D      删除一个虚拟服务器
-C      清空虚拟服务器列表
-R      从标准输入中还原虚拟服务器规则
-S      将虚拟服务器规则保存至标准输出
-a      添加一个真实服务器
-e      编辑一个真实服务器
-d      删除一个真实服务器
-l/L    查看分发列表
-t      使用tcp协议
-u      使用udp协议
-s      指定算法
-r      设置真实服务器的IP地址和端口信息
-g      DR模式
-i      tun模式
-m      nat模式
-w      设置真实服务器的权重
-c      查看连接状态,需要配合L使用
-n      以数字形式输出# 比如,添加一个虚拟服务器,算法为rr,所有使用tcp协议访问192.168.1.100:80的请求,最终都被NAT模式转发给了192.168.2.210和2.220的80端口
#设置入口ip(vip):
ipvsadm -A -t 192.168.1.100:80 -s rr
#设置真实IP
ipvsadm -a -t 192.168.1.100:80 -r 192.168.2.210:80 -m
ipvsadm -a -t 192.168.1.100:80 -r 192.168.2.220:80 -m

使用NAT模式搭建负载均衡器

环境准备

  • 三台 Ubuntu 服务器:
    • LVS 服务器:需要两块网卡,内网 IP 192.168.25.213(连接 Nginx 服务器),外网 IP 192.168.11.213(供客户端访问)
    • Nginx 服务器 1:IP 192.168.25.211,网关设置为 LVS 服务器的内网 IP 192.168.25.213
    • Nginx 服务器 2:IP 192.168.25.212,网关设置为 LVS 服务器的内网 IP 192.168.25.213
  • 客户端:与 LVS 服务器外网网卡同网段(192.168.16.x)
# 1. 安装Nginx 
sudo apt update
sudo apt install -y nginx# 2. 修改默认网页内容以区分两台服务器 看具体配置文件默认网页的位置
# 在服务器192.168.25.211上执行
echo "<h1>这是Nginx服务器 1 (192.168.25.211)</h1>" | sudo tee /data/html/index.html# 在服务器192.168.25.212上执行
echo "<h1>这是Nginx服务器 2 (192.168.25.212)</h1>" | sudo tee /data/html/index.html# 3. 启动Nginx并设置开机自启 (两台nginx机)
sudo systemctl start nginx
sudo systemctl enable nginx# 4. 设置网关为LVS服务器的内网IP(关键步骤)(两台nginx机)
sudo ip route del default
sudo ip route add default via 192.168.25.213 dev ens33  
# 假设网卡为ens33# 5. 永久设置网关(避免重启后失效)(可选)
# 先查看当前网络接口名称
INTERFACE=$(ip -br link show | awk '{print $1}' | grep -v lo | head -n 1)
# 修改netplan配置
sudo tee /etc/netplan/01-netcfg.yaml <<EOF
network:version: 2renderer: networkdethernets:$INTERFACE:addresses:- $(hostname -I | awk '{print $1}')/24gateway4: 192.168.25.213nameservers:addresses: [8.8.8.8, 8.8.4.4]
EOF
# 应用配置
sudo netplan apply# 第二部分:在LVS服务器上操作(192.168.25.213/192.168.11.213)# 1. 安装ipvsadm工具
sudo apt update
sudo apt install -y ipvsadm# 2. 加载LVS内核模块
sudo modprobe ip_vs
sudo modprobe ip_vs_rr  # 加载轮询调度算法# 3. 启用IP转发(NAT模式核心)
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward# 永久生效
sudo sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf
sudo sysctl -p# 4. 配置NAT转发规则(关键步骤)
# 清除现有规则
sudo iptables -F
sudo iptables -t nat -F# 添加NAT转换规则,将外网IP的80端口转发到内网
sudo iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE# 5. 配置LVS规则(NAT模式)
# 清除现有LVS规则
sudo ipvsadm -C# 添加虚拟服务,使用轮询调度算法(-t指定外网IP和端口)
sudo ipvsadm -A -t 192.168.11.213:80 -s rr# 添加后端真实服务器(NAT模式使用-m参数)
sudo ipvsadm -a -t 192.168.11.213:80 -r 192.168.25.211:80 -m
sudo ipvsadm -a -t 192.168.11.213:80 -r 192.168.25.212:80 -m# 保存配置
sudo ipvsadm -S > /etc/ipvsadm.rules# 6. 设置开机自动加载LVS配置
sudo tee -a /etc/rc.local <<EOF
ipvsadm -R < /etc/ipvsadm.rules
EOF
sudo chmod +x /etc/rc.local# 第三部分:测试负载均衡效果
在客户端电脑上打开浏览器,访问 http://192.168.11.213
# 多次刷新页面,应该能看到交替显示两台Nginx服务器的页面内容# 也可以使用curl命令测试
curl http://192.168.11.213

使用DR模式搭建负载均衡器

环境准备

  • LVS 服务器:一个基础 IP(如 192.168.25.213)
  • 虚拟 IP(VIP):192.168.25.11(所有服务器都需要绑定,LVS 绑在实际网卡,后端绑在回环网卡)
  • 后端 Nginx 服务器 1:基础 IP(如 192.168.25.211)
  • 后端 Nginx 服务器 2:基础 IP(如 192.168.25.212)
  • 客户端(测试用):192.168.25.x(任意)
# 环境说明
# 所有服务器在同一网段(192.168.25.x),均使用单网卡
# LVS服务器:192.168.25.213(单网卡,如ens33) 虚拟IP(VIP):192.168.25.11
# Nginx服务器1:192.168.25.211(单网卡)
# Nginx服务器2:192.168.25.212(单网卡)# 第一部分:后端Nginx服务器配置(211和212均执行)# 1. 安装并启动Nginx
sudo apt update
sudo apt install -y nginx
sudo systemctl start nginx
sudo systemctl enable nginx# 2. 修改默认页面(区分两台服务器)
# 服务器211执行:
echo "<h1>Nginx Server 1 (192.168.25.211)</h1>" | sudo tee /var/www/html/index.nginx-debian.html# 服务器212执行:
echo "<h1>Nginx Server 2 (192.168.25.212)</h1>" | sudo tee /var/www/html/index.nginx-debian.html# 3. # 临时生效ARP抑制参数
echo 1 | sudo tee /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 | sudo tee /proc/sys/net/ipv4/conf/all/arp_announce
echo 1 | sudo tee /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 | sudo tee /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 | sudo tee /proc/sys/net/ipv4/conf/ens33/arp_ignore
echo 2 | sudo tee /proc/sys/net/ipv4/conf/ens33/arp_announce# 永久生效(写入sysctl.conf)
sudo tee -a /etc/sysctl.conf <<EOF
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.ens33.arp_ignore = 1
net.ipv4.conf.ens33.arp_announce = 2
EOF
# 加载配置
sudo sysctl -p# 4.# 删除旧VIP绑定(避免冲突)
sudo ip addr del 192.168.25.11/32 dev lo 2>/dev/null
# 绑定VIP到回环网卡(仅本地可见)
sudo ip addr add 192.168.25.11/32 dev lo
sudo ip link set lo up
# 验证绑定
ip addr show lo | grep 192.168.25.11# 5.拦截以VIP为源的ARP响应(避免后端对外宣告VIP)
sudo iptables -A OUTPUT -p arp --arp-op 2 -s 192.168.25.11 -j DROP
# 拦截以VIP为目标的ARP请求(避免后端响应VIP的请求)
sudo iptables -A INPUT -p arp --arp-op 1 -d 192.168.25.11 -j DROP#开机自启
sudo tee -a /etc/rc.local <<EOF
# 绑定VIP到回环网卡
ip addr add 192.168.25.11/32 dev lo
ip link set lo up
# 拦截ARP包
iptables -A OUTPUT -p arp --arp-op 2 -s 192.168.25.11 -j DROP
iptables -A INPUT -p arp --arp-op 1 -d 192.168.25.11 -j DROP
EOF# 赋予执行权限
sudo chmod +x /etc/rc.local# 6. 关闭防火墙(避免拦截)
sudo ufw disable
sudo iptables -F && sudo iptables -X# 第二部分:LVS服务器配置(192.168.25.213)# 1. 安装ipvsadm工具
sudo apt update
sudo apt install -y ipvsadm# 2. 加载LVS内核模块
# 卸载旧模块(避免冲突)
sudo modprobe -r ip_vs_rr ip_vs
# 加载LVS核心模块
sudo modprobe ip_vs
# 加载轮询调度算法模块(负载均衡核心)
sudo modprobe ip_vs_rr
# 验证模块加载(需显示ip_vs和ip_vs_rr)
lsmod | grep ip_vs# 3.# 删除旧VIP绑定
sudo ip addr del 192.168.25.11/24 dev ens33 2>/dev/null
# 绑定VIP到物理网卡(与基础IP同网段)
sudo ip addr add 192.168.25.11/24 dev ens33
sudo ip link set ens33 up
# 开启网卡混杂模式(解决虚拟机ARP广播问题)
sudo ip link set ens33 promisc on
# 验证绑定
ip addr show ens33 | grep 192.168.25.11# 4. 配置LVS DR模式规则
# 清空旧规则
sudo ipvsadm -C
# 添加虚拟服务(VIP:80,轮询算法rr)
sudo ipvsadm -A -t 192.168.25.11:80 -s rr
# 添加后端Nginx服务器(-g表示DR模式)
sudo ipvsadm -a -t 192.168.25.11:80 -r 192.168.25.211:80 -g
sudo ipvsadm -a -t 192.168.25.11:80 -r 192.168.25.212:80 -g
# 保存规则(避免重启丢失)
sudo ipvsadm -S > /etc/ipvsadm.rules
# 验证规则(需显示两台后端,Forward为Route)
sudo ipvsadm -Ln# 5. 设置开机自动加载配置
sudo tee -a /etc/rc.local <<EOF
# 加载LVS模块
modprobe ip_vs
modprobe ip_vs_rr
# 绑定VIP到网卡
ip addr add 192.168.25.11/24 dev ens33
ip link set ens33 up
ip link set ens33 promisc on
# 加载LVS规则
ipvsadm -R < /etc/ipvsadm.rules
EOFsudo chmod +x /etc/rc.local# 6. 关闭防火墙(避免拦截)
sudo ufw disable
sudo iptables -F && sudo iptables -X# 第三部分:测试负载均衡
# 在任意客户端(需与192.168.25.x网段互通)执行:
# 清除旧ARP缓存
sudo ip neigh flush allwhile true; do curl http://192.168.25.11; sleep 1; done
curl http://192.168.25.11
# 多次执行应交替显示两台Nginx服务器内容

使用TUN模式搭建负载均衡器

环境准备

核心功能
LVS 服务器 Ubuntu 20.04/22.04 物理网卡:192.168.25.213/24(公网 / 局域网 IP)隧道网卡(tun0):VIP 192.168.25.233/32 接收客户端请求,封装隧道包转发后端
Nginx 服务器 1 Ubuntu 20.04/22.04 物理网卡:192.168.25.211/24隧道网卡(tun0):VIP 192.168.25.233/32 解封装隧道包,提供 Web 服务
Nginx 服务器 2 Ubuntu 20.04/22.04 物理网卡:192.168.25.212/24隧道网卡(tun0):VIP 192.168.25.233/32 同 Nginx 服务器 1
客户端(测试用) Windows/Linux IP:192.168.11.x/24(与 LVS/Nginx 同网段) 访问 VIP(192.168.25.233)验证负载均衡
### 所有服务器初始化(通用操作)# 关闭UFW防火墙(避免拦截隧道包与80端口)
sudo ufw disable
# 清除iptables旧规则(防止冲突)
sudo iptables -F && sudo iptables -X
sudo iptables -t nat -F && sudo iptables -t nat -X
# 关闭NetworkManager(防止自动修改网络配置)
sudo systemctl stop NetworkManager && sudo systemctl disable NetworkManagersudo apt update -y && sudo apt upgrade -y
# 安装IP隧道工具(iproute2)、LVS管理工具(ipvsadm)、Nginx(Web服务)
sudo apt install -y iproute2 ipvsadm nginx
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
### 后端 Nginx 服务器配置(211/212 均执行)#配置 IP 隧道(tun0)与绑定 VIP
# 1. 加载IPIP隧道内核模块(TUN模式必需)
sudo modprobe ipip
# 验证模块加载(需显示ipip)
lsmod | grep ipip# 2. 创建并配置隧道网卡tun0(绑定VIP)
# 删除旧隧道(避免冲突)
sudo ip tunnel del tun0 2>/dev/null
# 创建IPIP隧道(本地IP为后端自身物理IP)
sudo ip tunnel add tun0 mode ipip local 192.168.25.211  # 212服务器替换为192.168.25.212
# 激活隧道网卡
sudo ip link set tun0 up
# 绑定VIP到隧道网卡(/32表示仅本机使用,避免ARP广播)
sudo ip addr add 192.168.25.233/32 dev tun0
# 验证隧道与VIP(需显示tun0状态UP,且有192.168.25.233/32)
ip addr show tun0#关闭 ARP 响应(避免 VIP 冲突)# 临时生效ARP抑制参数
echo 1 | sudo tee /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 | sudo tee /proc/sys/net/ipv4/conf/all/arp_announce
echo 1 | sudo tee /proc/sys/net/ipv4/conf/tun0/arp_ignore
echo 2 | sudo tee /proc/sys/net/ipv4/conf/tun0/arp_announce
echo 1 | sudo tee /proc/sys/net/ipv4/conf/ens33/arp_ignore  # ens33为物理网卡名
echo 2 | sudo tee /proc/sys/net/ipv4/conf/ens33/arp_announce# 永久生效(写入sysctl.conf)
sudo tee -a /etc/sysctl.conf <<EOF
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.tun0.arp_ignore = 1
net.ipv4.conf.tun0.arp_announce = 2
net.ipv4.conf.ens33.arp_ignore = 1
net.ipv4.conf.ens33.arp_announce = 2
EOF
# 加载配置
sudo sysctl -p#配置 Nginx 服务与区分页面# 1. 启动Nginx并设置开机自启
sudo systemctl start nginx
sudo systemctl enable nginx
# 验证Nginx状态(需显示active (running))
sudo systemctl status nginx# 2. 生成区分页面(便于测试负载均衡)
# Nginx服务器1(211)执行:
echo "<h1>Nginx Server 1 (192.168.25.211)</h1>" | sudo tee /var/www/html/index.nginx-debian.html
# Nginx服务器2(212)执行:
echo "<h1>Nginx Server 2 (192.168.25.212)</h1>" | sudo tee /var/www/html/index.nginx-debian.html# 3. 验证本地访问VIP(应显示自身页面)
curl http://192.168.25.233### 开机自动配置隧道与 VIP#添加以下内容(212 服务器替换 local IP 为 192.168.25.212):#!/bin/sh -e
# 加载IPIP模块
modprobe ipip
# 创建隧道网卡tun0
ip tunnel add tun0 mode ipip local 192.168.25.211
ip link set tun0 up
# 绑定VIP
ip addr add 192.168.25.233/32 dev tun0
# 启动Nginx
systemctl start nginx
exit 0#保存退出
#赋权限
sudo chmod +x /etc/rc.local
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#### LVS 服务器配置(192.168.25.213)#配置 IP 隧道(tun0)与绑定 VIP
# 1. 加载IPIP隧道内核模块
sudo modprobe ipip
# 验证模块(需显示ipip)
lsmod | grep ipip# 2. 创建并配置隧道网卡tun0(绑定VIP,对外宣告ARP)
sudo ip tunnel del tun0 2>/dev/null
# 创建IPIP隧道(本地IP为LVS物理IP)
sudo ip tunnel add tun0 mode ipip local 192.168.25.213
# 激活隧道网卡
sudo ip link set tun0 up
# 绑定VIP到隧道网卡(/24便于对外ARP宣告)
sudo ip addr add 192.168.25.233/24 dev tun0
# 验证配置(tun0状态UP,有192.168.25.233/24)
ip addr show tun0#启用 IP 转发(TUN 模式需转发隧道包)
# 临时启用IP转发
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
# 永久启用
sudo tee -a /etc/sysctl.conf <<EOF
net.ipv4.ip_forward = 1
EOF
# 加载配置
sudo sysctl -p
# 验证(应输出1)
cat /proc/sys/net/ipv4/ip_forward# 加载 LVS 内核模块与配置 TUN 模式规则# 1. 卸载旧LVS模块(避免冲突)
sudo modprobe -r ip_vs_rr ip_vs
# 2. 加载LVS核心模块与轮询调度算法(rr:轮询)
sudo modprobe ip_vs
sudo modprobe ip_vs_rr
# 验证模块(需显示ip_vs和ip_vs_rr)
lsmod | grep ip_vs# 3. 配置LVS TUN模式规则(-i表示TUN模式,指向后端物理IP)
# 清空旧规则
sudo ipvsadm -C
# 添加虚拟服务(VIP:80,轮询算法rr)
sudo ipvsadm -A -t 192.168.25.233:80 -s rr
# 添加后端Nginx服务器(-i表示TUN模式,-w 1为权重)
sudo ipvsadm -a -t 192.168.25.233:80 -r 192.168.25.211:80 -i -w 1
sudo ipvsadm -a -t 192.168.25.233:80 -r 192.168.25.212:80 -i -w 1# 4. 保存规则(避免重启丢失)
sudo ipvsadm -S > /etc/ipvsadm.rules
# 验证规则(关键:Forward为Tunnel(TUN模式标识),后端为211/212)
sudo ipvsadm -Ln# 开机自动配置隧道与 LVS 规则 # 编辑rc.local
sudo nano /etc/rc.local #!/bin/sh -e
# 加载IPIP和LVS模块
modprobe ipip
modprobe ip_vs
modprobe ip_vs_rr
# 启用IP转发
echo 1 > /proc/sys/net/ipv4/ip_forward
# 创建隧道网卡tun0并绑定VIP
ip tunnel add tun0 mode ipip local 192.168.25.213
ip link set tun0 up
ip addr add 192.168.25.233/24 dev tun0
# 加载LVS规则
ipvsadm -R < /etc/ipvsadm.rules
exit 0#赋予权限sudo chmod +x /etc/rc.local-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------###. 客户端测试负载均衡# 客户端执行(ping VIP,应通)
ping 192.168.25.233 -c 4# 1. 浏览器测试:打开浏览器访问 http://192.168.25.233,多次刷新,应交替显示两台Nginx页面
http://192.168.25.233
# 2. 命令行测试(客户端执行,更直观):
while true; do curl http://192.168.25.233; sleep 1; done#或echo "LVS TUN模式负载均衡测试(按Ctrl+C停止):"
while true; do# 提取访问到的Nginx服务器IPSERVER_IP=$(curl -s http://192.168.25.233 | grep -oE "192.168.11.21[12]")# 显示时间与结果echo "[$(date +'%H:%M:%S')] 访问到Nginx服务器:$SERVER_IP"sleep 1
done
http://www.hskmm.com/?act=detail&tid=15010

相关文章:

  • 07-django+DRF项目中统一json返回格式 - 详解
  • 软工第二次作业——个人项目
  • 近十年 CSP-J 复赛知识点分布表
  • AT_arc181_d [ARC181D] Prefix Bubble Sort
  • 【MySQL】使用C/C++链接mysql数据库 - 指南
  • 枚举子集
  • cv-css 快捷方式,将指定节点的计算样式获取下拉 获取tailwind网页样式成原生样式
  • day002
  • PyTorch图神经网络(四)
  • 软件工程:构建数字世界的基石
  • Avalonia 学习笔记07. Control Themes(控件主题)
  • matter 协议的架构;
  • matter 协议解析;
  • 9月23日
  • Nordic 的支持对Matter 协议的支持;
  • nRF54LM20A USB
  • nRF54LM20A GRTC
  • 2025年10款最佳生产力提效chrome插件推荐,亲测有用
  • Avalonia 学习笔记06. Page Layout(页面布局)
  • 发表第一篇文章,谈谈对软件工程的理解
  • nRF54LM20A 芯片分析;
  • 第二天
  • 内部类
  • NRF54L15 两者结合的jlink保护机制(硬件+软件)
  • 软件测试员的核心技能:一文掌握等价类划分与边界值分析
  • 《CBI 技术有聊》对话 OpenCSG:智能体落地困境与企业转型的必然路径
  • 个人对软件工程的理解
  • 9/23
  • NUMERICAL RESULT (2025/09/23)
  • 数组入门:从零基础到排序算法 - 教程