LVS负载均衡群集部署之——DR模式的介绍及搭建步骤

  • 一、LVS-DR集群介绍
  • 1.1 LVS-DR 工作原理
  • 1.2 数据包流向分析
  • 1.3 LVS-DR 模式的特点
  • 1.4 LVS-DR中的ARP问题
  • 1.4.1 问题一
  • 1.4.2 问题二
  • 二、构建LVS-DR集群
  • 2.1 构建LVS-DR集群的步骤(理论)
  • 1.配置负载调度器(192.168.80.30)
  • (1)配置虚拟 IP 地址(VIP:192.168.80.188)
  • (2)调整 proc 响应参数
  • (3)配置负载分配策略
  • 2.部署共享存储(NFS服务器:192.168.80.40)
  • 3.配置节点服务器(192.168.80.10、192.168.80.20)
  • (1)配置虚拟 IP 地址(VIP:192.168.80.188)
  • (2)调整 proc 响应参数
  • 4.测试 LVS 群集
  • 2.2 构建LVS-DR集群操作的具体步骤(实操)
  • 1.web1配置如下

一、LVS-DR集群介绍

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

1.1 LVS-DR 工作原理

LVS-DR 模式,Director Server 作为群集的访问入口,不作为网关使用,节点 Director Server 与 Real Server 需要在同一个网络中,返回给客户端的数据不需要经过 Director Server。为了响应对整个群集的访问,Director Server 与 Real Server 都需要配置 VIP 地址。

工作原理如下图所示:

1.2 数据包流向分析

客户端发送请求到 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 直接将响应报文传送到客户端。

1.3 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 地址。

1.4 LVS-DR中RP问题

1.4.1 问题一

在LVS-DR负载均衡集群中,负载均衡器与节点服务器都要配置相同的VIP地址,在局域网中具有相同的IP地址。势必会造成各服务器ARP通信的紊乱

当ARP广播发送到LVS-DR集群时,因为负载均衡器和节点服务器都是连接到相同的网络上,它们都会接收到ARP广播
只有前端的负载均衡器进行响应,其他节点服务器不应该响应ARP广播
解决方法:
对节点服务器进行处理,使其不响应针对VIP的ARP请求

使用虚接口lo:0承载VIP地址
设置内核参数arp_ ignore=1: 系统只响应目的IP为本地IP的ARP请求

回到顶部

1.4.2 问题二

问题说明:RealServer返回报文(源IP是VIP)经路由器转发,重新封装报文时,需要先获取路由器的MAC地址,发送ARP请求时,Linux默认使用IP包的源IP地址(即VIP)作为ARP请求包中的源IP地址,而不使用发送接口的IP地址,路由器收到ARP请求后,将更新ARP表项,原有的VIP对应Director的MAC地址会被更新为VIP对应RealServer的MAC地址。

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

对节点服务器进行处理,设置内核参数arp_announce=2:系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址

二、构建LVS-DR集群

2.1 构建LVS-DR集群的步骤(理论)

实验环境准备:
DR 服务器:192.168.80.30
Web 服务器1:192.168.80.10
Web 服务器2:192.168.80.20
NFS共享服务器:192.168.80.40
vip:192.168.80.188
客户端:192.168.80.200

1.配置负载调度器(192.168.80.30)

systemctl stop firewalld.service
setenforce 0
modprobe ip_vs
cat /proc/net/ip_vs
yum -y install ipvsadm


(1)配置虚拟 IP 地址(VIP:192.168.80.188)

cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0 #若隧道模式,复制为ifcfg-tunl0(小写字母l)
vim ifcfg-ens33:0


DEVICE=ens33:0
ONBOOT=yes #开机自动激活
IPADDR=192.168.80.188
NETMASK=255.255.255.255


ifup ens33:0
ifconfig ens33:0
route add -host 192.168.80.188 dev ens33:0


(2)调整 proc 响应参数

由于 LVS 负载调度器和各节点需要共用 VIP 地址,应该关闭Linux 内核的重定向参数响应。

vim /etc/sysctl.conf

net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

sysctl -p #刷新设置

(3)配置负载分配策略

ipvsadm-save > /etc/sysconfig/ipvsadm                                   #保存策略
systemctl start ipvsadm

ipvsadm -C
ipvsadm -A -t 192.168.98.70:80 -s rr                                      #添加虚拟服务器
ipvsadm -a -t 192.168.98.70:80 -r 192.168.80.80:80 -g          #若隧道模式,-g替换为-i
ipvsadm -a -t 192.168.98.70:80 -r 192.168.80.90:80 -g          #添加真实服务器
ipvsadm                                                                                     #激活

ipvsadm -ln                                                                                #查看节点状态,Route代表 DR模式


2.部署共享存储(NFS服务器:192.168.80.40)

systemctl stop firewalld.service
setenforce 0

yum -y install nfs-utils rpcbind
mkdir /opt/kgc /opt/benet
chmod 777 /opt/kgc /opt/benet

vim /etc/exports


/opt/kgc 192.168.80.0/24(rw,sync)
/opt/benet 192.168.80.0/24(rw,sync)


systemctl start nfs.service
systemctl start rpcbind.service


3.配置节点服务器(192.168.80.10、192.168.80.20)

systemctl stop firewalld.service
setenforce 0


(1)配置虚拟 IP 地址(VIP:192.168.80.188)

###此地址仅用作发送Web响应数据包的源地址,并不需要监听客户机的访问请求(改由调度器监听并分发)。因此使用虚接口lo:0来承载VIP地址,并为本机添加一条路由记录,将访问VIP的数据限制在本地,以避免通信紊乱。

cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-lo:0
vim ifcfg-lo:0


DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.80.188 #和VIP保持一致
NETMASK=255.255.255.255 #注意:子网掩码必须全为 1


ifup lo:0
ifconfig lo:0
route add -host 192.168.80.188 dev lo:0 #添加VIP本地访问路由,将访问VIP的数据限制在本地,以避免通信紊乱

vim /etc/rc.local


/sbin/route add -host 192.168.80.188 dev lo:0


(2)调整 proc 响应参数

vim /etc/sysctl.conf


......
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


或者 临时添加

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/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

sysctl -p

yum -y install nfs-utils rpcbind httpd
systemctl start rpcbind
systemctl start httpd


--192.168.80.10---
mount.nfs 192.168.80.40:/opt/kgc /var/www/html
echo 'this is kgc web!' > /var/www/html/index.html

--192.168.80.20---
mount.nfs 192.168.80.40:/opt/benet /var/www/html
echo 'this is benet web!' > /var/www/html/index.html


4.测试 LVS 群集

在客户端使用浏览器访问 http://192.168.80.188/,默认网关指向192.168.80.188

2.2 构建LVS-DR集群操作的具体步骤(实操)

环境搭建工作:

1.web1配置如下

6.关闭所有服务器的防护墙和selinux

第一步:配置负载调度器(192.168.98.70)

1)加载模块并安装管理工具

2)配置虚拟ip

3)开启虚拟网卡并添加主机路由

4)关闭Linux 内核的重定向参数响应

5)刷新设置

 

6)配置负载分配策略

第二步:部署共享存储(NFS服务器:192.168.80.40)
1)安装nfs-utils rpcbind程序(yum源提前配置好)并配置发布目录和策略

2)发布共享

3)开启服务并设置开机自启动

第三步:配置节点服务器(192.168.80.10和192.168.80.20)
1)web1服务器配置如下:

2)开启接口并为本机添加路由记录

3)调整 proc 响应参数

4)刷新配置

5)安装nfs-utils rpcbind httpd

6)开启服务并查看状态确认

7)挂载共享目录并创建本机的html文件

8)在浏览器中输入本机ip进行确认

9)web2服务器配置步骤和web1一致

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

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

相关文章

5分钟教你用AI把老照片动起来,别再去花49块9的冤枉钱了

文章目录 需要的工具 最近,AI视频在各大平台上,又火了。 只是火的形式,变成了将老照片动起来,打情感牌,或者做很多经典电视剧的再整活。 直接把可灵的生成时间,从以前的4分钟,生生的干成了20分钟…

鸿蒙应用笔记

安装就跳过了,一直点点就可以了 配置跳过,就自动下了点东西。 鸿蒙那个下载要12g个内存,大的有点吓人。 里面跟idea没区别 模拟器或者真机运行 真机要鸿蒙4.0,就可以实机调试 直接在手机里面跑,这个牛逼&#xf…

国标GB/T 28181详解:国标GBT28181-2022 SIP服务器发起广播的命令流程

目录 一、定义 二、作用 1、实现信息的集中管理和分发 (1)信息集中 (2)信息分发 2、提高信息传输的可靠性和效率 (1)可靠性 (2)提高效率 3、支持多种设备和系统的互通 &am…

mongdb学习与使用

1. 基础概念 MongoDB简介: MongoDB是一个基于文档的NoSQL数据库,具有高性能、高可用性和易扩展性。数据存储在类似JSON的BSON格式中。 基本术语: Database(数据库): 集合的容器。Collection(集合…

国产强大免费WAF, 社区版雷池动态防护介绍

雷池WAF,基于智能语义分析的下一代 Web 应用防火墙 使用情况 我司于2023年4月23日对雷池进行测试,测试一个月后,于2023年5月24日对雷池进行正式切换,此时版本为1.5.1。 里程碑纪念 后续一直跟随雷池进行版本升级,当前…

QT_GUI

1、QT安装 一个跨平台的应用程序和用户界面框架,用于开发图形用户界面(GUI)应用程序以及命令行工具。QT有商业版额免费开源版,一般使用免费开源版即可,下面安装的是QT5,因为出来较早,使用较多&…

Python特征工程 — 1.4 特征归一化方法详解

目录 1 Min-Max归一化 方法1:自定义的Min-Max归一化封装函数 方法2: scikit-learn库中的MinMaxScaler 2 Z-score归一化 方法1:自定义的Z-score归一化封装函数 方法2: scikit-learn库中的StandardScaler 3 最大值归一化 4 L…

考研生活day1--王道课后习题2.2.1、2.2.2、2.2.3

2.2.1 题目描述: 解题思路: 这是最基础的操作,思路大家应该都有,缺少的应该是如何下笔,很多同学都是有思路但是不知道如何下笔,这时候看思路的意义不大,可以直接看答案怎么写,最好…

Java项目:基于SSM框架实现的游戏攻略网站系统分前后台【ssm+B/S架构+源码+数据库+毕业论文+任务书】

一、项目简介 本项目是一套基于SSM框架实现的游戏攻略网站系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单、功能…

redhat7.x 升级openssh至openssh-9.8p1

1.环境准备: OS系统:redhat 7.4 2.备份配置文件: cp -rf /etc/ssh /etc/ssh.bak cp -rf /usr/bin/openssl /usr/bin/openssl.bak cp -rf /etc/pam.d /etc/pam.d.bak cp -rf /usr/lib/systemd/system /usr/lib/systemd/system.bak 3.安装…

UB9A0全系统全频高精度板卡性能指标

UB9A0 板卡是基于和芯星通自主研发的新一代射频基带及高精度算法一体化 GNSS SoC 芯片—Nebulas Ⅳ开发的全系统全频点高精 OEM 板卡 ,支持 BDS,GPS, GLONASS,Galileo,QZSS,NavIC,SBAS&#xff…

MySQL环境搭配

下载版本37滴 下载第二个 之后进行安装 进入安装界面 next 选择默认的 进行下一步 安装成功后,进行一系列配置,成功界面如下: 配置 MySQL8.0 环境变量 如果不配置 MySQL 环境变量,就不能在命令行直接输入 MySQL 登录命令。 步…

强烈推荐!12 组超惊艳的 Midjourney 风格提示词!

前言 Midjourney 的 --sref random 随机风格功能推出之后,出现了很多对不同代码生成效果的探索。今天就为大家推荐 12 组我觉得非常惊艳的风格代码,将它们添加在提示词中,不需要写复杂的关键词就能得到高质量的指定风格,并且效果…

CUDA编译配置中来自 CUDA 12.1.targets 的MSB3721错误和核函数调用语法错误‘<’解决及可用的代码示例框架

今天开始整cuda编程处理图像,好久没玩cuda,又从小白开始。情况不妙,第一个工程坑不少,记录一下如下2个重要的错误: (1)来自 CUDA 12.1.targets 的MSB3721错误 错误 命令““C:\Program Files\N…

Scrapy框架的基本使用教程

1、创建scrapy项目 首先在自己的跟目录文件下执行命令: PS D:\BCprogram\python_pro\bigdata> scrapy startproject theridion_grallatorscrapy startproject 项目名 具体执行操作如下:1、创建项目目录:Scrapy会在当前工作目录下创建一…

Git 操作总结

1. 安装、Git 环境配置 1.1 安装 Git 官方版本可以在 Git 官方网站下载:打开 https://git-scm.com/download/win,选择相应版本即可。 Git 安装完成后,可以在开始菜单中看到 Git 的三个启动图标(Git Bash、Git CMD、Git GUI&…

QT5.12环境搭建与源码编译

一、概述 QT版本:QT5.12.10 Qt网址:http://download.qt.io/archive/qt/ 编译平台 ubuntu18.04 二、安装交叉编译工具链 1、获取交叉编译工具链 一般如果是编译系统如果有对应的gcc 就是用这个就可以了 比如rk3128 lin…

字符串相似度算法完全指南:编辑、令牌与序列三类算法的全面解析与深入分析

在自然语言处理领域,人们经常需要比较字符串,这些字符串可能是单词、句子、段落甚至是整个文档。如何快速判断两个单词或句子是否相似,或者相似度是好还是差。这类似于我们使用手机打错一个词,但手机会建议正确的词来修正它&#…

如何为老化的汽车铅酸电池充电

一项小研究表明,汽车铅酸电池不同于深循环或固定电池。汽车电池旨在限度地提高启动电流容量,并且对深度放电或浮充(也称为第 3 阶段充电循环)反应不佳。起动电池的极板结构使表面积化,并且电解液比重 (SG) 高于其他电池,以提供高启…

C# 实现位比较操作

1、目标 对两个字节进行比较,统计变化位数、一位发生变化的位数、二位发生变化的位数、多位发生变化的位数。 2、代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Lin…