[Linux] LVS负载均衡群集——DR模式

news2024/12/25 0:57:01

一、 DR模式的特点

        直接路由: 在LVS_DR模式下,负载均衡器不修改数据包的IP地址,只修改目的MAC地址。这使得数据包可以直接路由到后端实际服务器上,而不需要返回到负载均衡器。

        高性能: 由于数据包在传输过程中不需要回到负载均衡器,LVS_DR模式具有较低的延迟,提供了高性能的负载均衡。

        负载均衡器无状态: 在LVS_DR模式下,负载均衡器是无状态的,因为它不处理响应流量。这降低了负载均衡器的负担,使其更容易扩展和维护。

        后端服务器真实IP: 客户端直接与后端实际服务器通信,因此客户端看到的是后端服务器的真实IP地址,而不是负载均衡器的IP地址。

        ARP协议处理: 在LVS_DR模式下,负载均衡器需要处理ARP(地址解析协议)请求,以便将数据包正确路由到后端实际服务器。通常,负载均衡器会使用VIP(Virtual IP)来响应ARP请求。

二、LVS-DR模式工作过程

1. 客户端通过VIP将访问请求报文(源IP为客户端IP,目的IP为VIP)发送到调度器


2. 调度器通过调度算法选择最适合的节点服务器,并重新封装数据报文(将源MAC改为调度器的       MAC,目的MAC改为节点服务器的MAC地址),再通过交换机转发请求给节点服务器


3. 节点服务器收到请求报文后,确认目的MAC和目的IP无误后解包并送到应用层进行处理


4. 节点服务器在返回响应报文前,会先重新封装报文(源IP为VIP,目的为客户端IP),再将响应报文先通过lo接口传送给物理网卡,再通过物理网卡发送给客户端

三、LVS-DR模式部署过程

第一步:部署共享服务(主机IP:192.168.136.110)
  95  systemctl stop firewalld.service
  96  systemctl disable firewalld.service
  97  setenforce 0
  98  yum install nfs-utils rpcbind -y
  99  systemctl start rpcbind.service
  100  systemctl start nfs.service
  101  systemctl enable nfs.service
  102  systemctl enable rpcbind.service
  103  mkdir -p /var/www/html/{cxk,xhz}
  104  cd /var/www/html/
  105  ls
  106  echo 'this is cxk_web01!' >cxk/test.html
  107  echo 'this is xhz_web02!' >xhz/test.html
  108  cat cxk/test.html 
  109  cat xhz/test.html 
  110  vim /etc/exports
  111  systemctl enable --now rpcbind nfs
  112  showmount -e
  113  systemctl stop firewalld
  114  setenforce 0
  115  showmount -e
  116  systemctl enable --now rpcbind nfs
  117  showmount -e
  118  vim /etc/exports
  119  systemctl status rpcbind.service 
  120  systemctl status nfs
  121  showmount -e
  122  exportfs -a
  123  showmount -e

第二步:配置节点服务器(192.168.136.120 192.168.136.130) 

两台web节点服务器相同的操作:

   77  systemctl restart network.service
   78  systemctl disable --now firewalld
   79  setenforce 0
   80  showmount -e 192.168.136.110
   81  cd /etc/yum.repos.d/
   82  ls
   83  mkdir bak
   84  mv *.repo bak
   85  rz -E
   86  ls
   87  yum -y install nginx
   88  vim /etc/fstab 
   89  mount -a
   90  df -h
   91  ls
   92  ls /usr/share/nginx/html/
   93  cat te
   94  ls /usr/share/nginx/html/
   95  cat /usr/share/nginx/html/test.html 
   96  vim /etc/nginx/nginx.conf 
   97  systemctl restart nginx
   98  vim /etc/sysconfig/network-scripts/ifcfg-ens33
   99  systemctl restart network nginx
   

  web2节点服务器的后续操作:

第三步:配置虚拟 IP 地址(192.168.136.200)

  两台web节点服务器相同的操作:

   68  vim nginx.conf 
   69  cat /etc/sysconfig/network-scripts/ifcfg-ens33 
   70  cd /etc/sysconfig/network-scripts/
   71  ls
   72  vim ifcfg-ens33 
   73  cat /proc/net/ip_vs
   74  systemctl restart network
   75  vim /etc/sysctl.conf 
   76  cp ifcfg-lo ifcfg-lo:0
   77  ls
   78  vim ifcfg-lo:0
   79  cp ifcfg-ens33 ifcfg-lo:0
   80  vim ifcfg-lo:0
   81  route add -host 192.168.136.200 dev lo:0
   82  cat ifcfg-lo:0
   83  systemctl restart network
   84  ip a
   85  ifconfig 
   86  route add -host 192.168.136.200 dev lo:0
   87  route -n
   88  history

web1网卡设置:

web2网卡设置:

第四步:调整内核的 ARP 响应参数以阻止更新 VIP 的 MAC 地址,避免发生冲突
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
net.ipv4.conf.lo.arp_ignore = 1     #系统只响应目的IP为本地IP的ARP请求
net.ipv4.conf.lo.arp_announce = 2   #系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址
net.ipv4.conf.all.arp_ignore = 1 
net.ipv4.conf.all.arp_announce = 2
sysctl -p

两台web服务器同样操作 :

 第五步:配置负载调度器(192.168.136.100)
  102  ifconfig 
  103  cd /etc/sysconfig/network-scripts
  104  ls
  105  cp ifcfg-ens33 ifcfg-ens33:0
  106  vim ifcfg-ens33:0  #配置虚拟 IP 地址
  107  systemctl restart network
  108  vim /etc/sysctl.conf 
  109  yum -y install ipvsadm.x86_64  #安装服务
  110  ipvsadm-save > /etc/sysconfig/ipvsadm #不做这一项服务启动不了
  111  systemctl restart ipvsadm.service 
  112  modprobe ip_vs  #启动ip_vs模块
  113  cat /proc/net/ip_vs  #查看启动结果/ip_vs版本
     #配置负载分配策略
  114  ipvsadm -ln  #查看节点状态,Route代表 DR模式
  115  ipvsadm -C  #清空规则
  116  ipvsadm -ln
  117  ipvsadm -A -t 192.168.136.200:80 -s rr
  118  ipvsadm -a -t 192.168.136.200:80 -r 192.168.136.120:80 -g  #若隧道模式,-g替换为-i
  119  ipvsadm -a -t 192.168.136.200:80 -r 192.168.136.130:80 -g
  120  ipvsadm
  121  ipvsadm -ln
  122  systemctl disable --now firewalld
  123  setenforce 0
  124  vim /etc/sysctl.conf  #调整 proc 响应参数
  125  history

 

第六步:测试

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

dubbo--03--- dubbo 支持的9种协议

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Dubbo框架特性Dubbo 和 Spring Cloud区别 dubbo 支持的9种协议协议类型1、dubbo 协议 (默认)特性配置常见问题 2、rmi 协议3、hessian 协议4、http 协议特性 5、web…

案例073:基于微信小程序的智慧旅游平台开发

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

【MYSQL】-表的操作

💖作者:小树苗渴望变成参天大树🎈 🎉作者宣言:认真写好每一篇博客💤 🎊作者gitee:gitee✨ 💞作者专栏:C语言,数据结构初阶,Linux,C 动态规划算法🎄 如 果 你 …

functools.partial:Python中灵活函数部分应用的工具

更多资料获取 📚 个人网站:ipengtao.com 在Python编程中,functools.partial是一个强大的工具,它提供了一种部分应用函数的方式,能够在创建新函数时固定部分参数,从而在后续调用中减少需要传递的参数数量。…

python中random.seed()和random.getstate()用法详解

python中random.seed()和random.getstate()用法详解 摘要 python的random包经常被用于模拟实验的重现,数据集的随机划分的确定性重现。然而,我本人之前对random.seed()什么时候调用,调用之后会对之后多少代码起决定性作用这一块感到云里雾里…

压测方案设计..

01 为什么要做压测 1、什么是压力测试? 不断向被测对象施加压力,测试系统在压力情况下的表现。 2、压力测试的目的是什么? 测试得出系统的极限性能指标,从而给出合理的承诺值或者容量告警; 找出系统的性能瓶颈&am…

清华提出ViLa,揭秘 GPT-4V 在机器人视觉规划中的潜力

人类在面对简洁的语言指令时,可以根据上下文进行一连串的操作。对于“拿一罐可乐”的指令,若可乐近在眼前,下意识的反应会是迅速去拿;而当没看到可乐时,人们会主动去冰箱或储物柜中寻找。这种自适应的能力源于对场景的…

51单片机简易出租车计费系统仿真设计

51单片机简易出租车计费系统仿真设计( proteus仿真程序报告讲解视频) 仿真图proteus 8.9及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0036 1.主要功能: 出租车计费系统设计内容: 1、…

JDK17 SpringBoot3 整合常见依赖

JDK版本:17 SpringBoot 整合Mybatis Plus 、Redis等 依赖文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xs…

数据链路程协议

目录 数据链路层 介绍 以太网帧格式 目的地址 源地址 类型 CRC 数据 如何封装和解包 如何向上交付 MAC地址与IP地址 MTU 局域网数据转发 局域网数据碰撞 数据包转发 ARP协议 构建ARP请求 ARP请求的处理 ARP响应的构建 ARP欺骗 DNS域名解析 域名解析是什么…

标准IO与文件IO

标准IO通过缓冲机制减少系统调用&#xff0c;实现更高的效率 全缓冲&#xff1a;当流的缓冲区无数据或无空间时才执行实际IO操作 行缓冲&#xff1a;当在输入和输出中遇到换行符&#xff08;\n&#xff09;时&#xff0c;进行IO操作 当流和一个终端关联时&#xff0c;典型的行缓…

【06】GeoScene海图或者电子航道图数据自动化质检

1 S-58错误管理器验证产品 在你编辑数据时进行快速的质量检查可以使用S-58错误管理器&#xff0c;S-58错误管理器工具允许您使用IHO S-58验证标准来验证海事数据库中的产品。你可以验证整个产品&#xff0c;或验证产品的当前范围。 1.1验证产品 使用S-58错误管理器工具完成以…

服务器解析漏洞是什么?攻击检测及修复

服务器解析漏洞&#xff08;Server-side Include Vulnerability&#xff0c;SSI漏洞&#xff09;是一种安全漏洞&#xff0c;通常出现在支持服务器端包含&#xff08;SSI&#xff09;功能的Web服务器上。SSI是一种在Web页面中嵌入动态内容的技术&#xff0c;允许开发人员将外部…

Java 数据结构篇-实现二叉搜索树的核心方法

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 二叉搜索树的概述 2.0 二叉搜索树的成员变量及其构造方法 3.0 实现二叉树的核心接口 3.1 实现二叉搜索树 - 获取值 get(int key) 3.2 实现二叉搜索树 - 获取最小…

监控k8s controller和scheduler,创建serviceMonitor以及Rules

目录 一、修改kube-controller和kube-schduler的yaml文件 二、创建service、endpoint、serviceMonitor 三、Prometheus验证 四、创建PrometheusRule资源 五、Prometheus验证 直接上干货 一、修改kube-controller和kube-schduler的yaml文件 注意&#xff1a;修改时要一个节…

neo4j安装报错:neo4j.bat : 无法将“neo4j.bat”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。

neo4j安装报错&#xff1a; neo4j.bat : 无法将“neo4j.bat”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写&#xff0c;如果包括路径&#xff0c;请确 保路径正确&#xff0c;然后再试一次。 解决办法&#xff1a; 在环境变量中的&#xff0c;用户…

手把手教你搭建谷歌Gemini

前言 谷歌上周推出了一款名为 Gemini 的多模态大模型&#xff0c;并且现在发布了免费开放的 Gemini API 供开发者使用。根据谷歌提供的定价信息&#xff0c;Gemini 有两种收费方式。免费版本每分钟可以进行 60 次请求&#xff0c;足够满足个人用户的需求。收费版本目前暂不可用…

你了解Redis中的跳跃表吗?

跳跃表的基本内容&#xff1a; 对于一个有序序列&#xff0c;链表相对于数组来说&#xff0c;删除和插入的效率要快很多&#xff0c;只需要改变指针的指向&#xff0c;但是在查找的时候&#xff0c;数组就要更占优势一些&#xff0c;可以随机访问&#xff0c;然而链表需要从头…

连接SSH报错 / 连接容器SSH

连接SSH报错 / 连接容器SSH 前言被控端主控端连接失败 前言 本文介绍如何通过SSH方式远程连接Linux被控端&#xff0c;并介绍如何解决连接失败问题。 此方法同样适用于SSH连接Docker容器。 被控端 被控端一般为Linux&#xff0c;默认已安装ssh&#xff0c;但需要手动安装ope…

C++ OJ题测试—排序算法效率

目录 OJ链接 一、直接插入排序 二、希尔排序 三、直接选择排序 常规&#xff1a; 第二种&#xff1a; 四、 堆排序 五、冒泡排序 六、快速排序 常规&#xff1a; 三路划分优化效率 七、归并排序 八、计数排序 OJ链接 ​ 一、直接插入排序 class Solution { pub…