部署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.rhkb.cn/news/350964.html

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

相关文章

试论地产需求政策的有效性边界

分析师通过对传统框架因子的分析和美日地产的回顾&#xff0c;指出收入政策将成为核心&#xff0c;测算认为地方收储面积约0.5-1.1亿平、收储资金0.8-1.9万亿元&#xff0c;70城二手房价降幅收窄至[-4.5%&#xff0c;-1.6%]。 事件&#xff1a;2024年5月17日&#xff0c;央行印…

异常封装类统一后端响应的数据格式

异常封装类 如何统一后端响应的数据格式 1. 背景 后端作为数据的处理和响应&#xff0c;如何才能和前端配合好&#xff0c;能够高效的完成任务&#xff0c;其中一个比较重要的点就是后端返回的数据格式。 没有统一的响应格式&#xff1a; // 第一种&#xff1a; {"dat…

数 组

概述 数组是一个引用类型&#xff0c;是一种容器。 数组存储多个相同数据类型的数据&#xff0c;允许自动类型转换。例如 int 类型的数组&#xff0c;可以存放 byte、short 和 int 类型的数据&#xff0c;double 类型的数组&#xff0c;可以存放 byte、short、int、long、floa…

【Apache Doris】周FAQ集锦:第 5 期

【Apache Doris】周FAQ集锦&#xff1a;第 5 期 SQL问题数据操作问题运维常见问题其它问题关于社区 欢迎查阅本周的 Apache Doris 社区 FAQ 栏目&#xff01; 在这个栏目中&#xff0c;每周将筛选社区反馈的热门问题和话题&#xff0c;重点回答并进行深入探讨。旨在为广大用户和…

zip加密txt文件后,暴力破解时会有多个解密密码可以打开的疑问??

最近在做一个关于zip压缩文件解密的测试&#xff0c;发现通过暴力解密时&#xff0c;会有多个解密密码可以打开&#xff0c;非常疑惑&#xff0c;这里做个问题&#xff0c;希望能有大佬解惑。 1、首先在本地创建一个113449.txt的文件&#xff0c;然后右键txt文件选择压缩&…

1586. 扫地机器人

问题描述 Mike同学在为扫地机器人设计一个在矩形区域中行走的算法,Mike是这样设计的:先把机器人放在出发点 (1,1)(1,1) 点上,机器人在每个点上都会沿用如下的规则来判断下一个该去的点是哪里。规则:优先向右,如果向右不能走(比如:右侧出了矩形或者右侧扫过了)则尝试向…

为什么说Python 是胶水语言?

​ "Python 是胶水语言"这一说法是指它很擅长将不同的程序或代码库连接在一起&#xff0c;能够让来自不同编程语言或框架的组件无缝协作。Python 具有丰富的库和简单的语法&#xff0c;使得它可以轻松调用其他语言编写的程序或使用不同技术栈的模块。 ​ 以下是几个…

Linux C编译器从零开发二

自定义分词器 test.c #include <ctype.h> #include <stdarg.h> #include <stdbool.h> #include <stdio.h> #include <stdlib.h> #include <string.h>typedef enum {TK_PUNCT, // PunctuatorsTK_NUM, // Numeric literalsTK_EOF, // …

线上教育培训办公系统系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;教师管理&#xff0c;学生管理&#xff0c;运营事件管理 教师账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;学生管理&#xff0c;作业管理&#xff0c;电…

用CloudCompare软件拟合点云中的圆柱体

用CloudCompare软件拟合点云中的圆柱体 软件下载 点击下面的链接&#xff0c;进入下载页面&#xff1a; 下载页面 然后根据需要选择下载合适的软件版本。 一般选择windows installer版&#xff0c;如图所示&#xff1a; 下载完成后&#xff0c;安装并打开软件。软件的默认语…

【MySQL】在CentOS环境下安装MySQL

目录 一、卸载残留环境 二、获取官方yum源 三、安装yum源 四、安装MySQL 五、启动MySQL 一、卸载残留环境 输入 ps axj | grep mysql 查看是否存在正在运行的MySQL服务 如果有&#xff0c;则先输入 systemctl stop mysqld 来关闭服务 然后输入 rpm -qa | grep mysql 查看…

XGBoost预测及调参过程(+变量重要性)--血友病计数数据

所使用的数据是血友病数据&#xff0c;如有需要&#xff0c;可在主页资源处获取&#xff0c;数据信息如下&#xff1a; 读取数据及数据集区分 数据预处理及区分数据集代码如下&#xff08;详细预处理说明见上篇文章--随机森林&#xff09;&#xff1a; import pandas as pd im…

SQLServer 借助Navcate做定时备份的脚本

首先创建SQLServer链接&#xff0c;然后在Query标签种创建一个查询 查询内容如下 use ChengYuMES declare ls_time varchar(1000) declare ls_dbname varchar(1000) set ls_time convert(varchar, getdate(), 112) _ replace(convert(varchar, getdate(), 108), :, )-- 需…

68. UE5 RPG 优化敌人角色的表现效果

我们现在已经有了四个敌人角色&#xff0c;接下来&#xff0c;处理一下在战斗中遇到的问题。 处理角色死亡后还会攻击的问题 因为我们有角色溶解的效果&#xff0c;角色在死亡以后的5秒钟才会被销毁掉。所以在这五秒钟之内&#xff0c;角色其实还是会攻击。主要时因为AI行为树…

LeetCode 算法:回文链表 c++

原题链接&#x1f517;&#xff1a;回文链表 难度&#xff1a;简单⭐️ 题目 给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为回文链表。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;head…

C++11移动语义

前言 之前我们已经知道了在类里开辟数组后&#xff0c;每一次传值返回和拷贝是&#xff0c;都会生成一个临时变量 class Arr { public://构造Arr() {/*具体实现*/ };//拷贝Arr(const Arr& ar) {/*具体实现*/ };//重载Arr operator(const Arr& ar) { /*具体实现*/Arr …

Python高级编程:Functools模块的8个高级用法,强烈建议添加到你的开发工具箱中!

目录 1. functools.partial 2. functools.lru_cache lru_cache的特点 cache的特点 性能比较与选择 3. functools.reduce functools.reduce的作用 工作原理 示例 累加序列中的所有元素 计算阶乘 initializer的使用 应用场景 示例:计算平均销售额 小结 4. funct…

微前端乾坤方案

微前端乾坤方案 了解乾坤 官方文档 介绍 qiankun 是一个基于 single-spa 的微前端实现库&#xff0c;旨在帮助大家能更简单、无痛的构建一个生产可用微前端架构系统。 qiankun 的核心设计理念 &#x1f944; 简单 由于主应用微应用都能做到技术栈无关&#xff0c;qiankun 对…

Java 桥接模式(Bridge Pattern)是设计模式中的一种结构型设计模式,桥接模式的核心思想是将抽象与实现解耦

桥接模式&#xff08;Bridge Pattern&#xff09;是一种结构型设计模式&#xff0c;它将抽象部分与它的实现部分分离&#xff0c;使它们都可以独立地变化。桥接模式的核心思想是将抽象与实现解耦&#xff0c;使得它们可以独立扩展。 在桥接模式中&#xff0c;通常包含以下四个…

DAY3-力扣刷题

1.罗马数字转整数 13. 罗马数字转整数 - 力扣&#xff08;LeetCode&#xff09; 罗马数字包含以下七种字符: I&#xff0c; V&#xff0c; X&#xff0c; L&#xff0c;C&#xff0c;D 和 M。 字符 数值 I 1 V 5 X 10 L …