部署LVS-DR群集...

news2024/11/28 11:33:31

目录

最后一台主机(第四台)

本地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.coloradmin.cn/o/1825371.html

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

相关文章

一文看懂:数据湖、数据仓库、数据中台,浅显直白!

许多初入数据分析和数据可视化行业的人&#xff0c;对一些概念的认知往往很模糊&#xff0c;贝格前端工场截借此机会给大家讲解一下数据湖、数据仓库和数据中台的概念&#xff0c;力求浅显易懂。 一、什么是数据湖 数据湖是一种用于存储大量原始数据的存储系统&#xff0c;它…

拓扑排序、关键路径(AOV、AOE网)

拓扑排序&#xff08;AOV网&#xff09; 相关知识 在现代化管理中&#xff0c;人们常用有向图来描述和分析一项工程的计划和实施过程&#xff0c;一个工程常被分为多个小的子工程&#xff0c;这些子工程被称为活动&#xff08;Activity)。 在有向图中若以顶点表示活动&#xff…

零代码本地搭建AI大模型,详细教程!普通电脑也能流畅运行,中文回答速度快,回答质量高

这篇教程主要解决&#xff1a; 1). 有些读者朋友&#xff0c;电脑配置不高&#xff0c;比如电脑没有配置GPU显卡&#xff0c;还想在本地使用AI&#xff1b; 2). Llama3回答中文问题欠佳&#xff0c;想安装一个回答中文问题更强的AI大模型。 3). 想成为AI开发者&#xff0c;开…

家里满是“飞尘、毛絮”怎么办?用空气净化器,干净又卫生!

随着气温的升高&#xff0c;家中的毛絮和飞尘问题愈发严重&#xff0c;这些细小的颗粒常常聚集在房间的角落&#xff0c;即使每日清洁&#xff0c;似乎也难以彻底清除&#xff0c;反而可能使情况恶化。特别是对于养宠物的家庭来说&#xff0c;毛絮问题尤为突出&#xff0c;即使…

FullCalendar日历组件集成实战(15)

背景 有一些应用系统或应用功能&#xff0c;如日程管理、任务管理需要使用到日历组件。虽然Element Plus也提供了日历组件&#xff0c;但功能比较简单&#xff0c;用来做数据展现勉强可用。但如果需要进行复杂的数据展示&#xff0c;以及互动操作如通过点击添加事件&#xff0…

LVGL:

LVGL&#xff08;little video graphics library&#xff09;是一个开源的嵌入式图形库&#xff0c;提供高性能、低资源占用的图形用户界面&#xff08;GUI&#xff09;。具有模块化&#xff08;项目工程源码&#xff09;设计&#xff0c;可以在多平台使用&#xff08;如微处理…

《幻影大师:透视缠中说禅的虚像与真相》

而且他从不犯错&#xff0c;至少在他的叙述中是这样&#xff0c;所有的文章和言论都被粉饰得完美无瑕&#xff0c;即便有误&#xff0c;他也绝不公开承认&#xff0c;更别提什么真诚的道歉和改正了。那些对他推崇备至的人&#xff0c;多是盲目追随&#xff0c;将他神化为无所不…

Vue部分文件说明

1.eslintignore文件 Eslint会忽略的文件 # Eslint 会忽略的文件.DS_Store node_modules dist dist-ssr *.local .npmrc 2.gitignore # Git 会忽略的文件.DS_Store node_modules dist dist-ssr .eslintcache# Local env files *.local# Logs logs *.log npm-debug.log* yarn-de…

echarts写某个市地图

const geoJSON {"type":"FeatureCollection","features":[{"type":"Feature","properties":{"adcode":440303,"name":"罗湖区","center":[114.123885,22.555341],"…

简单易用的多功能图床Picsur

什么是 Picsur &#xff1f; Picsur 是一款易于使用、可自行托管的图片分享服务&#xff0c;类似于 Imgur&#xff0c;并内置转换功能。支持多种格式的图片&#xff0c;包括 QOI、JPG、PNG、WEBP&#xff08;支持动画&#xff09;、TIFF、BMP、GIF&#xff08;支持动画&#xf…

AI Agent智能应用从0到1定制开发(完结)

在数字化时代的浪潮中&#xff0c;人工智能&#xff08;AI&#xff09;代理智能应用如同星辰般璀璨&#xff0c;引领着技术革新的潮流。从零开始定制开发一款AI Agent智能应用&#xff0c;就像是在无垠的宇宙中绘制一颗新星的轨迹&#xff0c;每一步都充满了挑战与创新的火花。…

调试了一下午,终于把tailwindcss搞进Blazor了

在Vue和Uniapp项目中使用tailwindcss后&#xff0c;实在是太香了&#xff0c;非常符合我这从XAML走过来的老程序员的手感&#xff0c;所以老想着在Blazor项目中引入。看了几个老外大佬的视频&#xff0c;调试了一下午&#xff0c;终于是捣鼓成功了。由于咱们Blazor项目不在node…

[vue3]极速上手

介绍 vue3官网: Vue.js - 渐进式 JavaScript 框架 | Vue.js 1.0更容易维护 支持组合式API 可以减少代码量, 并且分散式维护转为集中式维护, 更容易封装复用 友好的TS支持 vue3的源码都被TS重写, 所以对TS的支持更友好 2.0更快的速度 新的diff算法, 模版编译优化, 更高效的…

【FireSim/Chipyard】解决FireSim Repo Setup步骤中Conda的firesim环境下载失败的问题

【FireSim/Chipyard】解决FireSim Repo Setup步骤中Conda的firesim环境下载失败的问题 问题描述 按照U250官方文档下载Conda环境的时候&#xff0c;即语句./scripts/machine-launch-script.sh --prefix REPLACE_ME_USER_CONDA_LOCATION的时候会遇到以下报错&#xff1a; Sol…

Locust web性能测试实践

Locust web性能测试实践 Locust 是一个开源的负载测试工具&#xff0c;使用Python语言实现&#xff0c;其简洁、轻量、高效的并发机制基于Gevent协程&#xff0c;可以实现单机模拟生成较高的并发压力。具有分布式和可扩展的特点&#xff0c;能够帮助你评估系统的性能并找到潜在…

【C++进阶】模板进阶与仿函数:C++编程中的泛型与函数式编程思想

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;C “ 登神长阶 ” &#x1f921;往期回顾&#x1f921;&#xff1a;栈和队列相关知识 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀模板进阶 &#x1f9e9;<&…

ArrayList集合+综合案例

数组与集合的区别 ArrayList 概述 是java编写好的一个类,用于表示一个容器,使用的时候,需要注意指定容器中元素的数据类型;(如果不指定,语法不报错,但是取值的时候不方便)注意事项 使用的时候,写ArrayList<元素的数据类型>的数据类型的时候,带着泛型;使用ArrayList集合…

一文搞定 大语言模型(LLM)微调方法

引言 众所周知&#xff0c;大语言模型(LLM)正在飞速发展&#xff0c;各行业都有了自己的大模型。其中&#xff0c;大模型微调技术在此过程中起到了非常关键的作用&#xff0c;它提升了模型的生成效率和适应性&#xff0c;使其能够在多样化的应用场景中发挥更大的价值。 那么&…

linux如何部署前端项目和安装nginx

要在Linux上部署前端项目并安装Nginx&#xff0c;你可以按照以下步骤操作&#xff1a; 安装Nginx: sudo apt update sudo apt install nginx 启动Nginx服务: sudo systemctl start nginx 确保Nginx服务开机自启: sudo systemctl enable nginx 部署前端项目&#xff0c;假设前…

【scikit-learn入门指南】:机器学习从零开始

1. 简介 scikit-learn是一款用于数据挖掘和数据分析的简单高效的工具&#xff0c;基于NumPy、SciPy和Matplotlib构建。它能够进行各种机器学习任务&#xff0c;如分类、回归和聚类。 2. 安装scikit-learn 在开始使用scikit-learn之前&#xff0c;需要确保已经安装了scikit-le…