文章目录

  • 前言
  • 一、LVS-DR 模式详解
    • 1.1 数据包流向分析
    • 1.2 DR 模式的特点
  • 二、LVS-DR 集群部署实战
    • 2.1 环境准备
    • 2.2 配置负载调度器(Director Server)
    • 2.3 配置节点服务器(Real Server)
    • 2.4 测试验证
  • 三、前期回顾
    • 3.1 LVS 三种工作模式及其区别?
    • 3.2 LVS 调度算法
  • 总结


好的,我已经为您将提供的文档整理成了一篇结构清晰、层次分明的博客文章,并按照要求添加了前言和总结。


前言

负载均衡是构建高可用服务的核心技术之一,Linux Virtual Server (LVS) 的 DR(Direct Routing)模式以其高性能和低延迟成为热门选择。本文将深入解析 LVS-DR 的工作原理,并通过实战演示如何快速搭建一个高效的负载均衡集群,助您轻松掌握这一关键技能。

一、LVS-DR 模式详解

1.1 数据包流向分析

LVS-DR 模式的工作流程可以清晰地分为以下几个步骤,理解此流程是掌握 DR 模式的关键:

  1. 客户端发送请求:客户端(CIP)向负载均衡器(Director Server)的虚拟 IP(VIP)发送请求报文。报文源地址为 CIP,目标地址为 VIP。
  2. 负载均衡器接收并转发:请求报文到达 Director Server 的内核空间。IPVS(IP 虚拟服务器)模块判断该请求的服务是否为已定义的集群服务。如果是,IPVS 会重新封装数据包的 MAC 头,将源 MAC 地址改为 Director Server 的 MAC 地址,将目标 MAC 地址改为选定的真实服务器(Real Server, RIP)的 MAC 地址。IP 头保持不变(源 IP 为 CIP,目标 IP 为 VIP)。
  3. 真实服务器处理请求:由于 MAC 地址匹配,Real Server 会接收该数据包。解包后,应用程序(如 Web 服务器)发现目标 IP(VIP)配置在本机的 lo 接口上,于是处理这个请求。
  4. 真实服务器直接响应客户端:处理完成后,Real Server 会构建响应报文。该报文不经过 Director Server,而是直接通过其默认网关发送给客户端。响应报文的源 IP 地址为 VIP,目标 IP 地址为 CIP。

1.2 DR 模式的特点

基于其工作流程,DR 模式具有以下显著特点:

  1. 同一网络:Director Server 和所有 Real Server 必须位于同一个物理网络(同一广播域)中,以便能通过 MAC 地址进行二层通信。
  2. IP 地址灵活:Real Server 可以使用私有地址,也可以使用公网地址。
  3. 非网关角色:Director Server 仅作为流量的入口,不作为 Real Server 的网关,极大地减轻了其负担。
  4. 响应直接返回:响应数据包由 Real Server 直接返回给客户端,性能极高。这是 DR 模式高吞吐量的主要原因。
  5. 网关指向:Real Server 的网关必须指向能够连接互联网的路由器,绝不能指向 Director Server。
  6. 本地回环接口配置 VIP:每台 Real Server 都需要在 lo 接口上配置 VIP 地址,以便处理目标为 VIP 的请求。

二、LVS-DR 集群部署实战

以下是一个完整的 LVS-DR 模式部署流程。

2.1 环境准备

角色IP 地址主机名
客户端192.168.10.200client
Director Server192.168.10.23 (DIP)lvs-dr
192.168.10.180 (VIP)
Real Server 1192.168.10.16 (RIP)web01
Real Server 2192.168.10.17 (RIP)web02
NFS 共享存储服务器192.168.10.19nfs

2.2 配置负载调度器(Director Server)

  1. 关闭防火墙与 SELinux

    systemctl stop firewalld.service
    setenforce 0
    
  2. 加载 IP_VS 模块并安装管理工具

    modprobe ip_vs
    cat /proc/net/ip_vs # 确认模块是否加载
    yum -y install ipvsadm
    
  3. 配置虚拟 IP 地址(VIP)
    编辑网卡配置文件 /etc/sysconfig/network-scripts/ifcfg-ens33:0

    DEVICE=ens33:0
    ONBOOT=yes
    IPADDR=192.168.10.180
    NETMASK=255.255.255.255
    

    启用并查看 VIP:

    ifup ens33:0
    ifconfig ens33:0
    
  4. 调整内核参数(/etc/sysctl.conf

    net.ipv4.ip_forward = 0
    net.ipv4.conf.all.send_redirects = 0
    net.ipv4.conf.default.send_redirects = 0
    net.ipv4.conf.ens33.send_redirects = 0
    

    使配置生效:sysctl -p

  5. 配置负载分配策略

    ipvsadm-save > /etc/sysconfig/ipvsadm # 初始化保存文件
    systemctl start ipvsadmipvsadm -C # 清空现有规则
    ipvsadm -A -t 192.168.10.180:80 -s rr # 添加虚拟服务,调度算法为轮询(rr)
    ipvsadm -a -t 192.168.10.180:80 -r 192.168.10.16:80 -g # 添加 Real Server,-g 代表 DR 模式
    ipvsadm -a -t 192.168.10.180:80 -r 192.168.10.17:80 -gipvsadm -ln # 查看配置,确认模式为 Route (DR)
    

2.3 配置节点服务器(Real Server)

以下操作需要在 web01 和 web02 上分别执行。

  1. 配置虚拟 IP 地址(VIP)到 lo:0
    编辑文件 /etc/sysconfig/network-scripts/ifcfg-lo:0

    DEVICE=lo:0
    ONBOOT=yes
    IPADDR=192.168.10.180
    NETMASK=255.255.255.255
    

    启用并添加路由:

    ifup lo:0
    ifconfig lo:0
    route add -host 192.168.10.180 dev lo:0
    

    为了重启后依然生效,将路由命令加入 /etc/rc.local

    echo '/sbin/route add -host 192.168.10.180 dev lo:0' >> /etc/rc.local
    chmod +x /etc/rc.d/rc.local
    
  2. 调整内核 ARP 参数
    编辑 /etc/sysctl.conf,添加以下行:

    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
    

    使配置生效:sysctl -p

  3. 安装服务并挂载共享存储

    yum -y install nfs-utils rpcbind httpd
    systemctl start httpd
    systemctl start rpcbind
    
    • web01 上:
      mount.nfs 192.168.10.19:/opt/kgc /var/www/html
      echo 'this is kgc web!' > /var/www/html/index.html
      
    • web02 上:
      mount.nfs 192.168.10.19:/opt/benet /var/www/html
      echo 'this is benet web!' > /var/www/html/index.html
      

2.4 测试验证

在客户端(192.168.10.200)打开浏览器,多次访问 http://192.168.10.180/。页面内容应在 this is kgc web!this is benet web! 之间交替显示,这表明 LVS 负载均衡集群已经成功运行。

三、前期回顾

3.1 LVS 三种工作模式及其区别?

  • NAT:通过网络地址转换实现。请求和响应都经过 Director,Director 易成为瓶颈。Real Server 可以是任何操作系统。
  • DR:使用直接路由技术。只有请求经过 Director,响应直接由 Real Server 返回,性能极高。要求 Director 和 Real Server 在同一个局域网。
  • TUN:通过 IP 隧道技术实现。能跨机房部署,Real Server 可以不在同一个局域网。Real Server 需要支持隧道协议。

3.2 LVS 调度算法

  • 固定调度算法:轮询(rr)、加权轮询(wrr)、目标地址哈希(dh)、源地址哈希(sh)。
  • 动态调度算法:最少连接(lc)、加权最少连接(wlc)、基于地址的最少连接(lblc)。

总结

LVS-DR 模式通过智能路由实现请求的高效分发,大幅提升服务响应能力。尽管部署时需要精细调整网络参数,但其卓越的性能表现值得投入。本文从理论到实践完整呈现了 LVS-DR 的部署流程,掌握这一技术后,您将能够为企业构建更强大、更可靠的网络服务体系。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/98074.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/98074.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/98074.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

归一化实现原理

归一化(Normalization)是一种将数据转换到相同尺度的预处理技术,它通常用于让不同特征(或数据项)具有相同的量纲或范围。在联邦学习中,归一化可以用来处理非独立同分布(Non-IID)**数…

企业级实战:构建基于Qt、C++与YOLOv8的模块化工业视觉检测系统

一、概述 在追求高效与精密的现代制造业中,自动化光学检测(AOI)已成为保障产品质量的核心技术。传统的质检流程往往受限于人工效率与主观判断,难以满足大规模、高精度的生产需求。本文旨在研发一套完整的、企业级的工业视觉异常检…

【目标检测】metrice_curve和loss_curve对比图可视化

代码如下: import warnings warnings.filterwarnings(ignore)import os import pandas as pd import numpy as np import matplotlib.pylab as pltpwd os.getcwd()names [model1, model2, model3,ours]plt.figure(figsize(10, 10))plt.subplot(2, 2, 1) for i in …

【LeetCode hot100|Week2】滑动窗口,子串

笔记用于个人复习和巩固,题解非原创,参考LeetCode官方题解以及各个大佬的解法,希望给大家带来帮助,同时笔记也能督促我学习进步 这周主要把滑动窗口和子串的题目刷了一遍 文章目录Week2D1 滑动窗口209. 长度最小的子数组713. 乘积…

vue2纯前端对接海康威视摄像头实现实时视频预览

vue2纯前端对接海康威视摄像头实现实时视频预览一、环境准备二、代码集成1.1 准备webrtcstreamer.js,粘贴即用,不用做任何修改1.2 封装视频组件,在需要视频的地方引入此封装的视频组件即可,也是粘贴即用,注意其中impor…

Android 设置禁止截图和禁止长截图

1.禁止截图 在 Activity 代码中 , 可以在调用 setContentView 函数之前 ,为 Window 窗口对象 设置 LayoutParams.FLAG_SECURE 标志位 , 可以禁止对本界面进行截屏 ,Window 窗口对象 , 可通过 getWindow 方法获取 ,核心代码如下 :getWindow().setFlags(LayoutParams.FLAG_SECUR…

AR 巡检在工业的应用|阿法龙XR云平台

AR 巡检的应用覆盖电力、石油化工、智能制造、轨道交通、冶金等对设备可靠性和安全性要求极高的行业,具体场景包括:电力行业变电站内设备的状态检查:通过 AR 眼镜扫描设备,实时显示设备额定参数、历史故障记录、实时传感器数据&am…

【C++】STL详解(七)—stack和queue的介绍及使用

✨ 坚持用 清晰易懂的图解 代码语言, 让每个知识点都 简单直观 ! 🚀 个人主页 :不呆头 CSDN 🌱 代码仓库 :不呆头 Gitee 📌 专栏系列 : 📖 《C语言》🧩 《…

深度学习周报(9.8~9.14)

目录 摘要 Abstract 1 LSTM相关网络总结与对比 1.1 理论总结 1.2 代码运行对比 2 量子计算入门 3 总结 摘要 本周首先总结了LSTM、Bi-LSTM与GRU的区别与优缺点,对比了三者实战的代码与效果,还另外拓展了一些循环神经网络变体(包括窥视…

Quat 四元数库使用教程:应用场景概述

基础概念 四元数是一个包含四个元素的数组 [x, y, z, w],其中 x,y,z表示虚部,w 表示实部。单位四元数常用于表示3D空间中的旋转。 1. 创建和初始化函数 create() - 创建单位四元数 应用场景:初始化一个新的四元数对象,通常作为其他…

【Java后端】Spring Boot 多模块项目实战:从零搭建父工程与子模块

如何用 Spring Boot 搭建一个父工程 (Parent Project),并在其中包含多个子模块 (Module),适合企业级项目或者需要分模块管理的场景。Spring Boot 多模块项目实战:从零搭建父工程与子模块在日常开发中,我们经常会遇到这样的需求&am…

企业级AI会议系统技术实现:快鹭如何用AI重构会议全流程

摘要 本文深度解析快鹭AI会议系统的核心技术架构,重点探讨其在语音识别、自然语言处理、数据集成和安全防护等方面的技术实现。通过对比传统会议系统的技术痛点,分析快鹭AI如何通过技术创新实现会议筹备时间减少67%、数据调取速度提升100倍的显著效果。…

【CSS学习笔记3】css特性

1css三大特性 1.1层叠性:就近原则,最新定义的样式 1.2继承性:子标签集成父标签的样式,如文本和字号 行高的继承:不加单位指的是当前文字大小的倍数 body {font: 12px/1.5 Microsoft YaHei;color: #be1313;} div {…

[C语言]常见排序算法①

1.排序的概念及常见的排序算法排序在咱们日常生活中十分的常见,就好比是网上购物的时候通常能够选择按照什么排序,比如价格、评论数量、销量等。那么接下来咱们就来了解一些关于排序的概念。排序:所谓排序,就是使一串记录&#xf…

文献阅读笔记:RS电子战测试与测量技术文档

信息来源:罗德与施瓦茨(Rohde & Schwarz)公司关于电子战(Electronic Warfare, EW)测试与测量解决方案专业技术文档。 该文档由台湾地区应用工程师Mike Wu撰写,核心围绕电子战基础、雷达系统、实战应用及…

别再纠结 Postman 和 Apifox 了!这款开源神器让 API 测试更简单

别再纠结 Postman 和 Apifox 了!这款开源神器让 API 测试更简单🔥 作为一名开发者,你是否还在为选择 API 测试工具而纠结?Postman 太重、Apifox 要联网、付费功能限制多?今天给大家推荐一款完全免费的开源替代方案 ——…

微调神器LLaMA-Factory官方保姆级教程来了,从环境搭建到模型训练评估全覆盖

1. 项目背景 开源大模型如LLaMA,Qwen,Baichuan等主要都是使用通用数据进行训练而来,其对于不同下游的使用场景和垂直领域的效果有待进一步提升,衍生出了微调训练相关的需求,包含预训练(pt)&…

创建其他服务器账号

✅ 在 /home74 下创建新用户的完整步骤1. 创建用户并指定 home 目录和 shellsudo useradd -m -d /home74/USERNAME -s /bin/bash USERNAME-m:自动创建目录并复制 /etc/skel 默认配置文件(.bashrc 等)。-d:指定用户 home 路径&…

【WebGIS】Vue3使用 VueLeaflet + 天地图 搭建地图可视化平台(基础用法)

初始化 创建项目 nodejs 18.0.6npm 9.5.1 引入地图服务 VueLeaflet GitHub - vue-leaflet/vue-leaflet: vue-leaflet 与 vue3 兼容 Vue Leaflet (vue2-leaflet) package.josn安装版本 直接添加四个依赖 {// ..."scripts": {// ...},"depen…

OpenCV 开发 -- 图像阈值处理

文章目录[toc]1 基本概念2 简单阈值处理cv2.threshold3 自适应阈值处理cv2.adaptiveThreshold更多精彩内容👉内容导航 👈👉OpenCV开发 👈1 基本概念 图像阈值处理(Thresholding)是图像处理中的一种基本技术…