部署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.mzph.cn/news/853350.shtml

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

相关文章

Linux Kernel入门到精通系列讲解(RV-Kernel 篇) 5.5 RTC设备编写与实现

1. 概述 上一章节我们已经在QEMU中添加了RTC设备,本章节我们就把RTC设备给移植进入kernel中运行起来,我们移植的Google goldfish_rtc设备,此IP已经在Linux kernel有了Driver,所以我们直接移植设备树即可。 RTC时钟是用来记录当前系统时间的;对于Linux系统来说,时间是一…

Java 项目学习(初始化项目)

后端工程基于 maven 进行项目构建&#xff0c;并且进行分模块开发 参考&#xff1a;Spring或Spring Boot项目目录结构划分和代码分层 1、了解项目的整体结构 sky-take-out maven 父工程&#xff0c;统一管理依赖版本&#xff0c;聚合其他子模块 sky-common 子模块&#xff0c…

【背包题】oj题库

目录 1282 - 简单背包问题 1780 - 采灵芝 1888 - 多重背包&#xff08;1&#xff09;​编辑 1891 - 开心的金明 2073 - 码头的集装箱 1905 - 混合背包 1282 - 简单背包问题 #include <bits/stdc.h> using namespace std; //二维数组:dp[i][j]max(dp[i-1][j],v[i]dp[…

CSS动画(登录页面)

1.整体效果 https://mmbiz.qpic.cn/sz_mmbiz_gif/EGZdlrTDJa6Pfop3IiakrZOtiaiaKniaxeH2Gs407DmkXPsMo8AFKdsYibYcpZiboc24Ulic2CicmyvHmnwCrib7MDe6Jvg/640?wx_fmtgif&fromappmsg&tpwebp&wxfrom5&wx_lazy1&wx_co1 2.完整代码 HTML <!DOCTYPE html&g…

Oracle备份失败处理,看这一篇就够了!

作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;10余年DBA工作经验&#xff0c; Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主&#xff0c;全网粉丝10万 擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复&#xff0c; 安装迁移&#xff0c;性能优化、故障…

FLAN-T5模型的文本摘要任务

Text Summarization with FLAN-T5 — ROCm Blogs (amd.com) 在这篇博客中&#xff0c;我们展示了如何使用HuggingFace在AMD GPU ROCm系统上对语言模型FLAN-T5进行微调&#xff0c;以执行文本摘要任务。 介绍 FLAN-T5是谷歌发布的一个开源大型语言模型&#xff0c;相较于之前的…

第一页总结

第一页总结 链表反转206. 反转链表25. K 个一组翻转链表 双指针21. 合并两个有序链表141. 环形链表 链表 反转 206. 反转链表 206. 反转链表 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 递归思路&#xff1a; 每一个子递归都将当前…

什么是专业的CRM客户管理系统,介绍crm客户管理系统的功能作用

CRM&#xff08;Customer Relationship Management&#xff09;客户管理系统&#xff0c;是现代企业不可或缺的一款管理工具。它集客户信息管理、销售自动化、客户服务与支持、数据分析与决策支持等多项功能于一身&#xff0c;帮助企业实现客户关系的全方位管理&#xff0c;从而…

浏览器必备插件:最新Allow copy万能网页复制下载,解锁网页限制!

今天阿星给大家安利一个超级实用的小工具&#xff0c;专治那些“禁止复制”的网页文字。学生党、资料搜集狂人&#xff0c;你们有福了&#xff01; 想象一下&#xff0c;你在网上冲浪&#xff0c;突然遇到一篇干货满满的文章&#xff0c;正想复制下来慢慢品味&#xff0c;结果…

CubeMX Keil Configure

// 使用外部高速晶振 外部高速晶振为8M&#xff08;根据开发板上的晶振频率设置&#xff09;&#xff0c;使用 PLLCLK&#xff0c;HSE 选项 USART1 使用 Asynchronous&#xff0c;PA9&#xff0c;PA10引脚&#xff08;USART1 引脚根据开发板上引脚设置&#xff09; 设置MDK AR…

Docker Nginx

Docker官网 https://www.docker.com/https://www.docker.com/ 删除原先安装的Docker sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ …

android13 应用冷启动

1 概述 launcher 通过binder到systemserver中atms中发送startActivity请求 startProcess向zygote发送启动新进程请求 zygote收到请求&#xff0c;fork新进程并调用ActivityThread的main初始化 新进程启动&#xff0c;发送attachApplication给ams&#xff0c;告诉他新进程启动…

vuex是什么?如何使用?使用他的功能场景?

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态&#xff0c;并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 也集成到 Vue 官方的开发者工具 extension 中&#xff0c;提供了诸如零配置的 time-travel 调试、状态快照…

php环境变量$_ENV详解

在PHP中&#xff0c;$_ENV 是一个预定义的全局变量&#xff0c;它是一个关联数组&#xff0c;用来存储来自环境变量的信息。环境变 量是在操作系统中设置的、与正在运行的程序相关的变量&#xff0c;可以包含关于系统环境、路径、用户设置等信息。 获取环境变量 当你需要在P…

多维数组切片

使用切片的种类 第一种&#xff1a;使用单个冒号&#xff0c;最全的切片结构&#xff1a;[ start:stop:interval ]第二种&#xff1a;连续使用两个冒号获取带间隔的序列元素或者是实现特定的结果&#xff0c;比如逆序列。多维切片---考虑广播性质 本文要重点提醒的是 多维数组在…

希亦、添可、石头洗地机哪款好用?2024洗地机深度测评

今年的洗地机市场竞争异常激烈&#xff0c;各大品牌纷纷推出了自己的旗舰产品。这对消费者来说是个好消息&#xff0c;因为有更多的选择空间。然而&#xff0c;面对如此多的优质洗地机&#xff0c;选择合适的一款也成了一种“幸福的烦恼”。 作为一个专业的测评人士&#xff0…

kaggle竞赛实战10——特征优化

特征优化思路&#xff1a; 在完成常规流程后&#xff0c;如果不知道怎么办&#xff0c;可以针对文本or时间序列特征进行进一步处理 首先&#xff0c;我们注意到&#xff0c;每一笔信用卡的交易记录都有交易时间&#xff0c;而对于时间字段和文本字段&#xff0c;普通的批量创…

AI赋能软件测试

AI赋能软件测试 AI赋能软件测试软件测试分类软件质量模型:用来衡量软件质量的维度AI赋能软件测试 随着AI时代的到来,如何轻松掌握软件测试新趋势,将AI技术应用于软件测试行业,提高测试速度与测试效率~~ 传智星云AI助手:https://nebula.itcast.cn tips:各种AI工具应有尽有…

git使用http协议时免密pull和push方法

1、创建文件 在项目目录下创建.git-credentials文件&#xff0c;内容如下&#xff0c;填入自己的用户名和密码即可&#xff0c;如果是gitlab&#xff0c;把地址换成自己的gitlab的地址即可。 https://{用户名}:{密码}github.com2、终端执行 git config --global credential.…

特效(Effect)

特效(Effect) 特效,即特殊效果,是在电影、电视、游戏等领域中,通过视觉、声音、物理等手段创造出的非现实或超现实的效果。随着科技的发展,特效已经成为了现代娱乐产业中不可或缺的一部分。本文将深入探讨特效的定义、类型、制作过程及其在各个领域中的应用。 特效的定…