LVS-DR模式以及其中ARP问题

目录

LVS_DR

LVS_DR数据包流向分析

LVS-DR中ARP问题

问题一

问题二

解决ARP的两个问题的设置方法

LVS-DR特点

LVS-DR优缺点

优点

缺点

LVS-DR集群构建

1.配置负载调度器

2.部署共享存储

3.配置节点服务器

4.测试 LVS 群集


LVS_DR

LVS_DR数据包流向分析

客户端向目标VIP发送请求,负载均衡器接收
负载均衡器根据算法选择节点服务器,不修改也不封装IP报文,而是将数据的目标MAC地址改为节点服务器的MAC地址,然后在局域网上发送
节点服务器收到这个帧进行解封装,发现目标IP后与本机匹配(节点服务器事先绑定了VIP)后,处理这个报文,随后重新封装报文发送到局域网
客户端收到报文后,客户端认为得到正常服务,而不会知道是哪一台服务器处理的

LVS-DR中ARP问题

问题一

当ARP广播发送到LVS-DR集群时,因为负载均衡器和节点服务器都是连接到相同的网络上,它们都会接收到ARP广播,在局域网中具有相同的IP地址,势必会造成各服务器ARP通信的紊乱,

对节点服务器进行处理,使其不响应针对VIP的ARP请求,会不对本地物理网卡的arp请求进行响应
1.使用虚接口lo:0承载VIP地址
2.设置内核参数arp_ignore=1:系统只响应目的IP为本地IP的ARP请求

问题二

网关路由器收到的的源IP地址为VIP的ARP请求的报文后又更新ARP缓存表,导致外网再发送请求时,数据包到达不了调度器

设置内核参数arp_announce = 2

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

解决ARP的两个问题的设置方法

修改/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

LVS-DR特点

(1) 负载均衡器和节点服务器必须在同一个物理网络中
(2) 节点服务器可以使用私有地址,也可以使用公网地址。如果使用公网地址,可以通过互联网对 RIP 进行直接访问。
(3) 负载均衡器作为群集的访问入口,但不作为网关使用。
(4) 所有的请求报文经由负载均衡器,但回复响应报文不能经过 负载均衡器。
(5)节点服务器的网关不允许指向负载均衡器IP,即节点服务器发送的数据包不允许经过 负载均衡器。
(6) 节点服务器上的 lo 接口配置 VIP 的 IP 地址。

LVS-DR优缺点

优点

负载均衡器只负责将请求包分给物理服务武器,物理服务器将应答包直接发送给用户,所以负载均衡器能处理巨大的请求流量,一台负载均衡能为超过100台物理服务器服务,负载均衡器不再是系统的瓶颈。使用LVS-DR模式,如果你的负载均衡器拥有100M全双工网卡的话,使用LVS能达到1G的吞吐量甚至更高

缺点

所有调度器和节点服务器在同一个广播域,不支持异地容灾

LVS-DR集群构建

LVS-DR 服务器:192.168.233.110    NFS服务器:192.168.233.100 
Web 服务器1:192.168.233.60       Web 服务器2:192.168.233.70                                          vip:192.168.10.111
    

1.配置负载调度器

192.168.233.110   

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

(1)配置虚拟 IP 地址

VIP:192.168.233.111 

cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0                #若隧道模式,复制为ifcfg-tunl0
vim ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.233.111
NETMASK=255.255.255.255ifup ens33:0
ifconfig ens33:0

(2)调整 proc 响应参数

#由于 LVS 负载调度器和各节点需要共用 VIP 地址,需要关闭 icmp 的重定向,不充当路由器。
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 = 0sysctl -p

(3)配置负载分配策略

ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadmipvsadm -C
ipvsadm -A -t 192.168.233.111:80 -s rr
ipvsadm -a -t 192.168.233.111:80 -r 192.168.233.60:80 -g            #若隧道模式,-g替换为-i
ipvsadm -a -t 192.168.233.111:80 -r 192.168.233.70:80 -g
ipvsadmipvsadm -ln                    #查看节点状态,Route代表 DR模式


2.部署共享存储

NFS服务器:192.168.233.100

systemctl stop firewalld.service
setenforce 0yum -y install nfs-utils rpcbind
mkdir /opt/kgc /opt/benet
chmod 777 /opt/kgc /opt/benetvim /etc/exports
/usr/share *(ro,sync)
/opt/kgc 192.168.233.0/24(rw,sync)
/opt/benet 192.168.233.0/24(rw,sync)systemctl start nfs.service
systemctl start rpcbind.service

3.配置节点服务器

92.168.233.60、192.168.233.70  

systemctl stop firewalld.service
setenforce 0

(1)配置虚拟 IP 地址

VIP:192.168.233.110

#此地址仅用作发送 Web响应数据包的源地址,并不需要监听客户机的访问请求(改由调度器监听并分发)。因此使用虚接口 lo∶0 来承载 VIP 地址,并为本机添加一条路由记录,将访问 VIP 的数据限制在本地,以避免通信紊乱。
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0        
vim ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.233.110
NETMASK=255.255.255.255                        #注意:子网掩码必须全为 1ifup lo:0
ifconfig lo:0
route add -host 192.168.233.110 dev lo:0vim /etc/rc.local
/sbin/route add -host 192.168.233.110 dev lo:0chmod +x /etc/rc.d/rc.local

(2)调整内核的 ARP 响应参数以阻止更新 VIP 的 MAC 地址,避免发生冲突

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 = 2sysctl -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_announcesysctl -pyum -y install nfs-utils rpcbind httpd
systemctl start rpcbind
systemctl start httpd

--192.168.233.60---

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

--192.168.233.70---

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

4.测试 LVS 群集

在客户端使用浏览器访问 http://192.168.233.111/

 

 

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

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

相关文章

JVM基础了解

JVM 是java虚拟机。 作用:运行并管理java源码文件锁生成的Class文件;在不同的操作系统上安装不同的JVM,从而实现了跨平台的保证。一般在安装完JDK或者JRE之后,其中就已经内置了JVM,只需要将Class文件交给JVM即可 写好的…

爬虫工作中代理失效了怎么处理?

Hey!亲爱的爬虫小伙伴们,是不是经常在爬虫的工作中遇到代理IP失效的问题?别着急,今天我来分享一些应对代理失效的妙招!这些方法简单易行,让你爬虫顺利进行. 一、为什么代理会失效? 在爬虫过程…

vue3+ts+vite项目页面初始化loading加载效果

简介 一分钟实现 vue-pure-admin 同款项目加载时的 loading 效果 一、先看效果 1.1 静态效果 1.2 动态效果 二、上代码 核心代码在body里面&#xff0c;代码中已标明。找到你项目的 index.html &#xff0c;复制粘贴进去即可 <!DOCTYPE html> <html lang"en…

【100天精通python】Day43:python网络爬虫开发_爬虫基础(urlib库、Beautiful Soup库、使用代理+实战代码)

目录 1 urlib 库 2 Beautiful Soup库 3 使用代理 3.1 代理种类 HTTP、HTTPS 和 SOCKS5 3.2 使用 urllib 和 requests 库使用代理 3.3 案例&#xff1a;自建代理池 4 实战 提取视频信息并进行分析 1 urlib 库 urllib 是 Python 内置的标准库&#xff0c;用于处理URL、发送…

每天一道leetcode:1306. 跳跃游戏 III(图论中等广度优先遍历)

今日份题目&#xff1a; 这里有一个非负整数数组 arr&#xff0c;你最开始位于该数组的起始下标 start 处。当你位于下标 i 处时&#xff0c;你可以跳到 i arr[i] 或者 i - arr[i]。 请你判断自己是否能够跳到对应元素值为 0 的 **任一** 下标处。 注意&#xff0c;不管是什…

spring依赖注入详解(上)

一、Bean销毁的过程 如果bean销毁时会执行的场景 1、设置DestroyMethodName为(inferred) // 先把DestroyMethodName设置为(inferred) Component public class TestBeanPostProcessor implements MergedBeanDefinitionPostProcessor {Overridepublic void postProcessMergedBe…

spring boot集成jasypt 并 实现自定义加解密

一. 技术需求 由于项目中的配置文件 配置的地方过多&#xff0c;现将配置文件统一放到nacos上集中管理 且密码使用加密的方式放在配置文件中 项目中组件使用的版本环境如下 spring cloud 2021.0.5 spring cloud alibaba 2021.0.5.0 spring boot 2.6.13 二. 技术实现 配置文…

68个Python内置函数,你不会不知道吧?

内置函数就是Python给你提供的&#xff0c;拿来直接用的函数&#xff0c;比如print.&#xff0c;input等。 截止到python版本3.6.2 &#xff0c;python一共提供了68个内置函数&#xff0c;具体如下&#x1f447; abs() dict() help() min() …

ARM开发(cortex-A7核,UART总线实验)

目标&#xff1a;键盘输入一个字符a,串口工具显示b&#xff1b; 键盘输入一个字符串"nihao",串口工具显示"nihao"&#xff1b; ---.h头文件--- #ifndef __UART4_H__ #define __UART4_H__#include "stm32mp1xx_rcc.h" #include "stm32mp1x…

根据Dockerfile创建容器案例讲解

-f为dokerfile的路径&#xff0c; -t为新镜像的名称及版本。 后面这个点是寻址路径。

阿里面试官常问的TCP和UDP,你真的弄懂了吗?

♥ 前 言 作为软件测试&#xff0c;大家都知道一些常用的网络协议是我们必须要了解和掌握的&#xff0c;面试的时候面试官也非常喜欢问一些协议相关的问题&#xff0c;其中有两个协议因为非常基础&#xff0c;出现的频率非常之高&#xff0c;分别是 ”TCP 协议“ 和 ”UDP 协…

漏洞指北-VulFocus靶场专栏-中级03

漏洞指北-VulFocus靶场专栏-初级03 中级009 &#x1f338;gxlcms-cve_2018_14685&#x1f338;step1&#xff1a;安装系统 密码rootstep2 进入后台页面 账号密码&#xff1a;admin amdin888step3 查看详细 有phpinfo() 中级010 &#x1f338;dedecms-cnvd_2018_01221&#x1f3…

2023国赛数学建模C题思路模型代码 高教社杯

本次比赛我们将会全程更新思路模型及代码&#xff0c;大家查看文末名片获取 之前国赛相关的资料和助攻可以查看 2022数学建模国赛C题思路分析_2022国赛c题matlab_UST数模社_的博客-CSDN博客 2022国赛数学建模A题B题C题D题资料思路汇总 高教社杯_2022国赛c题matlab_UST数模社…

TypeError: Object of type int64 is not JSON serializable

TypeError: Object of type int64 is not JSON serializable 这个错误通常意味着你试图将一个Python对象转换为JSON&#xff0c;但是这个对象不能被序列化为JSON。在你的情况下&#xff0c;错误发生在尝试将一个int64类型的对象转换为JSON时。 在Pandas中&#xff0c;当你使用…

《游戏编程模式》学习笔记(五)原型模式 Prototype Pattern

原型的定义 用原型实例指定创建对象的种类&#xff0c;并且通过拷贝这些原型创建新的对象。 举个例子 假设我现在要做一款游戏&#xff0c;这个游戏里有许多不同种类的怪物&#xff0c;鬼魂&#xff0c;恶魔和巫师。这些怪物通过“生产者”进入这片区域&#xff0c;每种敌人…

element文本域禁止手动拉伸、两种方式、textarea

文章目录 style方式element自带的禁止拉伸方法建议 style方式 html <el-inputv-model"content":rows"3"class"r_n"type"textarea"maxlength"40"placeholder""style"height: 100%;" />css style…

等保测评--安全计算环境--测评方法

安全子类--身份鉴别 a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换; 一、测评对象 终端和服务器等设备中的操作系统(包括宿主机和虚拟机操作系统) 、网络设备(包括虚拟网络设备)、安全设备(包括虚拟安全设备)、移动终端…

Qt多线程开启定时任务

项目场景&#xff1a; 多线程执行一些耗时操作&#xff0c;并且需要固定时间去轮询。 代码&#xff1a; #include <QThread> #include <QTimer> #include <QtCore/QMutex>class pollingManager : public QObject {Q_OBJECTpublic:static pollingManager*get…

Linux 桌面版关闭GUI桌面环境

持久打开和关闭 通过CtrlAltF1-F6快捷键进入命令行界面 执行以下命令&#xff0c;持久关闭Ubuntu桌面版的GUI环境&#xff1a; sudo systemctl set-default multi-user.target执行以下命令&#xff0c;持久开启Ubuntu桌面版的GUI环境 通过CtrlAltF7快捷键进入GUI界面 sudo s…

Android Studio 之 Android 中使用 HanLP 进行句子段落的分词处理(包括词的属性处理)的简单整理

Android Studio 之 Android 中使用 HanLP 进行句子段落的分词处理&#xff08;包括词的属性处理&#xff09;的简单整理 目录 Android Studio 之 Android 中使用 HanLP 进行句子段落的分词处理&#xff08;包括词的属性处理&#xff09;的简单整理 一、简单介绍 二、实现原理…