基于LVS负载均衡练习

对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,比较其各自的优势。

NAT模式,全称是网络地址转换模式。NAT模式下,负载均衡器(Director)会修改请求和响应的IP地址。客户端的请求先到达Director,Director将请求的目标地址改成后端真实服务器的地址,然后转发给后端服务器。后端服务器处理完请求后,将响应返回给Director,Director再将响应的源地址改回自己的虚拟IP(VIP),最后返回给客户端。这样的话,对于客户端来说,它只知道Director的地址,不知道后端服务器的存在。

DR模式,即直接路由模式。DR模式下,Director和后端服务器都配置了同一个虚拟IP地址。当客户端请求到达Director时,Director通过修改请求的目标MAC地址,将请求转发给选中的后端服务器。后端服务器处理请求后,直接通过自己的网络接口将响应返回给客户端,而不需要经过Director。这样响应数据可以直接从服务器到客户端,减少了Director的负担。

1. NAT模式(Network Address Translation)

  • 优势

    • 网络拓扑灵活

      • 后端服务器(Real Server)可使用私有IP地址,无需暴露公网IP。

      • 支持跨子网部署,Real Server可位于不同网络环境中(如云服务器跨可用区)。

    • 配置简单

      • Real Server无需特殊配置,只需设置默认网关为Director(负载均衡器)。

      • 无需修改Real Server的内核参数(如ARP抑制)。

    • 安全性较高

      • Real Server隐藏在Director后,对外不可见,避免直接暴露于公网。
    • 支持端口映射

      • Director可修改目标端口,实现灵活的端口转换(如将80端口请求转发到后端8080端口)。
  • 适用场景

    • 中小规模流量场景。

    • 需要跨子网或混合云部署。

    • 对后端服务器安全性要求较高。


2. DR模式(Direct Routing)

  • 优势

    • 高性能与低延迟

      • 响应数据直接由Real Server返回客户端,无需经过Director,避免带宽瓶颈。

      • 吞吐量高,适合高并发、大流量场景(如视频流、大规模Web应用)。

    • 扩展性强

      • Director仅处理入站请求,后端服务器数量增加时性能影响较小。
    • 资源利用率高

      • Real Server直接使用公网带宽,减轻Director的网络负载。
  • 适用场景

    • 高并发、大流量场景(如电商大促、在线游戏)。

    • 对吞吐量和延迟敏感的服务。

    • 需充分利用Real Server的公网带宽。

关键对比总结

特性 NAT模式 DR模式
网络拓扑 支持跨子网,Real Server可私有IP 必须同一局域网,Real Server需公网IP
性能 受限于Director的带宽和处理能力 高性能,Real Server直接响应客户端
配置复杂度 简单(Real Server无需特殊配置) 复杂(需配置ARP抑制、VIP绑定等)
安全性 高(Real Server隐藏) 较低(Real Server暴露公网IP)
端口映射 支持 不支持
适用规模 中小规模 大规模、高并发

选择建议

  • NAT模式:适合网络环境复杂、对安全性要求高、流量适中的场景。

  • DR模式:适合追求极致性能、大流量且网络环境可控的场景。

实际部署中,可结合两者优势,例如在DR模式下通过Keepalived实现Director的高可用,进一步提升系统可靠性。

基于 openEuler 构建 LVS-DR 群集

1. 环境准备

  • 操作系统:openEuler 20.03 LTS 或更高版本。

  • 网络拓扑

    • Director:1台,配置双网卡(一个公网IP,一个内网IP)。

    • Real Server:至少2台,配置内网IP。

    • 客户端:1台,用于测试。

  • IP规划

    • Director:

      • 公网IP(VIP):192.168.234.10

      • 内网IP(DIP):192.168.234.11

    • Real Server 1:

      • 内网IP(RIP):192.168.234.14
    • Real Server 2:

      • 内网IP(RIP):192.168.234.15
    • 客户端:

      • 公网IP:192.168.234.13

配置 Real Server(后端服务器)

在 Real Server 上启动 Web 服务

在两个Real Server上安装并启动nginx服务:

复制代码
yum install nginx -y
systemctl start nginx
systemctl enable nginx

在Real Server 1上创建测试页面

复制代码
echo "web test page,ip is `hostname -I`"  > /usr/share/nginx/html/index.html

在Real Server 2上创建测试页面

复制代码
echo "web test page,ip is `hostname -I`"  > /usr/share/nginx/html/index.html

在两个Real Server上都绑定VIP

nmcli connection add type dummy ifname dummy1 ipv4.method manual ipv4.addresses 192.168.234.10/32

ip address查看:

配置 ARP 抑制

防止Real Server响应VIP的ARP请求:

vim /etc/sysctl.conf,添加以下内容:

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

应用配置:

sysctl -p

配置 Director(负载均衡器)

1.安装 LVS 工具

yum install ipvsadm -y

2.配置 VIP

nmcli connection add type dummy ifname dummy1 ipv4.method manual ipv4.addresses 192.168.234.10/32

3. 配置 LVS 规则

使用 ipvsadm 配置负载均衡规则:

ipvsadm -A -t 192.168.234.10:80 -s rr

ipvsadm -a -t 192.168.234.10:80 -r 192.168.234.14:80 -g

ipvsadm -a -t 192.168.234.10:80 -r 192.168.234.15:80 -g

4.在Director上查看LVS状态:

ipvsadm -Ln

5.从客户端访问 VIP

在客户端使用 curl 或浏览器访问VIP:

相关推荐
奔跑吧邓邓子7 小时前
【Python爬虫(36)】深挖多进程爬虫性能优化:从通信到负载均衡
开发语言·爬虫·python·性能优化·负载均衡·多进程
努力的小T7 小时前
使用 Docker 部署 Apache Spark 集群教程
linux·运维·服务器·docker·容器·spark·云计算
枫叶落雨2228 小时前
08-Elasticsearch
运维·jenkins
爆更小小刘9 小时前
Linux下基本指令(4)
linux·运维·服务器
我码玄黄9 小时前
解决本地模拟IP的DHCP冲突问题
linux·运维
若云止水10 小时前
Ubuntu 下 nginx-1.24.0 源码分析 - ngx_os_init 函数
运维·nginx
Self-Discipline10 小时前
Linux arm64 IOMMU总结
linux·运维·服务器
我言秋日胜春朝★10 小时前
【Linux】命名管道------Linux进程间通信的桥梁
linux·运维·服务器
Dontla10 小时前
华为昇腾服务器(固件版本查询、驱动版本查询、CANN版本查询)
运维·服务器·chrome
wenchun00110 小时前
【并发压测】高并发下Linux流量监控
linux·运维·服务器