LVS负载均衡群集----DR部署

news2024/11/24 19:13:00

文章目录

  • 一、数据包流向分析
  • 二、DR模式的特点
  • 三、LVS-DR中的ARP问题
  • 四、LVS单网段DR模式部署
    • 第一步配置负载调度器
    • 第二步设置两台节点服务器
    • 第三步设置DR 服务器
    • 第四步在本地查看调度服务器

一、数据包流向分析

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

在这里插入图片描述

二、DR模式的特点

(1)Director Server(调度器) 和 Real Server(节点服务器) 必须在同一个物理网络中。

(2)Real Server可以使用私有地址,也可以使用公网地址。如果使用公网地址,可以通过互联网对RIP进行直接访问。

(3)Director Server作为群集的访问入口,但不作为网关使用。

(4)所有的请求报文经由Director Server, 但回复响应报文不能经过Director Server。

(5) Real Server 的网关不允许指向Director Server IP, 即Real Server发送的数据包不允许经过Director Server。(RS的网关地址只能指定真实的路由器网关)

(6) Real Server 上的 lo 接口配置VIP的IP地址。

在这里插入图片描述

三、LVS-DR中的ARP问题

1、在局域网中用相同的vip会导致ARP通信的紊乱

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

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

解决方法:

  • 使用虚接口lo:0承载vip地址
  • 设置内核参数 arp_ ignore=1:系统只响应目的IP为本地IP(物理网卡的地址,而不是lo网卡的虚接口地址)的ARP请求。

2、返回报文时源地址使用VIP,导致网关设备的ARP缓存表紊乱

问题原因:
RealServer返回报文(源IP是VIP)经路由器转发,重新封装报文时,需要先获取路由器的MAC地址。
发送ARP请求时,Linux默认使用IP包的源IP地址(即VIP)作为ARP请求包中的源IP地址,而不使用发送接口的IP地址。
路由器收到ARP请求后,将更新ARP表项。原有的VIP对应Director的MAC地址,会被更新为VIP对应的Real Server的MAC地址。导致网关设备的ARP缓存表紊乱。
路由器根据ARP表项,会将新来的请求报文转发给Real Server,导致Director的VIP失效。
解决方法:
对节点服务器进行处理,设置内核参数arp_announce=2:系统不使用IP数据包的源地址来设置ARP请求的源地址,而选择发送接口(物理网卡)的IP地址。

Linux部署NAT模式的应对方案
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 //刷新配置,读取修改后的配置

#arp_ignore=1 :使本机系统只响应目的IP为本地物理网卡IP的ARP请求。
#arp_announce=2:使本机系统不使用即将返回的IP数据包的源地址来作为ARP请求报文的源地址,而采用发送接口(物理网卡)的IP作为ARP请求报文源地址。

在这里插入图片描述

四、LVS单网段DR模式部署

第一步配置负载调度器

DR 服务器:192.168.81.132
Web 服务器1:192.168.81.130
Web 服务器2:192.168.81.131
vip:192.168.80.188
客户端:192.168.80.200
共享服务器:192.168.81.129

#关闭防火墙
[root@localhost ~]# systemctl disable --now firewalld
[root@localhost ~]# setenforce 0

#下载rpcbind和nfs_utils服务
[root@localhost ~]# yum -y install rpcbind nfs_utils

#创建需要分享的文件
[root@localhost ~]# mkdir -p /data/test1
[root@localhost ~]# mkdir -p /data/test2
[root@localhost ~]# cd /data
[root@localhost data]# ls
test1  test2
[root@localhost data]# echo '<h1>this is first</h1>' > test1/index.html
[root@localhost data]# echo '<h1>this is second</h1>' > test2/index.html

#进行nfs的配置
[root@localhost data]# vim /etc/exports
/data/test1 192.168.81.0/24(ro)
/data/test2 192.168.81.0/24(ro)

#开启服务
[root@localhost data]# systemctl enable --now rpcbind nfs
[root@localhost data]# showmount -e
Export list for localhost.localdomain:
/data/test2 192.168.81.0/24
/data/test1 192.168.81.0/24

第二步设置两台节点服务器

#关闭防火墙
systemctl stop firewalld
setenforce 0
#添加虚接口,并设置ip
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
systemctl restart network
#修改配置
vim /etc/selinux/config 
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

route add -host 192.168.81.188 dev lo:0

vim /etc/rc.d/rc.local 
route add -host 192.168.81.188 dev lo:0

 vim /etc/httpd/conf/httpd.conf
 #在底行添加
 KeepAlive off
#进行挂载
mount 192.168.81.129:/data/test2 /var/www/html
systemctl restart httpd
##另一台执行相同的操作

第三步设置DR 服务器

#修改网卡
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0
vim ifcfg-ens33:0
systemctl restart network
ifconfig

#修改配置
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
yum -y install ipvsadm
modprobe ip_vs
cat /proc/net/ip_vs
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl enable --now ipvsadm
ipvsadm -C
ipvsadm -A -t 192.168.81.188:80 -s rr
ipvsadm -a -t 192.168.81.188:80 -r 192.168.81.130:80 -g -w 1
ipvsadm -a -t 192.168.81.188:80 -r 192.168.81.131:80 -g -w 1

第四步在本地查看调度服务器

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

前后端 java 对接海康威视监控-hls实现h5播放

海康的获取监控预览流的接口当中支持 rtsp、rtmp、hls等协议。 这篇文章主要是说hls协议的。 贴上海康的开发平台地址&#xff0c;其中有对应的API&#xff1a;海康开发平台 1、java层面代码 这里除了main方法之外&#xff0c;有两个方法&#xff0c;分别是&#xff1a; 1&am…

【Python】一文教你如何使用 Requests 库

作者主页&#xff1a;爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typeblog个…

审视自己再出发,在职读研从人民大学与加拿大女王大学金融硕士项目起航

有人说&#xff0c;人生并非一帆风顺。是的&#xff0c;在人生的道路上&#xff0c;总会出现各种各样的麻烦。或者认真学习不见成效&#xff0c;或是努力工作得不到赏识。人生中最困难的事情就是审视自己&#xff0c;当我们意识到自己需要提升时&#xff0c;往往是拥有强大能量…

【Linux】线程分离和线程互斥

终于到线程互斥了~ 文章目录 前言一、线程分离 如何理解线程库和线程ID二、线程互斥总结 前言 在上一篇文章中我们学习了线程控制&#xff0c;比如创建一个线程&#xff0c;取消一个线程以及等待线程&#xff0c;这篇文章我们讲两个非常重要的概念&#xff0c;一个是线…

CDH 之 hive 升级至 hive-3.1.3 完美踩坑过程

一、准备工作 1.1 前言 这是博主在升级过程中遇到的问题记录&#xff0c;大家不一定遇到过&#xff0c;如果不是 CDH 平台的话&#xff0c;单是 hive 服务升级应该是不会有这些问题的&#xff0c;且升级前博主也参考过几篇相关 CDH 升级 hive 服务的博文&#xff0c;前面的升级…

go语言操作以太坊智能合约

操作中要注意版本问题 geth版本、golang版本等 在remix环境中写好合约后&#xff0c;进行编译得到abi文件 简单举例 Hello.sol合约 // SPDX-License-Identifier: MIT pragma solidity ^0.8.0;contract Hello {string Msg;function setMsg(string memory _msg) public{Msg_msg…

SM2密码算法规范介绍

目录 1、SM2的密钥对 1.1、SM2公钥 1.2、SM2私钥 2、密钥数据格式 2.1、 GMT0009 2.2、 GMT0016 2.3、 GMT0018 3、加密数据格式 3.1、GMT0009 3.2、GMT0016 3.3、GMT0018 4、签名数据格式 4.1、GMT0009 4.2、GMT0016 4.3、GMT0018 1、SM2的密钥对 1.1、SM2公钥…

java版DVD影碟片出租赁系统C/S模式 java电影购票系统课程设计

系统采用c/s架构&#xff0c;当然&#xff0c;你可以服务端、客户端都在同一台电脑上运行&#xff1b; 也可以在同一局域网内服务端、客户端在其它不同电脑上运行&#xff1b; 如果你有云服务器&#xff0c;可将Service端代码部署至云服务器上&#xff0c;客户端在任何一台有…

不愧是阿里P8出手的并发编程笔记!颠覆了我以往“正确“的认知

对于一个Java程序员而言&#xff0c;能否熟练掌握并发编程是判断他优秀与否的重要标准之一。因为并发编程是Java语言中最为晦涩的知识点&#xff0c;它涉及操作系统、内存、CPU、编程语言等多方面的基础能力&#xff0c;更为考验一个程序员的内功。 那到底应该怎么学习并发编程…

浅析给水管网动态水力建模数据及其管理

摘要&#xff1a;给水管网在城市生产及生活中发挥着十分重要的作用&#xff0c;所以&#xff0c;保证其正常运行便显得尤为必要了。本文将基于给水管网动态水力建模数据及其管理展开相应的分析&#xff0c;以期促进城市给水管网运行质量的提高&#xff0c;为同行提供一些有益的…

HTML4

前序知识 认识两位先驱 计算机基础知识 计算机俗称电脑&#xff0c;是现代一种用于高速计算的电子计算机器&#xff0c;可以进行数值计算、逻辑计算&#xff0c;还具有存储记忆功能。计算机由 硬件 软件组成 C/S架构与B/S架构 上面提到的应用软件&#xff0c;又分为两大类…

软件测试之登录测试详解

一、功能测试--登录功能性测试用例包括&#xff1a;1.什么都不输入&#xff0c;点击提交按钮&#xff0c;看提示信息。&#xff08;非空检查&#xff09;2.输入已注册的用户名和正确的密码&#xff0c;验证是否登录成功&#xff1b;3.输入已注册的用户名和不正确的密码&#xf…

PerformanceRunner即将发布2023年新版本,具体功能有哪些?

PerformanceRunner(简称PR)是国内专业的支持http、https、websocket、tcp/ip、MQ等各种协议、10万海量并发、可靠的性能测试工具/压力测试工具&#xff0c;降低了应用系统运行风险。 PerformanceRunner即将发布2023年新版本&#xff0c;具体功能有哪些&#xff1f; 1.录制时单机…

【Python入门篇】——Python函数(函数介绍,函数的定义,函数的参数和函数的返回值)

作者简介&#xff1a; 辭七七&#xff0c;目前大一&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; Python入门&#xff0c;本专栏主要内容为Python的基础语法&#xff0c;Python中的选择循环语句…

都2023年了,网络安全还能入门吗?

前言 随着互联网的发展&#xff0c;网络安全逐渐成为重要领域之一。由于网络攻击已成为全球规模的问题&#xff0c;这使得网络安全专业成为各企业的重中之重。在这篇文章中&#xff0c;我们将从网络安全的发展趋势、就业前景和薪资水平方面入手&#xff0c;分析网络安全入门的…

【集群】部署LVS-DR群集

文章目录 一、LVS-DR工作原理1. 数据包流向分析2. DR模式的特点3. ARP 解析问题3.1 问题1&#xff1a;ip地址冲突3.2 问题2&#xff1a;真实服务器的第二次ARP请求3.3 解决ARP的两个问题的设置方法 二、LVS-DR部署过程1. 配置环境2. 部署服务器2.1 环境配置2.2 LVS-DR调度器2.2…

【基础知识】一文看懂深度优先算法和广度优先算法

概览 先上个图 现在我们要访问图中的每个节点&#xff0c;即图的遍历。 图的遍历是指&#xff0c;从给定图中任意指定的顶点&#xff08;称为初始点&#xff09;出发&#xff0c;按照某种搜索方法沿着图的边访问图中的所有顶点&#xff0c;使每个顶点仅被访问一次&#xff…

三、django-vue-admin开源项目二次开发——后端快速实现curd及接口

上一章&#xff1a; 二、django-vue-admin开源项目二次开发——修改默认菜单_做测试的喵酱的博客-CSDN博客 下一章&#xff1a; 一、背景 我想实现接口自动化用例的管理功能。一共涉及到两张表&#xff0c;一张项目表&#xff0c;是所有的项目列表。 一张是case列表&#…

Postgresql关于JSON、JSONB的操作符、处理函数(持续更新)

一、postgresql实用函数 &#xff08;只列举本次用到的函数&#xff0c;其他函数在文章后面有详解&#xff09; 1.1、将jsonb格式的数组中的值展开/分解成单独的数据/对象&#xff1f; SELECT answer_id, jsonb_array_elements(option_ids)::INTEGER AS option_id FROM db_l…

Java HashMap初始化大小设置多少合适

修改公司老代码的时候&#xff0c;发现阿里编码规约插件提示HashMap初始化时尽量指定初始值大小&#xff0c;因为设置合理的初始值可以提升性能&#xff1a; HashMap继承自AbstractMap类&#xff0c;实现了Map、Cloneable、java.io.Serializable接口&#xff0c;是基于散列表实…