lvs的DR模式

基于Linux的负载均衡集群软件

· LVS

全称为Linux Virtual Server,是一款开源的四层(传输层)负载均衡软件

· Nginx
支持四层和七层(应用层)负载均衡

· HAProxy
和Nginx一样,也可同时支持四层和七层(应用层)负载均衡

基于Linux的高可用集群软件

· Keepalived
KeepalivedLinux中一个轻量级高可用集群部署软件,最初是为LVS设计的,后加入了VRRP功能,
可以实现集群的心跳检测、虚拟IP漂移等功能

· Heartbeat
Heartbeat的功能与Keepalived功能类似,但是不控制虚拟IP的漂移,相对Keepalived更擅长对资
源服务的控制,配置也比较复杂

· Pacemaker

Pacemaker是一款在Linux中应用非常广泛的开源集群资源管理器,它本身不具备集群心跳检测
机制,需依赖CorosyncHeartbeat,可同时适用于任何规模的集群

集群中的常见概念-VIP和地址漂移

· VIP:虚拟IP。在高可用集群中,一般使用VIP向外提供服务,可避免集群中某台主机宕机后可能引起的业务访问IP发生变化

· 地址漂移:在高可用集群中,VIP从某一台主机迁移到另外一台主机称为地址漂移(对终端来说是透明的,是无法检测到的,速度很快)

 终端直接访问Server A或是Server B都不好,如果发生地址漂移,对终端用户都不好,所以直接访问VIP的IP地址,不论是从11到12,112都能访问。

集群中的常见概念-心跳和脑裂

· 心跳:在高可用集群中,主机之间会相互监控彼此对方的状态,以决定哪台主机提供服务,这一机制称为心跳

· 脑裂:如果节点之间的心跳通信中断或不正常,会导致彼此之间抢夺资源,这种现象称为脑裂(故障现象)

Server A 和Server B是一个整体, 它们会通过串口线缆连接起来,利用其做心跳检测,还有一个千兆接口作为备用路线

集群中的常见概念-代理

代理可分为正向代理和反向代理,一般用于负载均衡集群

正向代理和反向代理是相对于被代理者来说的,正向代理被代理的是客户端,反向代理被代理的是服务端

代理局域网访问互联网                                      发布内网服务器让公网用户访问(安全性更高)

LVS在企业IT架构中的位置

三层架构(这里最后一层存储层省略了)

最外面是客户端

对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,比较其各自的优势 

DR 模式

* 负载各节点服务器通过本地网络连接,不需要建立专用的IP隧道

      原理:首先负载均衡器接收到客户的请求数据包时,根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后负载均衡器就把客户端发送的请求数据包的目标MAC地址改成后端真实服务器的MAC地址(R-MAC)。真实服务器响应完请求后,查看默认路由,把响应后的数据包直接发送给客户端,不需要经过负载均衡器。

     优点:负载均衡器只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户。所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,也能处理很巨大的请求量。

     缺点:需要负载均衡器与真实服务器RS都有一块网卡连接到同一物理网段上,必须在同一个局域网环境。

NAT模式

      原理:首先负载均衡器接收到客户的请求数据包时,根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后负载均衡器就把客户端发送的请求数据包的目标IP地址及端口改成后端真实服务器的IP地址(RIP)。真实服务器响应完请求后,查看默认路由,把响应后的数据包发送给负载均衡器,负载均衡器在接收到响应包后,把包的源地址改成虚拟地址(VIP)然后发送回给客户端。

     优点:集群中的服务器可以使用任何支持TCP/IP的操作系统,只要负载均衡器有一个合法的IP地址。

      缺点:扩展性有限,当服务器节点增长过多时,由于所有的请求和应答都需要经过负载均衡器,因此负载均衡器将成为整个系统的瓶颈。

两者的区别:

DR模式不使用调度器为公司网关,而是路由设备,调度器只是分配访问的请求任务而回应的web页面,不经过调度器,直接通过网络设备回应,不容易造成阻塞而且所有节点都使用VIP地址。

在nat模式群集中,LSV负载均衡调度器是所有节点的访问internet的网关服务器其外网口地址也最为整个群集的VIP地址,调度器是整个公司网关任何请求都要经过调度器,包括回应的。

LVS的工作模式-DR

DR模式中,所有的RS需要配置两个地址:RIPVIP

在DR模式中,LVS会通过arp获取到所有RSIP地址和对应的MAC
地址,因此LVS和RS需处于同一二层网络中

当User发送请求到LVS后,LVS保持源目IP地址和端口号不变,同
时将源MAC地址换成自己的MAC地址,目的MAC地址换成调度到
RS MAC进行转发

RS在回响应报文时,源地址是VIP地址,源端口号为提供服务的
端口号,源MAC地址为自己的MAC地址,目的地址为客户端地址,
目的端口号为客户端发起连接请求时的随机端口,目的MAC
址为网关的MAC地址

DR简单实验

本实验共使用四台虚拟机,其中一台配置为LVS服务器,两台用于Nginx服务器的搭建,剩
余一台为Client。其中Nginx服务器可以和上一实验复用,LVS仅需要一个网卡即可,删除
10.0.0.10所在的网卡,并将192.168.1.10所在网卡的地址修改为10.0.0.10。两台Nginx服务
器和LVS服务器处于同一子网中,客户端处于另外一个子网。Nginx服务器和LVS服务器配
置dummy类型的接口接口角于承载VIP。

1、后端服务器(1.12、1.13)批量安装nginx

然后提供一个默认主页

在实际中,后端页面要是一模一样的,这里是为了看效果 

然后覆盖

设为开机自启动

1、绑定vip 

网络上需增加VIP的相关配置

2、修改arp内核配置 

vim /etc/sysctl.conf

在最后加上

修改后立即生效

sysctl -p 

ip a

到这里后端操作就完成了

2、处理代理(1.11)

1、首先绑定VIP

2、安装管理工具 

查看是否有配置 (这里是没有的)

 3、LVS配置

[相关参数说明]
[root@Directory ~]# ipvsadm -help
-A 添加虚拟服务器
-t 设置群集地址(VIP,Virtual IP)
-s 指定负载调度算法
-a 添加真实服务器
-d 删除真实服务器
-r 指定真实服务器(Real Server)的地址
-m 使用NAT模式 :- g、-i分别对应DR、TUN模式
-w 为节点服务器设置权重,默认为1

ipvsadm -At 192.168.1.10:80 -s rr

ipvsadm -at 192.168.1.10:80 -r 192.168.1.12:80 -g 添加后端服务器

ipvsadm -at 192.168.1.10:80 -r 192.168.1.13:80 -g 添加后端服务器

再次查询

3、(1.14)测试

比例是1:1 

脚本-DR设置

首先把之前的操作都清除一下

删除网络

编写脚本

#!/bin/sh
#
# Startup script handle the initialisation of LVS
# chkconfig: - 28 72
# description: Initialise the Linux Virtual Server for DR
#
### BEGIN INIT INFO
# Provides: ipvsadm
# Required-Start: $local_fs $network $named
# Required-Stop: $local_fs $remote_fs $network
# Short-Description: Initialise the Linux Virtual Server
# Description: The Linux Virtual Server is a highly scalable and highly
# available server built on a cluster of real servers, with the load
# balancer running on Linux.
# description: start LVS of DR
LOCK = /var/lock/ipvsadm.lock
VIP = 192 .168.1.10
RIP1 = 192 .168.1.12
RIP2 = 192 .168.1.13 DipName = ens160
. /etc/rc.d/init.d/functions
start () {
PID = `ipvsadm -Ln | grep ${VIP} | wc -l`
if [ $PID -gt 0 ];
then
echo "The LVS-DR Server is already running !"
else
#Set the Virtual IP Address
/sbin/ifconfig ${DipName} :10 $VIP broadcast $VIP netmask
255 .255.255.255 up
/sbin/route add -host $VIP dev ${DipName} :10
#Clear IPVS Table
/sbin/ipvsadm -C
#Set Lvs
/sbin/ipvsadm -At $VIP :80 -s rr
/sbin/ipvsadm -at $VIP :80 -r $RIP1 :80 -g
/sbin/ipvsadm -at $VIP :80 -r $RIP2 :80 -g
/bin/touch $LOCK
#Run Lvs
echo "starting LVS-DR Server is ok !"
fi
}
stop () {
#clear Lvs and vip
/sbin/ipvsadm -C
/sbin/route del -host $VIP dev ${DipName} :10
/sbin/ifconfig ${DipName} :10 down >/dev/null
rm -rf $LOCK
echo "stopping LVS-DR server is ok !"
}
status() {
if [ -e $LOCK ];
then
echo "The LVS-DR Server is already running !"
else
echo "The LVS-DR Server is not running !"
fi
}
case " $1 " in
start )
start
;;
stop )
stop
;;
restart )
stop
start
;;
status) status
;;
*)
echo "Usage: $1 {start|stop|restart|status}"
exit 1
esac
exit 0
设置开机自启

确认是否绑定

  测试

后端脚本

如果做了之前的操作,记得删除一下

编写脚本

#!/bin/sh
#
# Startup script handle the initialisation of LVS
# chkconfig: - 28 72
# description: Initialise the Linux Virtual Server for DR
#
### BEGIN INIT INFO
# Provides: ipvsadm
# Required-Start: $local_fs $network $named
# Required-Stop: $local_fs $remote_fs $network
# Short-Description: Initialise the Linux Virtual Server
# Description: The Linux Virtual Server is a highly scalable and highly
# available server built on a cluster of real servers, with the load
# balancer running on Linux.
# description: start LVS of DR-RIP
LOCK = /var/lock/ipvsadm.lock
VIP = 192 .168.95.10
. /etc/rc.d/init.d/functions
start () {
PID = `ifconfig | grep lo:10 | wc -l`
if [ $PID -ne 0 ];
then
echo "The LVS-DR-RIP Server is already running !"
else
/sbin/ifconfig lo:10 $VIP netmask 255 .255.255.255 broadcast $VIP up
/sbin/route add -host $VIP dev lo:10
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/eth0/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/eth0/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
/bin/touch $LOCK
echo "starting LVS-DR-RIP server is ok !"
fi
}
stop () {
/sbin/route del -host $VIP dev lo:10
/sbin/ifconfig lo:10 down >/dev/null
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/eth0/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/eth0/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
rm -rf $LOCK
echo "stopping LVS-DR-RIP server is ok !"
}
status() {
if [ -e $LOCK ];
then
echo "The LVS-DR-RIP Server is already running !"
else
echo "The LVS-DR-RIP Server is not running !"
fi
}
case " $1 " in
start )
start
;;
stop )
stop
;;
restart )
stop
start
;;
status)
status
;;
*)
echo "Usage: $1 {start|stop|restart|status}"
exit 1
esac
exit 0

 测试

arp防火墙设置

首先同样把之前的配置修改回去

下载arp

刚下载好的arp里没有任何配置
也可以使用 arptables 实现抑制 arp

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

STM32 RTC 实时时钟说明

目录 背景 RTC(实时时钟)和后备寄存器 32.768HZ 如何产生1S定时 RTC配置程序 第一次上电RTC配置 第1步、启用备用寄存器外设时钟和PWR外设时钟 第2步、使能RTC和备份寄存器访问 第3步、备份寄存器初始化 第4步、开启LSE 第5步、等待LSE启动后稳定状态 第6步、配置LSE为…

2024年12月电子学会青少年机器人技术等级考试(三级)理论综合真题

202412 青少年等级考试机器人理论真题三级 一、单选题 第 1 题 Arduino UNO/Nano主控板,程序模块如下,该模块运行后,引脚5输出的等效电压为0V,变量i对应的值是?( ) A:0 B&#xff1…

分治中的快速排序(前序遍历)与归并排序(后序遍历)详细对比分析

目录 1. 快速排序(前序遍历) 核心思想与步骤 关键特性 示例分析 2. 归并排序(后序遍历) 核心思想与步骤 关键特性 示例分析 3. 对比总结 4. 选择依据与优化策略 5. 实际应用场景 6. 核心差异图示 7. 总结 1. 快速排序…

DeepSeek 助力 Vue 开发:打造丝滑的进度条

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…

编译和链接【四】链接详解

文章目录 编译和链接【四】链接详解前言系列文章入口符号表和重定位表链接过程分段组装符号决议重定位 编译和链接【四】链接详解 前言 在我大一的时候, 我使用VC6.0对C语言程序进行编译链接和运行 , 然后我接触了VS, Qt creator等众多IDE&…

LeetCode每日精进:876.链表的中间结点

题目链接:876.链表的中间结点 题目描述: 给你单链表的头结点 head ,请你找出并返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 示例 1: 输入:head [1,2,3,4,5] 输出:[3,4,5…

数据结构——结构体位域、typedef类型重定义、宏、共用体union、枚举、虚拟内存划分

一、结构体位域 1.1 结构体位域的基础 结构体位域:把结构体字节大小扣到极致的一个类型,以bit单位 格式:struct 位域体名{数据类型 位域名:位域大小;数据类型 位域名:位域大小;...};解析:位域体名:可有可无&#xff…

CZML 格式详解,javascript加载导出CZML文件示例

示例地址:https://dajianshi.blog.csdn.net/article/details/145573994 CZML 格式详解 1. 什么是 CZML? CZML(Cesium Zipped Markup Language)是一种基于 JSON 的文件格式,用于描述地理空间数据和时间动态场景。它专…

SQL递归技巧

1.读样例 with recursive cet_dpt(id, parent_id, path, org_category, level,depart_name) as (select id ,parent_id,depart_name as path,org_category,1 as level,sd.depart_namefrom isolarerp.sys_depart sdwhere del_flag 0and sd.org_code A09B15union al…

django配置跨域

1、第一种 from django.views.decorators.csrf import csrf_exemptcsrf_exempt第二种 安装 pip install django-cors-headers在配置文件settings.py进入 INSTALLED_APPS [..."corsheaders", # 添加 ]MIDDLEWARE [corsheaders.middleware.CorsMiddleware, # 添加…

设置mysql的主从复制模式

mysql设置主从复制模式似乎很容易,关键在于1)主库启用二进制日志,2)从库将主库设为主库。另外,主从复制,复制些什么?从我现在获得的还很少的经验来看,复制的内容有表,用户…

蓝耘智算平台:开启企业级 DeepSeek 智能助手的搭建捷径

文章目录 一、深度解密 DeepSeek 技术矩阵1.1 模型架构创新1.2 核心能力全景 二、私有化部署:企业的明智之选2.1 企业级部署场景2.2 硬件选型策略 三、蓝耘平台:部署全流程大揭3.1 环境准备阶段Step 1:访问蓝耘智算云官网完成企业认证Step 2&…

Android原生的HighCPU使用率查杀机制

摘要 原生的HighCPU使用率查杀机制是基于读取/proc/pid/stat中的utime stime后,根据CPU使用率 (utime stime / totalTime)*100%进行实现,当检测后台进程的CPU使用率超过阈值时,执行查杀和统计到电池数据中。 细节点: 1. 原生根…

数据库安全、分布式数据库、反规范化等新技术(高软19)

系列文章目录 3.7数据库安全、分布式数据库、反规范化等新技术 前言 本节数据库安全、分布式数据库、反规范化等新技术相关概念与技术。 一、数据库 1.数据库安全 2.数据库备份 二、分布式数据库 1.数据库分布 2.数据仓库 3.数据仓库结构 4.商业智能(BI&#xf…

数据结构实现顺序表的尾插,尾删,按值查找/修改/删除,按下标查找/增加/删除

头文件&#xff1a;head.h #ifndef __HEAD_H__ #define __HEAD_H__#include <stdio.h> #include <string.h> #include <stdlib.h> #define MAXSIZE 20enum num {success,false-1};typedef int datatype;typedef struct {int len;datatype data[MAXSIZE]; }S…

新手自学:如何用gromacs对简单分子复合物进行伞形采样

1、建立体系: 1、将蛋白的pdb文件转化为gmx: gmx pdb2gmx -f 2BEG_model1_capped.pdb -ignh -ter -o complex.gro 这个网页可以实现将多肽序列转化为pdb: ProBuilder On-line 这个教程的蛋白2BFG包含两条链(chain A和B) 在生成的topol文件中,增加如下的内容,效果就…

2025 BabitMF 第一期开源有奖活动正式开启 !

为了促进开源社区的交流与成长&#xff0c;字节跳动开源的多媒体处理框架 BabitMF &#xff08;GitHub - BabitMF/bmf: Cross-platform, customizable multimedia/video processing framework. With strong GPU acceleration, heterogeneous design, multi-language support, e…

Ollama 自定义导入模型

文章目录 一、从 GGUF 导入1.1 CCUF 介绍1.2 导入方式 二、由模型直接导入2.1 模型下载2.2 使用 llama.cpp 进行转换&#xff08;1&#xff09;克隆 llama.cpp 库到本地&#xff0c;并安装相关库&#xff08;2&#xff09;环境验证&#xff08;3&#xff09;执行转换程序 2.3 使…

J6 X8B/X3C切换HDR各帧图像

1、OV手册上的切换命令 寄存器为Ox5074 各帧切换&#xff1a; 2、地平线control tool实现切换命令 默认HDR模式出图&#xff1a; HCG出图&#xff1a; LCG出图 SPD出图 VS出图

GESP5级语法知识(十一):高精度算法(一)

高精度加法&#xff1a; #include<iostream> #include<string> #include<algorithm> using namespace std; const int N501;//高精度数的最长长度 //c[]a[]b[]:高精度加法方案一&#xff1a;对应位相加&#xff0c;同时处理进位 void h_add_1(int a[],int b…