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

lvsDR模式

LVS-DR模式 是最常用的LVS负载方式 直接路由模式

Lvs调度器 只负责请求和转发 转发到真实服务器 但是响应结果 由后端服务器直接转发给客户端 不需要经过调度器处理 可以减轻Lvs调度器的负担 提高系统性能和稳定性

工作原理:

  1. 客户端发送请求到vip
  2. LVS调度器接受请求后 根据算法选择一台后端真实服务器 请求转发到后端RS 请求的报文的目的mac地址 修改成后端真实服务器的Mac地址 转发
  3. 后端服务器接受请求 处理完成之后 由于后端服务器直接把响应结果转发给客户端 响应报文中的目的mac地址修改成客户端的mac地址 直接把响应转发给客户端
  4. 调度器 后端真实服务器都有vip地址 调度的地址和后端真实服务器在同一网段

MAC地址转发

DR模式的特点

  1. 调度器的IP和真实服务器的IP必须在同一个物理网络中
  2. 真实服务器的IP地址可以是私有地址 也可以是公网地址 如果配置的是公网通过互联网可以直接访问IP
  3. 调度器只作为访问入口 但是不做网关 要把服务器转发功能关闭
  4. 真实服务器的网关也不能指向调度器 真实服务器的数据包不允许经过调度器
  5. 后端真实服务器上 基于LO接口配置VIP的IP地址

ARP协议:网络层协议 将IP地址解析为物理mac地址

ARP请求:主机A和主机B

ARP核心是解决局域网内部的通信 IP地址和mac地址的映射

DR模式的调度器和后端服务器都在一个网段中 通过ARP请求实现局域网内部通信

问题一:VIP地址相同会导致响应冲突

由于调度器和后端真实服务器的都有相同的vip地址 导致响应冲突ARP通信紊乱

解决办法:

对真实服务器进行处理 真实服务器不响应针对VIP的ARP请求

VIP地址使用的LO的虚拟地址 arp_ignore=1

后端真实服务器只响应目的IP为本地IP 也就是RIP 真实IP地址

问题二:返回报文使用的源地址还是VIP地址 调度器也是VIP 怎么把响应返回给客户端不经过调度器

解决办法:

后端真实服务器做内核参数优化 :arp_announce=2 系统不使用IP数据包的源地址来设置ARP的请求

如何实现DR模式负载均衡和配置方法

调度器的内核优化

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

net.ipv4.conf.lo.arp_ignore = 1

#设置lo接口忽略来自任何接口的ARP请求

net.ipv4.conf.lo.arp_announce = 2

设置lo接口仅会响应本地的IP地址,其他的接口ARP请求,全部忽略

net.ipv4.conf.all.arp_ignore = 1

所有接口忽略来自任务接口的ARP请求

net.ipv4.conf.all.arp_announce = 2

# 所有接口仅会响应本地的IP地址的ARP请求,其他的接口的ARP请求全部忽略

net.ipv4.conf.lo.arp_ignore = 1

#设置lo接口忽略来自任何接口的ARP请求

net.ipv4.conf.lo.arp_announce = 2

设置lo接口仅会响应本地的IP地址,其他的接口ARP请求,全部忽略

net.ipv4.conf.all.arp_ignore = 1

所有接口忽略来自任务接口的ARP请求

net.ipv4.conf.all.arp_announce = 2

# 所有接口仅会响应本地的IP地址的ARP请求,其他的接口的ARP请求全部忽略

DR模式 核心就是响应客户端由后端的真实服务器 不需要经过调度器

VIP地址 调度器和后端服务器都要有VIP地址

VIP地址:暴露访问地址

              调度器转发请求的表示

              调度器和后端服务器之间进行通信

              高可用(DR模式的高可用)

其他所有的请求和响应都是禁用

负载均衡算法设置

修改VIP的调度算法:

ipvsadm -E -t 192.168.233.100:80 -s wrr

修改策略轮询权重

http://www.lryc.cn/news/211725.html

相关文章:

  • Linux系统下配置王爽汇编语言环境
  • scss下解决父组件中使用::v-deep修改样式穿透到子组件的问题
  • Redis的瓶颈在哪里?
  • 如何在spark中使用scikit-learn和tensorflow等第三方python包
  • JS中call()、apply()、bind()改变this指向的原理
  • BUUCTF 镜子里面的世界 1
  • 【MySQL--->内置函数】
  • FFmpeg 从视频流中抽取图片
  • Oracle RU 19.21及 datapatch -sanity_checks
  • 云原生周刊:ingress2gateway 发布 | 2023.10.30
  • YOLOv8如何关闭AMP混合精度训练?
  • k8s、kubeadm安装
  • kinect v2获取人体骨骼数据
  • JDK、JRE及JVM的关系及作用
  • 组学数据上传(六)|GEO数据库数据上传实操
  • 洛谷,Hydro,Vijos,博客园,GitHub 分别是什么?
  • 自学VUE笔记
  • 系列四十二、Spring的事务传播行为案例演示(二)#REQUIRED
  • oracle rac-归档满处理
  • Python Django 之全局配置 settings 详解
  • 挑选MES系统供应商,需要考虑哪些重要因素?
  • Ai创作系统ChatGPT网站源码+图文搭建教程+支持GPT4.0+支持ai绘画(Midjourney)
  • 基于计算机视觉的坑洼道路检测和识别-MathorCup A(深度学习版本)
  • 【考研数学】概率论与数理统计 —— 第七章 | 参数估计(1,基本概念及点估计法)
  • 获取文本长度
  • python html(文件/url/html字符串)转pdf
  • Spring概述
  • Linux网卡
  • 【Python机器学习】零基础掌握ElasticNet变量选择回归器
  • 【数据结构】模拟实现Vecotr