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

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

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

相关文章

基于进化式大语言模型的下一代漏洞挖掘范式:智能对抗与自适应攻防体系

摘要 本文提出了一种基于进化式大语言模型(Evolutionary LLM)的智能漏洞挖掘框架,突破了传统静态分析的局限,构建了具备对抗性思维的动态攻防体系。通过引入深度强化学习与多模态感知机制,实现了漏洞挖掘过程的自适应进化,在RCE、SQLi、XXE等关键漏洞类型的检测中达到97…

java项目之基于SSM会议管理系统的设计与实现源码(ssm+mysql)

项目简介 基于SSM会议管理系统的设计与实现实现了以下功能: 基于SSM会议管理系统的设计与实现的主要使用者分为:管理员登录后修改个人的密码。用户管理中,对公司内的用户进行管理,包括会议管理员和员工,管理部门信息…

Linux第106步_Linux内核RTC驱动实验

1、了解rtc_device结构体 1)、打开“include/linux/rtc.h” rtc_class_ops是需要用户根据所使用的RTC设备编写的,其结构体如下: struct rtc_class_ops { int (*ioctl)(struct device *, unsigned int, unsigned long);/*函数指针ioctl*/ int (*read_time)(struct device *,…

java项目之基于推荐算法的图书购物网站源码(ssm+mybatis+mysql)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的基于推荐算法的图书购物网站项目。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 基于推荐算法的…

【Antv G2 5.x】饼图添加点击事件,获取当前坐标数据

// 监听 tooltip:show 事件this.chart.on(tooltip:show, (event) => {this.currentShowTooltipName = event.data.items[0].name})// 监听绘图区plot的点击事件this.chart.on(interval:click, ev => {this.$emit(chartClick, this.currentShowTooltipName);})// 监听绘图…

称呼计算器:智能科技,简化您的计算生活

一款手机应用程序,安卓设备上使用。这款计算器应用以其简洁的界面、实用的功能和良好的用户体验而受到用户的喜爱。 计算器的主要特点包括: 基本计算功能:支持加、减、乘、除等基本运算。 科学计算器模式:提供更高级的数学运算功…

STM32 裸机 C编程 vs micropython编程 vs linux python

以led点亮为例。 STM32 裸机 C编程需要设置时钟,管脚。 static void MX_GPIO_Init(void) {GPIO_InitTypeDef GPIO_InitStruct {0};// GPIO端口时钟使能__HAL_RCC_GPIOA_CLK_ENABLE();// 配置PA5为推挽输出模式GPIO_InitStruct.Pin GPIO_PIN_5;GPIO_InitStruct.M…

Spring boot(maven) - Mybatis 超级入门版

前言: 通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。实践、认识、再实践、再认识,这种形式,循环往…

清华大学新闻与传播学院沈阳团队出品的《DeepSeek:从入门到精通》104页PDF

前言 本机运行DeepSeek R1大模型文章如下: Windows电脑本地部署运行DeepSeek R1大模型(基于Ollama和Chatbox)【保姆级万字教程】在Windows计算机部署DeepSeek大模型,给在实验室无外网的同事们用(基于Ollama和OpenWebUI…

kbengine服务器和 数据库 系统路径配置

一、服务器 系统路径配置 二、mysql5.7.44 系统路径配置 mysql 压缩包安装方式 解压压缩包,将解压路径加入 系统环境。 或者 系统变量新增 变量名:MYSQL_HOME 变量值:C:\MyPrograms\mysql-8.0.12-winx64修改系统变量的 path 变量&#xff…

性格测评小程序04题库管理

目录 1 创建数据源1.1 题库表1.2 选项表 2 搭建管理后台2.1 搭建题库功能2.2 搭建选项功能2.3 题库和选项联动 3 最终效果总结 我们现在性格测评的算法是通过40个题目来测评用户属于哪一个分类,为此后台需要有可以设置题目和选项的功能,本篇我们介绍一下…

Navicat导入海量Excel数据到数据库(简易介绍)

目录 前言正文 前言 此处主要作为科普帖进行记录 原先Java处理海量数据的导入时,由于接口超时,数据处理不过来,后续转为Navicat Navicat 是一款功能强大的数据库管理工具,支持多种数据库系统(如 MySQL、PostgreSQL、…

sql难点

一、 假设你有一个查询&#xff0c;需要根据 id 是否为 null 来动态生成 SQL 条件&#xff1a; xml复制 <select id"getResources" resultType"Resource">SELECT * FROM resources<where><if test"id ! null">and id <!…

2024年12月中国电子学会青少年软件编程(Python)等级考试试卷(六级)

青少年软件编程&#xff08;Python&#xff09;等级考试试卷&#xff08;六级&#xff09; 一、单选题(共25题&#xff0c;共50分) 1.下面代码的输出结果正确的是?(B) import json json_str [ "Alice", "girl", 17,"New York"] data json.loa…

Qwen2.5-Max:国内新一代 MoE 大模型的崛起!

通义千问 DeepSeek 才火没多久&#xff0c;国内又出现了一款可以比肩 DeepSeek 的 MoE 大模型——Qwen2.5-Max。这款大模型使用了超过 20 万亿 token 的预训练数据及精心设计的后训练方案进行训练&#xff0c;无疑开启了 AI 的新时代。 Qwen2.5-Max Qwen2.5-Max Qwen&#xff0…

把 DeepSeek1.5b 部署在显卡小于4G的电脑上

这里写自定义目录标题 介绍准备安装 Ollama查看CUDA需要版本安装CudaToolkit检查Cuda是否装好二、设置Ollama环境变量三、验证是否跑在GPU上ollama如何导入本地下载的模型安装及配置docker安装open-webui启动open-webui开始对话介绍 Deepseek1.5b能够运行在只用cpu和gpu内存小…

FPGA 28 ,基于 Vivado Verilog 的呼吸灯效果设计与实现( 使用 Vivado Verilog 实现呼吸灯效果 )

目录 前言 一. 设计流程 1.1 需求分析 1.2 方案设计 1.3 PWM解析 二. 实现流程 2.1 确定时间单位和精度 2.2 定义参数和寄存器 2.3 实现计数器逻辑 2.4 控制 LED 状态 三. 整体流程 3.1 全部代码 3.2 代码逻辑 1. 参数定义 2. 分级计数 3. 状态切换 4. LED 输…

日常知识点之面试后反思裸写string类

1&#xff1a;实现一个字符串类。 简单汇总 最简单的方案&#xff0c;使用一个字符串指针&#xff0c;以及实际字符串长度即可。 参考stl的实现&#xff0c;为了提升string的性能&#xff0c;实际上单纯的字符串指针和实际长度是不够了&#xff0c;如上&#xff0c;有优化方案…

用AI绘制CAD气温曲线图

此文章视频讲解地址 https://www.bilibili.com/video/BV1JtKjenEhF 需求 根据气温的JSON数据&#xff0c;用AI自动生成CAD格式的气温曲线DWG图 数据准备 用deepseek获取了北京市最近一个月的气温json数据 AI对话 首先进入唯杰地图云端管理平台 选择与唯杰地图AI对话 需求描…

Web应用项目开发 ——Spring Boot邮件发送

一.邮件发送介绍 邮件发送是一个非常常见的功能&#xff0c;注册时的身份认证、重要通知发送等都会用到邮件发送。在现代的Web应用程序中&#xff0c;邮件发送功能是非常常见且重要的一部分&#xff0c;Spring Boot框架提供了简单且强大的方式来实现邮件发送功能。Spring中提供…