部署LVS-DR群集...

目录

最后一台主机(第四台)

本地yum源安装httpd(非必做)

继续开始从最后一台主机开始(第四台)

转第二台主机 

 转第三台主机

回第二台 

上传

转第三台主机

上传

回第二台

转第三台 

转第一台主机 

回第二台主机

转第三台主机

 回第一台主机


为方便进行原理分析,将Client与群集机器放在同一网络中,数据包流经的路线为1-2-3-4

 Client向目标VIP发送请求,Director(负载均衡器)接收

IP包头及数据帧头信息

Director根据负载均衡算法选择RealServer_1,不修改也不封装IP报文,而是将数据帧的MAC地址

改为RealServer_1的MAC地址,然后在局域网上发送 

RealServer_1收到这个帧,解封装后发现目标IP与本机匹配(RealServer事先绑定了VIP),于是处

理这个报文。随后重新封装报文,将响应报文通过lo接口传送给物理网卡然后向外发出。

 Client将收到回复报文。Client认为得到正常的服务,而不会知道是哪一台服务器处理的

注意:如果跨网段,则报文通过路由器经由Internet返回给用户

---------------------DR模式 LVS负载均衡群集-------------------------

数据包流向分析:

(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。

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

在LVS-DR负载均衡集群中,负载均衡器与节点服务器都要配置相同的VIP地址

 

在局域网中具有相同的IP地址,势必会造成各服务器ARP通信的素乱

当ARP广播发送到LVS-DR集群时,因为负载均衡器和节点服务器都是连接到相同的网络上,它们

都会接收到ARP广播

只有前端的负载均衡器进行响应,其他节点服务器不应该响应ARP广播 

对节点服务器进行处理,使其不响应针对VIP的ARP请求

使用虚接口lo:0承载VIP地址

设置内核参数arp_ignore=1: 系统只响应目的IP为本地IP的ARP请求

RealServer返可报文(源IP是VIP)经路由器转发,重新封装报文时,需要先获取路由器的MAC地址

发送ARP请求时,Linux默认使用IP包的源IP地址(即VIP)作为ARP请求包中的源IP地址,而不使用

发送接口的IP地址

如:ens33

路由器收到ARP请求后,将更新ARP表项

原有的VIP对应Director的MAC地址会被更新为VIP对应RealServer的MAC地址

问题

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

 

解决方法

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

的源地址,而选择发送接口的IP地址

LVS-DR模式部署:

1)部署NFS共享存储

2)部署Web服务器,注意:配置lo:0虚接口承载VIP;修改内核参数 arp_ignore=1、

arp_announce=2防止网关ARP紊乱问题;添加路由 route add -host <VIP> dev lo:0

3)部署调度器,注意:配置ensXX:0虚接口承载VIP;修改内核参数ip_forward=0、

send_redirects=0关闭IP转发和重定向功能;安装ipvsadm工具,添加虚拟服务器和真实服务器的

配置,使用-g选项选择LVS-DR模式

4)客户端访问VIP进行测试,注意:如何客户端跨网段,则调度器和节点服务器的默认网关要指

向网关路由器的地址

最后一台主机(第四台)

systemctl disable --now firewalld

setenforce 0

 

vim /etc/selinux/config

 

disabled

本地yum源安装httpd(非必做)

第一步

挂载光盘镜像

mount /dev/sr0 /mnt

第二步

准备yum源

cd /etc/yum.repos.d/

创建一个备份目录

mkdir repo.bak

所有的repo文件移动到这个目录里

mv *.repo repo.bak/

再创建一个本地yum源配置文件

vim local.repo

[local]
name=local
baseurl=file:///mnt
enabled=1
gpgcheck=0

然后进行安装

yum install -y httpd

systemctl start httpd
systemctl enable httpd

继续开始从最后一台主机开始(第四台)

yum install -y nfs-utils rpcbind

mkdir /share/{xy101,xy102} -p

ls /share/

echo '<h1>this is xy101 test web page!</h1>' > /share/xy101/test.html
echo '<h1>this is xy102 test web page!</h1>' > /share/xy102/test.html

vim /etc/exports

/share/xy101 192.168.80.0/24(ro)
/share/xy102 192.168.80.0/24(ro)

 

systemctl enable --now rpcbind nfs

showmount -e

 

转第二台主机 

systemctl start rpcbind

 转第三台主机

systemctl start rpcbind

回第二台 

vim /etc/sysconfig/network-scripts/ifcfg-ens33

showmount -e 192.168.80.40

cd /etc/yum.repos.d/

 

ls

1:29:54

上传

yum install -y nginx

转第三台主机

上传

yum install -y nginx

回第二台

1:37:12

systemctl start nginx

mount 192.168.80.40:/share/xy101 /usr/share/nginx/html

ls !$

 

cd /etc/sysconfig/network-scripts/

 

cp ifcfg-lo ifcfg-lo:0

vim ifcfg-lo:0

1:39:14 

DEVICE=lo:0
IPADDR=192.168.80.100
NETMASK=255.255.255.255
ONBOOT=yes

systemctl restart network

 

ifconfig

systemctl restart nginx

 

systemctl enable nginx

 

vim /etc/sysctl.conf

net.ipv4.conf.lo.arp_ignore =1
net.ipv4.conf.all.arp_ignore =1
net.ipv4.conf.lo.arp_announce =2
net.ipv4.conf.all.arp_announce =2

sysctl -p

 

route -n

route add -host 192.168.80.100 lo:0

 

route -n

转第三台 

cd /etc/sysconfig/network-scripts/

cp ifcfg-lo ifcfg-lo:0

vim !$

 

DEVICE=lo:0
IPADDR=192.168.80.100
NETMASK=255.255.255.255
ONBOOT=yes

 

systemctl restart network nginx

systemctl enable nginx

vim /etc/sysctl.conf

net.ipv4.conf.lo.arp_ignore =1
net.ipv4.conf.all.arp_ignore =1
net.ipv4.conf.lo.arp_announce =2
net.ipv4.conf.all.arp_announce =2

sysctl -p

 

route add -host 192.168.80.100 dev lo:0

1:44:34 

mount 192.168.80.40:/share/xy102 /usr/share/nginx/html/

df

ls /usr/share/nginx/html/

转第一台主机 

yum install -y ipvsadm

touch /etc/sysconfig/ipvsadm

systemctl start ipvsadm

 

systemctl status ipvsadm

systemctl enable ipvsadm

modprobe ip_vs

 

cat /proc/net/ip_vs

 

cd /etc/sysconfig/network-scripts/

cp ifcfg-lo ifcfg-ens33:0

vim !$

 

DEVICE=ens33:0
IPADDR=192.168.80.100
NETMASK=255.255.255.255
ONBOOT=yes

systemctl restart network

1:47:52 

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

ipvsadm -C

ipvsadm -A -t 192.168.80.100:80 -s rr

ipvsadm -a -t 192.168.80.100:80 -r 192.168.80.20:80 -g

ipvsadm -a -t 192.168.80.100:80 -r 192.168.80.30:80 -g

ipvsadm

ipvsadm-save -n > /opt/ipvsadm.bak

cat !$

 

回第二台主机

vim /etc/nginx/nginx.conf

systemctl restart nginx

转第三台主机

vim /etc/nginx/nginx.conf

systemctl restart nginx

 回第一台主机

ipvsadm -ln

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Parallelize your massive SHAP computations with MLlib and PySpark

https://medium.com/towards-data-science/parallelize-your-massive-shap-computations-with-mllib-and-pyspark-b00accc8667c (能翻墙直接看原文&#xff09; A stepwise guide for efficiently explaining your models using SHAP. Photo by Pietro Jeng on Unsplash Int…

前端:鼠标点击实现高亮特效

一、实现思路 获取鼠标点击位置 通过鼠标点击位置设置高亮裁剪动画 二、效果展示 三、按钮组件代码 <template><buttonclass"blueBut"click"clickHandler":style"{backgroundColor: clickBut ? rgb(31, 67, 117) : rgb(128, 128, 128),…

docker login 报错: http: server gave HTTP response to HTTPS client

环境&#xff1a; 自建 Harbor、Docker 1. 问题分析 # 命令&#xff0c;这里用的是 IP&#xff0c;可以为域名 docker login -u test 172.16.51.182:31120 # 输入密码 Password:# 报错如下&#xff1a; Error response from daemon: Get "https://172.16.51.182:31120/…

[DDR4] DDR 简史

依公知及经验整理&#xff0c;原创保护&#xff0c;禁止转载。 专栏 《深入理解DDR4》 存和硬盘&#xff0c;这对电脑的左膀右臂&#xff0c;共同扛起了存储的重任。内存以其超凡的存取速度闻名&#xff0c;但一旦断电&#xff0c;内存中的数据也会消失。它就像我们的工作桌面&…

基于WPF技术的换热站智能监控系统14--搭建西门子PLC通信环境

1、安装博途软件V15 本项目需要用到西门子PLC&#xff0c;系统所需的数据来自现场PLC实时采集的数据&#xff0c;所以需要配置PLC的通信环境&#xff0c;具体请看以下博客文章。 windows10企业版安装西门子博途V15---01准备环境_博途v15.1安装需求-CSDN博客 windows10企业…

5.Sentinel入门与使用

5.Sentinel入门与使用 1.什么是 Sentinel?Sentinel 主要有以下几个功能: 2.为什么需要 Sentinel?3.Sentinel 基本概念3.1 什么是流量控制?3.1.1 常见流量控制算法3.1.2 Sentinel 流量控制流控效果介绍如下: 3.2 什么是熔断?熔断策略 3.3 Sentinel 组成&#xff08;资源和规…

[vue3]组件通信

自定义属性 父组件中给子组件绑定属性, 传递数据给子组件, 子组件通过props选项接收数据 props传递的数据, 在模版中可以直接使用{{ message }}, 在逻辑中使用props.message defineProps defineProps是编译器宏函数, 就是一个编译阶段的标识, 实际编译器解析时, 遇到后会进行…

【Oracle APEX开发小技巧1】转换类型实现显示小数点前的 0 以 及常见类型转换

在 apex 交互式式网格中&#xff0c;有一数值类型为 NUMBER&#xff0c;保留小数点后两位的项&#xff0c;在 展示时小数点前的 0 不显示。 效果如下&#xff1a; 转换前&#xff1a; m.WEIGHT_COEFFICIENT 解决方案&#xff1a; 将 NUMBER&#xff08;20&#xff0c;2&#xf…

模拟电子技术基础(一)--本证半导体与杂质半导体

半导体分为两大类&#xff1a;本征半导体和杂质半导体。这两种类型的半导体在电子结构和电导特性上有显著的区别。 本征半导体&#xff08;Intrinsic Semiconductor&#xff09; 定义和组成&#xff1a;本征半导体是纯净的半导体&#xff0c;没有任何杂质原子。最常见的本征半…

2023年13个最适合销售电子书的WordPress主题

欢迎来到我们用于销售电子书和其他数字/可下载产品&#xff08;软件、应用程序、图标集、主题等&#xff09;的最佳WordPress主题的完整集合。 这些主题有内置的支付网关&#xff0c;可以通过 PayPal、信用卡等处理安全支付。&#xff08;易于配置&#xff01;&#xff09; 最…

Python轮子:Excel读写利器——openpyxl

原文链接&#xff1a;http://www.juzicode.com/python-module-openpyxl 在之前的xlwt和xlrd的文章中我们介绍了Excel访问的2个工具&#xff0c;它们分别只能对Excel文件进行写或者读&#xff0c;今天再介绍一个可以对Excel进行读和写的工具——openpyxl。需要注意的是openpyxl…

MFC工控项目实例之三theApp变量传递对话框参数

承接专栏《MFC工控项目实例之二主菜单制作》 用theApp变量传递对话框参数实时改变iPlotX坐标轴最小值、最大值。 1、新建IDD_SYS_DATA对话框&#xff0c;类名SYS_DATA。 三个编辑框IDC_EDIT1、IDC_EDIT2、IDC_EDIT3变量如图 2、SEAL_PRESSURE.h中添加代码 #include "re…

CleanMyMac X软件下载附加详细安装教程

​首先要介绍的是CleanMyMac X&#xff0c;这是一款极受欢迎的苹果电脑清理软件&#xff0c;它能够全面扫描你的电脑系统&#xff0c;清理无用的文件和垃圾&#xff0c;以释放硬盘空间&#xff0c;除了清理功能之外&#xff0c;CleanMyMac X 还可协助管理应用程序、优化性能、修…

python基础 002 - 2 常用数据类型

python的常用数据类型 int , 整型 1,2,3float ,小数&#xff0c;浮点类型1.2bool , boolean 布尔&#xff0c;真假。判断命题。True Flasestr &#xff0c;字符串 list , 列表 a []tuple, 元组 a ()dict , dictionary, 字典 a {}set , 集合 a {} 1 查看数据类型 typ…

某集团数字化转型蓝图规划项目案例(94页PPT)

案例介绍&#xff1a; 本集团数字化转型蓝图规划项目通过确定目标&#xff0c;如制定集团数字化转型的整体战略和规划&#xff0c;明确转型方向和目标。构建数字化业务体系&#xff0c;实现业务流程数字化、智能化。搭建数字化管理平台&#xff0c;提升集团内部的管理效率和决…

条件语句与循环结构

引言 条件语句和循环结构是C语言中构建程序逻辑的基本工具。它们允许程序根据条件执行不同的代码块和重复执行某些操作。本篇文章将详细介绍C语言中的条件语句和循环结构&#xff0c;包括if、else、switch语句&#xff0c;以及for、while、do-while循环的使用&#xff0c;帮助读…

IDEA快速入门03-代码头统一配置

三、代码规范配置 3.1 文件头和作者信息 配置入口&#xff1a;依次打开 File -> Settings -> Editor -> File and Code Templates。 Class /*** Copyright (C) 2020-${YEAR}, Glodon Digital Supplier & Purchaser BU.* * All Rights Reserved.*/ #if (${PACKA…

专业是软件工程,现在好迷茫,感觉什么都没有学到,该怎么办?

学习软件工程可能会遇到迷茫和困惑的时期&#xff0c;这很正常&#xff0c;尤其是在学习初期。这里有一些建议&#xff0c;或许可以帮助你找到方向&#xff1a; 明确目标&#xff1a;思考你学习软件工程的目的是什么&#xff0c;是为了将来从事软件开发工作&#xff0c;还是对编…

MyBatis 的多级缓存机制是怎么样运作的?

引言&#xff1a;上周三&#xff0c;小 X 去面试一家中厂&#xff0c;其中面试官问到 MyBatis 的多级缓存机制是怎么样运行的&#xff1f;这个问题可以好好准备一下&#xff0c;很多人可能只会用 MyBatisPlus&#xff0c;简单的多表联查 SQL 语句可能都写不出来&#xff0c;更别…

神经网络 torch.nn---nn.LSTM()

torch.nn - PyTorch中文文档 (pytorch-cn.readthedocs.io) LSTM — PyTorch 2.3 documentation LSTM层的作用 LSTM层:长短时记忆网络层&#xff0c;它的主要作用是对输入序列进行处理&#xff0c;对序列中的每个元素进行编码并保存它们的状态&#xff0c;以便后续的处理。 …
最新文章