首页 > 其他分享 >LVS负载均衡之DR模式构建

LVS负载均衡之DR模式构建

时间:2023-08-21 16:38:21浏览次数:44  
标签:arp 负载 LVS ipvsadm 网卡 systemctl ipv4 conf DR

※ 实验环境

(1)系统:centos7.9

(2)虚拟机:4台centos7.9,1台作为nfs共享服务器(NFS共享服务搭建步骤

LVS负载均衡之DR模式构建_linux

一、负载调度器配置

(1)关闭selinux、firewalld、NetworkManager

#关闭selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
#关闭firewalld
systemctl stop firewalld && systemctl disable firewalld
#关闭NetworkManager
systemctl stop NetworkManager && systemctl disable NetworkManager

(2)配置主机IP

#1.创建一个子接口,用来模拟外部网卡
 cp -r ifcfg-ens33 ifcfg-ens33:0
vim ifcfg-ens33:0    #修改子接口配置文件
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
DEVICE=ens33:0    #将网卡修改为子接口
ONBOOT=yes
IPADDR=10.10.10.100    
NETMASK=255.255.255.0
●重启网卡查看IP是否生效
systemctl restart network

LVS负载均衡之DR模式构建_LVS-DR模式_02

(3)修改系统内核文件,关闭广播功能

#在内核配置文件中添加参数关闭所有网卡广播功能
#0 表示禁用发送重定向,禁用发送重定向可以防止ARP欺骗和IP欺骗
vim /etc/sysctl.conf

net.ipv4.conf.all.send_redirects = 0  #所有网卡的
net.ipv4.conf.default.send_redirects = 0 #默然网卡的
net.ipv4.conf.ens33.send_redirects = 0    #ens33网卡的(根据需要修改为真实网卡即可)
#添加完毕后,刷新内核参数使其生效
sysctl -p   #刷新内核参数

(4)安装ipvsadm

· 标准镜像中使用yum直接安装

yum install ipvsadm -y   

modprobe ip_vs    #将ipvsadm加载到内核中来

二、配置web服务器

(1)关闭selinux、firewalld、NetworkManager

#关闭selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
#关闭firewalld
systemctl stop firewalld && systemctl disable firewalld
#关闭NetworkManager
systemctl stop NetworkManager && systemctl disable NetworkManager

(2)这里采用httpd服务,用来模拟web服务器

· 注意:在生产环境中网页内容是一致的,这里做实验为了看效果所以内容不同。
http-1服务器配置:
#安装httpd服务
yum install httpd -y
#启动服务
service httpd start 
#写入一个网页文件用来测试
echo "this is one web!" >/var/www/html/index.html


http-2服务器配置:
#安装httpd服务
yum install httpd -y
#启动服务
service httpd start 
#写入一个网页文件用来测试
echo "this is two web!" >/var/www/html/index.html

(3)拷贝一个回环网卡子接口,设置IP为负载调度器的虚拟IP,作为标识

        将回环接口子接口的IP地址设置为负载调度器的虚拟IP地址是为了确保回送数据包(由后端服务器返回给客户端的响应)通过负载调度器而不是直接发送到网络上。这样,负载调度器可以继续处理负载均衡算法并将响应发送到适当的客户端。

cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0

LVS负载均衡之DR模式构建_linux_03

(4)配置arp通讯行为

#配置内核文件,控制arp行为
arp-ignore
# 0 只要本机配置有相应IP地址就响应;
# 1 仅在请求的目标地址配置在请求到达网络接口上时,才给予响应;
arp-announce
# 0 将本机任何网络接口上的任何地址都向外通告;
# 1 尽可能避免向目标网络通告与其网络不匹配的地址信息表;
# 2 仅向目标网络通告与其网络相匹配的地址信息。
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

(4)为了解决无法回信问题添加一条主机路由

#所有发送到 10.10.10.100 的数据包将通过本地回环接口发送
route add -host 10.10.10.100 dev lo:0 
#为了防止重启失效,将此路由添加至开机自启
echo "route add -host 10.10.10.100 dev lo:0" >>/etc/rc.local

注:web2服务器配置与web1一致,这里不再赘述。

三、添加ipvsadm规则

# -A表示添加一个集群,-a表示添加集群中的子节点,
# -t表示tcp协议,-s指定算法,rr表示轮巡(默认60秒切换一次),-r指定后端真实web服务器,
# -g启用IPVS的网关模式(DR模式)
ipvsadm -A -t 集群IP:80 -s rr
ipvsadm -a -t 集群IP:80 -r web1:80 -g
ipvsadm -a -t 集群IP:80 -r web2:80 -g

(1)保存ipvs规则,使其重启不会丢失

# -S将当前IPVS规则保存到root目录下的ipvsweb文件内
ipvsadm -S > /root/ipvsweb

# -R从指定文件中加载IPVS规则
ipvsadm -R < /root/ipvsweb

四、测试功能是否生效

在DR模式下LVS只负责处理入站数据,出站由真实服务器自己完成

LVS负载均衡之DR模式构建_linux_04

轮巡效果图展示:

LVS负载均衡之DR模式构建_linux_05

标签:arp,负载,LVS,ipvsadm,网卡,systemctl,ipv4,conf,DR
From: https://blog.51cto.com/qclr/7175926

相关文章

  • 001 DDR基础知识(一)存储器分类
    1内存     内存(Memory)指的是内存存储器,又称为主存,是CPU用来直接寻址和存储的空间,它相当于一座桥梁,用以负责诸如硬盘、主板、显卡等硬件上的数据与处理器之间数据交换处理,我们可以把内存看作数据缓存区,一个高速的缓存区。内存之所以称为内存,是相对于硬盘这些外存而言,我们......
  • LVS负载均衡之DR模式构建
    ※实验环境(1)系统:centos7.9(2)虚拟机:4台centos7.9,1台作为nfs共享服务器(NFS共享服务搭建步骤)一、负载调度器配置(1)关闭selinux、firewalld、NetworkManager#关闭selinuxsed-i's/SELINUX=enforcing/SELINUX=disabled/'/etc/selinux/config#关闭firewalldsystemctlstopfirewalld......
  • WMCTF2023 ezAndroid
    一道安卓逆向题,用jadx打开。定位主要逻辑:点击查看代码publicvoidCheckOutClick(Viewview){Stringusername=this.usernameInput.getText().toString();Stringpassword=this.passwordInput.getText().toString();if(username.equals(......
  • 逻辑清晰,详解社交源码Android开发SDK
    前篇我们讲解了有关如何在IOS平台开发集成SDK,那么今天来给大家简单讲解下如何在社交源码Android客户端上开发集成。1.获取SDK:从提供SDK的第三方开发者或公司获得SDK的相关文件和文档。2.导入SDK文件:将SDK的库文件(.jar或.aar格式)拷贝到Android项目的libs文件夹中。3.配置权限:检查并......
  • Nginx 负载均衡配置
    介绍: Nginx负载均衡的原理是把请求均匀地分摊给上游的应用服务器,这样即使某一个服务器宕机也不会影响请求的处理,或者当应用服务器扛不住了,可以随时进行扩容。Nginx在处理请求时,会根据负载均衡算法(如轮询、IPHash等)将请求分发到不同的后端服务器上。Nginx支持多种负载均衡算法,可......
  • Android 国际化:新增越南语语系(Java)
    前提:1.在res文件夹中,新增values-vi文件夹(越南语文件夹)2.在步骤1的文件夹中,新增strings.xml背景:1.targetSdkVersion292.Jdk1.8步骤:1.在切换语言的下拉框/弹窗中,新增一个越南语的选项(此选项注意国际化)2.由于java.util.Locale中,并没有越南语,所以,在选中越南语选......
  • Android ContentProvider使用
    近来使用下项目上用的不多的东西在自己的app,记录下遇到的问题:项目地址:码云在AndroidManifest.xml添加provider时,权限问题。添加android:permission=”…”,这样控制其他app访问权限使app更加安全,permission是允许读写权限,writepermission是允许写权限,readpermission是允许读权限......
  • HTML5原生拖拽/拖放 Drag & Drop 详解
    前言拖放(drap&drop)在我们平时的工作中,经常遇到。它表示:抓取对象以后拖放到另一个位置。目前,它是HTML5标准的一部分。我从几个方面学习并实践这个功能。拖放的流程对应的事件我们先看下拖放的流程:选中--->拖动--->释放然后,我们一步步看下这个过程中,会发生的事情。选......
  • [SWPUCTF 2021 新生赛]hardrce
    [SWPUCTF2021新生赛]hardrce题目来源:nssctf题目类型:web涉及考点:rec1.上来直接代码审计<?phpheader("Content-Type:text/html;charset=utf-8");error_reporting(0);highlight_file(__FILE__);if(isset($_GET['wllm'])){$wllm=$_GET['wllm'];......
  • 39 pinctrol(五)pinctrl client于pinctrl driver联系
    前言整体结构1.pinctrldirver于pinctrlclientplatform_driver与platform_device在匹配的过程中会调用really_probe在really_prebe中调用pinctrl_bind_pins(下图为pinctrl_bind_pins的大体实际框架)主要实现一下三个方面的功能pinctrl_map的创建或索引(bindpinsnowbefor......