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

一、 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.service96  systemctl disable firewalld.service97  setenforce 098  yum install nfs-utils rpcbind -y99  systemctl start rpcbind.service100  systemctl start nfs.service101  systemctl enable nfs.service102  systemctl enable rpcbind.service103  mkdir -p /var/www/html/{cxk,xhz}104  cd /var/www/html/105  ls106  echo 'this is cxk_web01!' >cxk/test.html107  echo 'this is xhz_web02!' >xhz/test.html108  cat cxk/test.html 109  cat xhz/test.html 110  vim /etc/exports111  systemctl enable --now rpcbind nfs112  showmount -e113  systemctl stop firewalld114  setenforce 0115  showmount -e116  systemctl enable --now rpcbind nfs117  showmount -e118  vim /etc/exports119  systemctl status rpcbind.service 120  systemctl status nfs121  showmount -e122  exportfs -a123  showmount -e

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

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

   77  systemctl restart network.service78  systemctl disable --now firewalld79  setenforce 080  showmount -e 192.168.136.11081  cd /etc/yum.repos.d/82  ls83  mkdir bak84  mv *.repo bak85  rz -E86  ls87  yum -y install nginx88  vim /etc/fstab 89  mount -a90  df -h91  ls92  ls /usr/share/nginx/html/93  cat te94  ls /usr/share/nginx/html/95  cat /usr/share/nginx/html/test.html 96  vim /etc/nginx/nginx.conf 97  systemctl restart nginx98  vim /etc/sysconfig/network-scripts/ifcfg-ens3399  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  ls72  vim ifcfg-ens33 73  cat /proc/net/ip_vs74  systemctl restart network75  vim /etc/sysctl.conf 76  cp ifcfg-lo ifcfg-lo:077  ls78  vim ifcfg-lo:079  cp ifcfg-ens33 ifcfg-lo:080  vim ifcfg-lo:081  route add -host 192.168.136.200 dev lo:082  cat ifcfg-lo:083  systemctl restart network84  ip a85  ifconfig 86  route add -host 192.168.136.200 dev lo:087  route -n88  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-scripts104  ls105  cp ifcfg-ens33 ifcfg-ens33:0106  vim ifcfg-ens33:0  #配置虚拟 IP 地址107  systemctl restart network108  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 -ln117  ipvsadm -A -t 192.168.136.200:80 -s rr118  ipvsadm -a -t 192.168.136.200:80 -r 192.168.136.120:80 -g  #若隧道模式,-g替换为-i119  ipvsadm -a -t 192.168.136.200:80 -r 192.168.136.130:80 -g120  ipvsadm121  ipvsadm -ln122  systemctl disable --now firewalld123  setenforce 0124  vim /etc/sysctl.conf  #调整 proc 响应参数125  history

 

第六步:测试

 

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

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

相关文章

本地运行大语言模型并可视化(Ollama+big-AGI方案)

目前有两种方案支持本地部署,两种方案都是基于llamacpp。其中 Ollama 目前只支持 Mac,LM Studio目前支持 Mac 和 Windows。 LM Studio:https://lmstudio.ai/ Ollama:https://ollama.ai/download 本文以 Ollama 为例 step1 首先下…

STM32_启动流程详解

目录标题 前言 启动流程概述复位中断函数详解SystemInit函数详解 __main函数详解 附录 stm32单片机的存储器映像中断向量表的映射 前言 最近在学习IAP远程OTA升级单片机固件程序,发现自己对单片机的启动流程还不是那么了解,就总结整理一下吧。 启动流程…

QT实现四则运算计算器

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);this->setMaximumSize(240,300);this->setMinimumSize(240,300);this->setWindowTitle("计算器&…

node.js mongoose简述

目录 官方文档 mongoose Schema Model Query document 关系 官方文档 Mongoose v8.0.3: Getting Started mongoose Mongoose 是一个 Node.js 环境下 MongoDB 的对象建模工具。它提供了一种在应用程序中与 MongoDB 数据库进行交互的方式,使得开发者能够使用…

NoSQL 数据库有哪些典型应用?

前面的内容介绍了数据库读写分离和分库分表相关知识,都是针对关系型数据库的,即通常说的 RDBMS。除了关系型数据库,NoSQL 在项目开发中也有着越来越重要的作用,与此同时,NoSQL 相关的内容也是面试的常客。今天我们一起…

函数难题:排列

给定一个整数 n,将数字 1∼n 排成一排,将会有很多种排列方法。 现在,请你按照字典序将所有的排列方法输出。 输入格式 共一行,包含一个整数 n。 输出格式 按字典序输出所有排列方案,每个方案占一行。 数据范围 …

【Linux】驱动

驱动 驱动程序过程 系统调用 用户空间 内核空间 添加驱动和调用驱动 驱动程序是如何调用设备硬件 驱动 在计算机领域,驱动(Driver)是一种软件,它充当硬件设备与操作系统之间的桥梁,允许它们进行通信和协同工作。驱动程…

[已解决】uniapp内置插件,editor富文本报错(附quill.min.js、image-resize.min.js文件)

在使用uni-app运行内置插件editor时,无法输入内容,控制台报错 原因:查看官网得知,需动态引入quill.min.js、image-resize.min.js文件 解决方法: 1.下载quill.min.js、image-resize.min.js到项目static/eidtor文件中 链…

云原生之深入解析Kubernetes Operator的最佳实践和最常见的问题分析

一、Kubernetes Operator 简介 Kubernetes Operator 是通过连接主 API 并 watch 时间的一组进程,一般会 watch 有限的资源类型。当相关 watch 的 event 触发的时候,operator 做出响应并执行具体的动作。这可能仅限于与主 API 交互,但通常会涉…

Linux下FFmepg使用

1.命令行录一段wav,PCM数据 ffmpeg -f alsa -i hw:0,0 xxx.wav//录制 ffplay out.wav//播放ffmpeg -f alsa -i hw:0,0 -ar 16000 -channels 1 -f s16le 1.pcm ffplay -ar 16000 -channels 1 -f s16le 1.pcm -ar freq 设置音频采样率 -ac channels 设置通道 缺省为1 2.将pcm…

Kubernetes实战(十四)-k8s高可用集群扩容master节点

1 单master集群和多master节点集群方案 1.1 单Master集群 k8s 集群是由一组运行 k8s 的节点组成的,节点可以是物理机、虚拟机或者云服务器。k8s 集群中的节点分为两种角色:master 和 node。 master 节点:master 节点负责控制和管理整个集群…

PyTorch官网demo解读——第一个神经网络(1)

神经网络如此神奇,feel the magic 今天分享一下学习PyTorch官网demo的心得,原来实现一个神经网络可以如此简单/简洁/高效,同时也感慨PyTorch如此强大。 这个demo的目的是训练一个识别手写数字的模型! 先上源码: fr…

Composer 安装与使用

Composer 是 PHP 的一个依赖管理工具。我们可以在项目中声明所依赖的外部工具库,Composer 会帮你安装这些依赖的库文件,有了它,我们就可以很轻松的使用一个命令将其他人的优秀代码引用到我们的项目中来。 Composer 默认情况下不是全局安装&a…

vue3 element-plus 日期选择器 el-date-picker 汉化

vue3 项目中,element-plus 的日期选择器 el-date-picker 默认是英文版的,如下: 页面引入: //引入汉化语言包 import locale from "element-plus/lib/locale/lang/zh-cn" import { ElDatePicker, ElButton, ElConfigP…

西南科技大学数据库实验二(表数据插入、修改和删除)

一、实验目的 (1)学会用SQL语句对数据库进行插入、修改和删除数据操作 (2)掌握insert、update、delete命令实现对表数据插入、修改和删除等更新操作。 二、实验任务 创建数据库,并创建Employees表、Departments表和…

微服务网关Gateway

springcloud官方提供的网关组件spring-cloud-starter-gateway,看pom.xml文件,引入了webflux做响应式编程,请求转发用到了netty的reactor模型,支持的请求数在1W~1.5W左右。hystrix停止维护后,官方推荐resilience4j做服务熔断,网关这里也能看到依赖。 对于网关提供的功能…

Unity 使用AddTorque方法给刚体施加力矩详解

给刚体施加力,除了使用AddForce方法,我们还可以使用AddTorque方法。该方法是通过施加力矩给刚体以力。AddTorque方法从形式上跟AddForce差不多,它也有4个重载方法: 1、AddTorque(Vector3 torque);使用Vector3类型参数…

在Node.js中MongoDB查询分页的方法

本文主要介绍在Node.js中MongoDB查询分页的方法。 目录 Node.js中MongoDB查询分页使用原生的mongodb驱动程序查询分页使用Mongoose库进行查询分页注意项 Node.js中MongoDB查询分页 在Node.js中使用MongoDB进行查询分页,可以使用原生的mongodb驱动程序或者Mongoose库…

【web安全】密码爆破讲解,以及burp的爆破功能使用方法

前言 菜某总结,欢迎指正错误进行补充 密码暴力破解原理 暴力破解实际就是疯狂的输入密码进行尝试登录,针对有的人喜欢用一些个人信息当做密码,有的人喜欢用一些很简单的低强度密码,我们就可以针对性的生成一个字典,…

【Linux】文件系统、文件系统结构、虚拟文件系统

一、文件系统概述 1. 什么是文件系统?2. 文件系统(文件管理系统的方法)的种类有哪些?3. 什么是分区?4. 什么是文件系统目录结构?5. 什么虚拟文件系统Virtual File System ?6. 虚拟文件系统有什…