LVS负载均衡群集部署—DR直接路由

news2024/11/25 7:14:58

目录

  • 一、LVS-DR模式
  • 二、LVS-DR模式的特点
  • 三、LVS-DR中的ARP问题
  • 四、LVS-DR的优点与缺点
  • 五、为什么谁知lo:0而不是ens33:0
  • 六、LVS负载均衡群集-DR模式部署
    • 1.配置nfs共享(192.168.154.10)
    • 2.部署第一台nginx服务(192.168.154.11)
    • 3.部署第二台nginx服务(192.168.154.12)
    • 4.部署部署LVS调度器(192.168.154.13)


一、LVS-DR模式

LVS-DR(Linux Virtual Server Director Server)工作模式,是生产环境中最常用的一 种工作模式。

LVS-DR 模式,Director Server 作为群集的访问入口,不作为网关使用
节点 Director Server 与 Real Server 需要在同一个网络中,返回给客户端的数据不需要经过 Director Server。
为了响应对整个群集的访问,Director Server 与 Real Server 都需要配置 VIP 地址。
Director Server作为群集的访问入口,但不作为网关使用,后端服务器池中的Real Server与Director Server在同一个物理网络中,发送给客户机的数据包不需要经过Director Server。为了响应对整个群集的访问,DS(前端负载均衡节点服务器)与RS(后端真实服务器)都需要配置有VIP地址。

每个Real Server上都有两个IP:VIP(负载均衡对外提供访问的 IP 地址)和RIP(负载均衡后端的真实服务器 IP 地址),但是VIP是隐藏的,就是不能提供解析等功能,只是用来做请求回复的源IP的,Director上只需要一个网卡,然后利用别名来配置两个IP:VIP和DIP(负载均衡与后端服务器通信的 IP 地址),在DIR接收到客户端的请求后,DIR根据负载算法选择一台rs sever的网卡mac作为客户端请求包中的目标mac,通过arp转交给后端RS serve处理,后端再通过自己的路由网关回复给客户端。

数据包流量分析:

客户端发送请求到 Director Server,请求的数据报文(源 IP 是 CIP,目标 IP 是 VIP) 到达内核空间。
Director Server 和 Real Server 在同一个网络中,数据通过二层数据链路层来传输。
内核空间判断数据包的目标 IP 是本机 VIP,此时 IPVS 比对数据包请求的服务是否是集群服务,是集群服务就重新封装数据包。修改源 MAC 地址为 Director Server 的 MAC 地址,修改目标 MAC 地址为 Real Server 的 MAC 地址,源 IP 地址与目标 IP 地址没有改 变,然后将数据包发送给 Real Server。
到达 Real Server 的请求报文的 MAC 地址是自身的 MAC 地址,就接收此报文。数 据包重新封装报文(源 IP 地址为 VIP,目标 IP 为 CIP),将响应报文通过 lo 接口传送给物理 网卡然后向外发出。
Real Server 直接将响应报文传送到客户端。

二、LVS-DR模式的特点

Director Server 和 Real Server 必须在同一个物理网络中。
Real Server 可以使用私有地址,也可以使用公网地址。如果使用公网地址,可以通过 互联网对 RIP 进行直接访问。
所有的请求报文经由 Director Server,但回复响应报文不能经过 Director Server。
Real Server 的网关不允许指向 Director Server IP,即不允许数据包经过 Director S erver。
Real Server 上的 lo 接口配置 VIP 的 IP 地址。

三、LVS-DR中的ARP问题

1、在LVS-DR负载均衡集群中,负载均衡与节点服务器都要配置相同的VIP地址。

2、在局域网中具有相同的IP地址,势必会造成各服务器ARP通信的紊乱。

当ARP广播发送到LVS-DR集群时,因为负载均衡器和节点服务器都是连接到相同网络上,它们都会接收到ARP广播。只有前端的负载均衡器进行响应,其他节点服务器不应该响应ARP广播。

3、对节点服务器进行处理,使其不响应针对VIP的ARP请求。

使用虚接口lo:0承载VIP地址

设置内核参数arp_ignore=1:系统只响应目的IP为本地IP的ARP请求

4、RealServer返回报文(源IP是VIP)经路由器转发,重新封装报文时,需要先获取路由器的MAC地址。

5、发送ARP请求时,Linux默认使用IP包的源IP地址(即VIP)作为ARP请求包中的源IP地址,而不使用发送接口的IP地址,如:ens33

6、路由器收到ARP请求后,将更新ARP表项

7、原有的VIP对应Director的MAC地址会被更新为VIP对应RealServer的MAC地址

8、路由器根据ARP表项,会将新来的请求报文转发给RealServer,导致Director的VIP失效

解决方法:

1、arp ignore=1

防止网关路由发送ARP广播时调度器和节点服务器都进行响应,导致ARP缓存表混乱,不对非本地物理网卡的ARP请求进行响应.因为VIP时承载lo:0

2、arp _announce=2

系统不使用响应数据的源IP地址(VIP)来作为本机进行ARP请求报文的源ip地址,而使用发送报文的物理网卡IP地址作为ARP请求报文的源I地址,这样可以防止网关路由器接受到的源IP地址为VIP的ARP请求报文后的又更新ARP缓存表,导致外网再发送请求时,数据包到达不了调度器。

四、LVS-DR的优点与缺点

  • 优点
    负载均衡器只负责将请求包分发给物理服务器,而物理服务器将应答包直接发给用户。所以,负载均衡器能处理很巨大的请求量,这种方式,一台负载均衡能为 超过100台的物理服务器服务,负载均衡器不再是系统的瓶颈。使用VS-DR方式,如果你的负载均衡器拥有100M的全双工网卡的话,就能使得整个 Virtual Server能达到1G的吞吐量。甚至更高。

  • 缺点
    这种方式需要所有的DIR和RIP都在同一广播域;不支持异地容灾。

五、为什么谁知lo:0而不是ens33:0

因为“负载调度机”转发时并不会改写数据包的目的IP,所以“节点服务器”收到的数据包的目的IP仍是“负载调度器”的虚拟服务IP。为了保证“节点服务器”能够正确处理该数据包,而不是丢弃,必须在“节点服务器”的环回网卡上绑定“负载调度器”的虚拟服务IP。这样“节点服务器”会认为这个虚拟服务IP是自己的IP,自己是能够处理这个数据包的。否则“节点服务器”会直接丢弃该数据包!

“节点服务器”上的业务进程必须监听在环回网卡的虚拟服务IP上,且端口必须和“负载调度机”上的虚拟服务端口一致。因为“负载调度机”不会改写数据包的目的端口,所以“节点服务器”服务的监听端口必须和虚拟服务端口一致,否则“节点服务器”会直接拒绝该数据包。

“节点服务器”处理完请求后,响应直接回给客户端,不再经过“负载调度机”。因为“节点服务器”收到的请求数据包的源IP是客户端的IP,所以理所当然“节点服务器”的响应会直接回给客户端,而不会再经过“负载调度机”。这时候要求“节点服务器”和客户端之间的网络是可达的。

“负载调度机”和“节点服务器”须位于同一个子网。因为“负载调度机”在转发过程中需要改写数据包的MAC为“节点服务器”的MAC地址,所以要能够查询到“节点服务器”的MAC。而要获取到“节点服务器”的MAC,则需要保证二者位于一个子网,否则“负载调度机”只能获取到“节点服务器”网关的MAC地址。

六、LVS负载均衡群集-DR模式部署

环境准备
NFS服务器:192.168.154.10

Web 服务器1:192.168.154.11

Web 服务器2:192.168.154.12

调度器:192.168.154.13

vip:192.168.154.188

客户端:192.168.154.30

1.配置nfs共享(192.168.154.10)

#检查两个服务是否已经安装,如果未安装,可以用yum直接安装
rpm -q nfs-utils rpcbind
systemctl start rpcbind nfs
 
#配置共享目录
cd /opt
mkdir html
mkdir www
chmod 777 /opt/html
chmod 777 /opt/www
 
echo '<h1>this is html web!</h1>' > html/index.html
echo '<h1>this is www web!</h1>' > www/index.html
 
 
vim /etc/exports
/opt/www 192.168.154.0/24(rw,sync,no_root_squash)
/opt/html 192.168.154.0/24(rw,sync,no_root_squash)
exportfs -arv     
showmount -e
                                            

在这里插入图片描述

2.部署第一台nginx服务(192.168.154.11)

将nginx.repo的软件包拖到/etc/yum.repo.d下
yum -y install nginx
 
 
挂载到共享目录
vim /etc/fstab
192.168.154.10:/opt/www /usr/share/nginx/html        nfs     defaults,_netdev 0 0 

mount -a
df -h
systemctl enable --now nginx

在这里插入图片描述

给lo网卡添加虚拟网卡
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.154.188
NETMASK=255.255.255.255
ONBOOT=yes   
 
systemctl restart network
systemctl restart nginx

在这里插入图片描述

vim /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

在这里插入图片描述

route add -host 192.168.154.188 dev lo:0
route -n

在这里插入图片描述

3.部署第二台nginx服务(192.168.154.12)

将nginx.repo的软件包拖到/etc/yum.repo.d下
yum -y install nginx
 
 
挂载到共享目录
vim /etc/fstab
192.168.154.10:/opt/html /usr/share/nginx/html        nfs     defaults,_netdev 0 0 

mount -a
df -h
systemctl enable --now nginx

在这里插入图片描述

给lo网卡添加虚拟网卡
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.154.188
NETMASK=255.255.255.255
ONBOOT=yes   
 
systemctl restart network
systemctl restart nginx

在这里插入图片描述

vim /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

在这里插入图片描述

route add -host 192.168.154.188 dev lo:0
route -n

在这里插入图片描述

4.部署部署LVS调度器(192.168.154.13)

cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0
vim ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.154.188
NETMASK=255.255.255.255
                        
systemctl restart network

在这里插入图片描述

modprobe ip_vs
cat /proc/net/ip_vs

在这里插入图片描述

yum -y install ipvsadm
 
修改内核参数
vim /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
 
 
 
如果直接启动ipvsadm会报错
/var/log/messages查看一下,原因是缺少/etc/sysconfig/ipvsadm这个文件,所以我们可以手动给他添加一下
 
 
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm

在这里插入图片描述

在这里插入图片描述

ipvsadm -C
ipvsadm -A -t 192.168.154.188:80 -s rr
ipvsadm -a -t 192.168.154.188:80 -r 192.168.154.11:80 -g
ipvsadm -a -t 192.168.154.188:80 -r 192.168.154.12:80 -g
ipvsadm #激活相关规则

在这里插入图片描述
找一台虚拟机访问测试

curl http://192.168.154.188

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

常用数据可视化对比类图表大全

优秀的数据可视化从来都不是罗列数据&#xff0c;更要根据自己的数据特征&#xff0c;设计出可以被读者轻松理解的图表。 图表类型有很多&#xff0c;选择正确图表的过程可能会让人混乱。本文将为您介绍数据可视化中比较类图表&#xff0c;以完美地表示您的数据并以最有效的方…

PostgreSQL安装和开启SSL加密连接【配置双向认证】

SSL单向认证和双向认证&#xff1a; SSL单向认证&#xff1a;只有一端校验对端的证书合法性&#xff0c;通常都是客户端来校验服务器的合法性。即在一般的单向认证中&#xff0c;只要求服务器端部署了ssl证书就行&#xff0c;客户端可以无证书&#xff0c;任何用户都可以去访问…

Rasa聊天机器人控制Python Turtle

背景 为了展示Rasa聊天机器人的使用效果以及如何将Rasa应用到业务系统中(这里将Python Turtle模块作为业务系统)&#xff0c;用户将语音或者文本输入至Rasa&#xff0c;经过处理后调用Python Turtle的功能。 turtle库是Python语言中一个很流行的绘制图像的函数库&#xff0c;想…

Docker常用命令笔记

docker常用命令 1 基础命令 sudo docker version #查看docker的版本信息 sudo docker info #查看docker系统信息&#xff0c;包括镜像和容器的数量 2 镜像命令 1&#xff0e;sudo docker images #查看本地主机的所有主机镜像 #解释 **REPOSITORY **#镜像的仓库源TAG **** …

微信小程序python+nodejs+php+springboot+vue 校园餐饮点单配送系统商家 配送员

管理员的主要功能有&#xff1a; 1.管理员输入账户登陆后台 2.个人中心&#xff1a;管理员修改密码和账户信息 3.学生管理&#xff1a;对注册的学生信息进行添加&#xff0c;修改&#xff0c;删除&#xff0c;查询 4.商家管理&#xff1a;对注册的商家信息进行添加&#xff0c;…

【在线研讨会】智慧汽车时代来临 -车规功能安全软硬件一次到位

随着科技的不断发展&#xff0c;智慧汽车的时代已经到来&#xff0c;在实现智慧汽车的过程中&#xff0c;车辆的功能安全、软硬件设计等方面都面临着严峻的挑战。为了确保智慧汽车的安全性和可靠性&#xff0c;在硬件设计方面&#xff0c;需要考虑到各种可能出现的故障和安全风…

日撸 Java 三百行day39

文章目录 说明day39 关键路径1.关键路径2. 代码分析 说明 闵老师的文章链接&#xff1a; 日撸 Java 三百行&#xff08;总述&#xff09;_minfanphd的博客-CSDN博客 自己也把手敲的代码放在了github上维护&#xff1a;https://github.com/fulisha-ok/sampledata day39 关键路…

PMP课堂模拟题目及解析(第1期)

1.在一个大型施工项目的规划阶段&#xff0c;出现了潜在的经济衰退迹象。之前关于经济衰退的风险被指定为低概率和高影响&#xff0c;预计持续 6-12 个月。项目开始后不久 发生了经济衰退&#xff0c;并按预期影响项目。六个月后&#xff0c;经济衰退影响的持续时间将更改为 24…

网络通信与密码相关概念流程

文章目录 前言一、明文通信二、密文通信1.对称加密2.非对称加密 三、安全信任机制1.CA(Certificate Authority) 证书授权中心2.数字证书 总结 前言 随着科技的发展&#xff0c;人们的通信都转化成电子通信&#xff0c;由于信息需要通过一个公有的网络进行传输&#xff0c;信息…

Spring IOC 源码解读

将回答以下问题&#xff1a; BeanFactory 和 ApplicationContext 之间的关系和区别。一个 Bean 是如何被注入到 IOC 容器里&#xff0c;中间经历了什么过程&#xff08;Bean 的生命周期&#xff09;。 先入为主 假设你已经有如下经验&#xff1a; 什么是 IOC。 don‘t call…

verilog手撕代码2——各种加法器介绍——真值表、表达式、电路图

文章目录 前言一、半加器二、全加器三、串行/行波进位加法器&#xff08;Ripple-Carry Adder/RCA&#xff09;四、超前进位加法器&#xff08;Lookahead Carry Adder/LCA&#xff09;五、进位保存加法器&#xff08;Carry Save Adder/CSA&#xff09; 前言 2023.4.25 一、半加…

Terraform

文章目录 简介安装简单使用案例 概念原理状态管理Backend 远程状态存储机制 配置语法Argument 参数Block 块terraform块required_providersbackend provider块: 与基础设施交互resource块: 定义基础架构data块: 数据源 表达式(Experssion)和函数(Functions)变量variable 输入变…

【Celery】任务Failure或一直超时Pending

编写背景 task进入队列后&#xff0c;部分任务出现Failure或者一直Pending,且业务代码没有报错。 运行环境 celery配置 from celery import Celery broker redis://:127.0.0.1:6379/1 backend redis://:127.0.0.1:6379/2 app Celery(brokerbroker,backendbackend,includ…

【文心一言】广告文案、演讲稿与请假条自动生成

前言 作为一名大学生而言&#xff0c;平时参加或者举办一些学校组织的活动的时候&#xff0c;总是避免不了需要准备一些演讲稿、广告宣传文案等内容&#xff0c;甚至于在疫情十分严重的这几年内&#xff0c;如何跟老师“委婉的”请假&#xff0c;也成为了我日常头疼的事情。但在…

React之redux的模板

文章目录 以下为模板代码安装(添加 Redux Toolkit 和 React-Redux 依赖包到你的项目中)以下为项目目录在store/index.js里面的模板创建模块(模块化思想),这里就是模板,所有模块通用(src/features/userSlice.js)在main.jsx引入模板(只需要看下面画横线的四行)在组件内使用 以下是…

【网课平台】Day16.项目优化:压测、加缓存优化与分布式锁

文章目录 一、压力测试1、优化需求2、性能指标3、安装Jmeter4、压力测试5、优化日志 二、缓存优化1、给接口加Redis缓存2、缓存穿透3、解决缓存穿透4、缓存雪崩5、缓存击穿 三、分布式锁1、本地锁的问题2、IDEA一个项目启动多个实例3、分布式锁4、Redis NX实现分布式锁5、Redis…

多项式加法(用 C 语言实现)

目录 一、多项式的初始化 二、多项式的创建 三、多项式的加法 四、多项式的输出 五、清除链表 六、主函数 用链表实现多项式时&#xff0c;每个链表节点存储多项式中的一个非零项&#xff0c;包括系数&#xff08;coef&#xff09;和指数&#xff08;exp&#xff09;两个…

Java8新特性函数式编程 - Lambda、Stream流、Optional

1.Lambda表达式 1.1 概述 ​ Lambda是JDK8中一个语法糖。他可以对某些匿名内部类的写法进行简化。它是函数式编程思想的一个重要体现。让我们不用关注是什么对象。而是更关注我们对数据进行了什么操作。 1.2 核心原则 可推导可省略 1.3 基本格式 (参数列表)->{代码}例一…

python毕业设计之django+vue公司企业物流信息管理系统

基于 开发语言&#xff1a;Python 框架&#xff1a;django Python版本&#xff1a;python3.7.7 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 开发软件&#xff1a;PyCharm 语言设计并实现了速运公司物流信息管理系统。该系统基于B/S即所谓浏览器/服务器模式&…

智慧物流信息系统开发需具备哪些功能?

智慧物流软件开发公司在制作管理系统的时候&#xff0c;需要具备的功能有哪些呢&#xff1f; 一、采集跟踪功能。 &#xff08;1&#xff09;、信息采集&#xff1a;信息采集跟踪系统是智能物流系统的重要组成部分。物流信息采集系统主要由RFID射频识别系统和Savan…