LVS实验(实现服务器集群的负载均衡)

news2024/9/20 1:05:19

基本概念

LVS(Linux Virtual Server)是Linux虚拟服务器的简称。

LVS通过将一个真实服务器集群虚拟成一台服务器来对外提供服务,同时在集群内部实现负载均衡。这种技术能够显著提高服务的处理能力和可靠性,降低单台服务器的负载压力。

核心组件与术语


IPVS(IP Virtual Server):LVS集群的核心软件模块,安装在负载均衡器上,负责虚拟出一个IP地址和端口对外提供服务。
专业术语:
VS(Virtual Server):虚拟服务器,通常指负载均衡器。
DS(Director/Balancer):分发器/负载均衡器,负责接收客户端请求并根据调度算法分发到后端服务器。
RS(Real Server):后端请求处理服务器,负责处理分发器转发的请求。
CIP(Client IP):客户端IP地址。
VIP(Virtual IP):虚拟IP地址,对外提供服务的IP地址。
DIP(Director IP):分发器(负载均衡器)的IP地址。
RIP(Real Server IP):后端服务器的IP地址。

工作模式


LVS支持多种工作模式,以适应不同的应用场景,主要包括:

NAT(Network Address Translation)模式:
在该模式下,负载均衡器不仅需要修改请求报文的目标地址,还需要修改响应报文的源地址。
适用于小规模集群,但请求和响应报文都需要经过负载均衡器,可能成为性能瓶颈。

DR(Direct Routing)模式:
在该模式下,负载均衡器只修改请求报文的目标MAC地址,而不修改IP地址。
后端服务器处理完请求后,直接将响应报文发回客户端,无需经过负载均衡器。
适用于大规模集群,处理效率高。

TUN(IP Tunneling)模式:
通过IP隧道将请求转发到后端服务器,后端服务器处理完请求后直接将响应报文发回客户端。
适用于地理位置分散的集群,但需要所有服务器支持IP Tunneling协议。

Full-NAT模式:
在请求和响应报文中都进行源地址和目标地址的转换。
允许RIP和DIP不在同一IP网络,但要能通信。

实验共部署nat和dr模式和lvs防火墙标记解决轮询调度

部署net模式

1.架构图

一共需要四台虚拟机,两台为RS,一台为lvs,最后一台为客户机

 2.在lvs

配置网卡IP
[root@bb ~]# vim /etc/NetworkManager/system-connections/eth1.connection 


[connection]

id=eth1

type=ethernet

interface-name=eth1



[ipv4]

method=manual

address1=192.168.0.100/24




[root@bb ~]# vim /etc/NetworkManager/system-connections/eth0.connection


[connection]

id=eth0

type=ethernet

interface-name=eth0



[ipv4]

method=manual

address1=172.25.254.254/24,172.25.254.2

dns=114.114.114.114;

[root@bb ~]# nmcli connection reload 
[root@bb ~]# nmcli connection up eth1


[root@bb ~]# nmcli connection reload 
[root@bb ~]# nmcli connection up eth0
打开lvs的内核功能
[root@bb ~]# vim /etc/sysctl.conf

# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
net.ipv4.ip_forward=1
 


[root@bb ~]# sysctl -p
net.ipv4.ip_forward = 1
在lvs安装ipvsadm
[root@bb ~]# yum install ipvsadm -y


正在更新 Subscription Management 软件仓库。
无法读取客户身份

本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。

AppStream                                        94 MB/s | 6.1 MB     00:00    
BaseOS                                          128 MB/s | 1.7 MB     00:00    
依赖关系解决。
================================================================================
 软件包           架构            版本                 仓库                大小
================================================================================
安装:
 ipvsadm          x86_64          1.31-6.el9           AppStream           54 k

事务概要
================================================================================
安装  1 软件包

总计:54 k
安装大小:89 k
下载软件包:
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
  准备中  :                                                                 1/1 
  安装    : ipvsadm-1.31-6.el9.x86_64                                       1/1 
  运行脚本: ipvsadm-1.31-6.el9.x86_64                                       1/1 
  验证    : ipvsadm-1.31-6.el9.x86_64                                       1/1 
已更新安装的产品。

已安装:
  ipvsadm-1.31-6.el9.x86_64                                                     

完毕
lvs做策略
[root@bb ~]# ipvsadm -A -t 172.25.254.254:80 -s rr
[root@bb ~]# ipvsadm -a -t 172.25.254.254:80 -r 192.168.0.10:80 -m
[root@bb ~]# ipvsadm -a -t 172.25.254.254:80 -r 192.168.0.20:80 -m

测试结果

结果成功

3.在rs

配置网卡IP
vim /etc/NetworkManager/system-connections/eth0.connection


[connection]

id=eth0

type=ethernet

interface-name=eth0



[ipv4]

method=manual

address1=192.168.0.10/24,192.168.0.100
[root@bb ~]# nmcli connection reload 
[root@bb ~]# nmcli connection up eth0

安装httpd
[root@bb ~]# yum install httpd -y
正在更新 Subscription Management 软件仓库。
无法读取客户身份

本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。

AppStream                                       247 MB/s | 6.1 MB     00:00    
BaseOS                                           99 MB/s | 1.7 MB     00:00    
依赖关系解决。
================================================================================
 软件包                  架构        版本                  仓库            大小
================================================================================
安装:
 httpd                   x86_64      2.4.53-7.el9          AppStream       54 k
安装依赖关系:
 apr                     x86_64      1.7.0-11.el9          AppStream      127 k
 apr-util                x86_64      1.6.1-20.el9          AppStream       98 k
 apr-util-bdb            x86_64      1.6.1-20.el9          AppStream       15 k
 httpd-core              x86_64      2.4.53-7.el9          AppStream      1.5 M
 httpd-filesystem        noarch      2.4.53-7.el9          AppStream       18 k
 httpd-tools             x86_64      2.4.53-7.el9          AppStream       89 k
 redhat-logos-httpd      noarch      90.4-1.el9            AppStream       18 k
安装弱的依赖:
 apr-util-openssl        x86_64      1.6.1-20.el9          AppStream       17 k
 mod_http2               x86_64      1.15.19-2.el9         AppStream      153 k
 mod_lua                 x86_64      2.4.53-7.el9          AppStream       64 k

事务概要
================================================================================
安装  11 软件包

总计:2.1 M
安装大小:5.9 M
下载软件包:
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
  准备中  :                                                                 1/1 
  安装    : apr-1.7.0-11.el9.x86_64                                        1/11 
  安装    : apr-util-bdb-1.6.1-20.el9.x86_64                               2/11 
  安装    : apr-util-openssl-1.6.1-20.el9.x86_64                           3/11 
  安装    : apr-util-1.6.1-20.el9.x86_64                                   4/11 
  安装    : httpd-tools-2.4.53-7.el9.x86_64                                5/11 
  安装    : redhat-logos-httpd-90.4-1.el9.noarch                           6/11 
  运行脚本: httpd-filesystem-2.4.53-7.el9.noarch                           7/11 
  安装    : httpd-filesystem-2.4.53-7.el9.noarch                           7/11 
  安装    : httpd-core-2.4.53-7.el9.x86_64                                 8/11 
  安装    : mod_http2-1.15.19-2.el9.x86_64                                 9/11 
  安装    : mod_lua-2.4.53-7.el9.x86_64                                   10/11 
  安装    : httpd-2.4.53-7.el9.x86_64                                     11/11 
  运行脚本: httpd-2.4.53-7.el9.x86_64                                     11/11 
  验证    : apr-1.7.0-11.el9.x86_64                                        1/11 
  验证    : apr-util-1.6.1-20.el9.x86_64                                   2/11 
  验证    : apr-util-bdb-1.6.1-20.el9.x86_64                               3/11 
  验证    : apr-util-openssl-1.6.1-20.el9.x86_64                           4/11 
  验证    : httpd-2.4.53-7.el9.x86_64                                      5/11 
  验证    : httpd-core-2.4.53-7.el9.x86_64                                 6/11 
  验证    : httpd-filesystem-2.4.53-7.el9.noarch                           7/11 
  验证    : httpd-tools-2.4.53-7.el9.x86_64                                8/11 
  验证    : mod_http2-1.15.19-2.el9.x86_64                                 9/11 
  验证    : mod_lua-2.4.53-7.el9.x86_64                                   10/11 
  验证    : redhat-logos-httpd-90.4-1.el9.noarch                          11/11 
已更新安装的产品。

已安装:
  apr-1.7.0-11.el9.x86_64                apr-util-1.6.1-20.el9.x86_64          
  apr-util-bdb-1.6.1-20.el9.x86_64       apr-util-openssl-1.6.1-20.el9.x86_64  
  httpd-2.4.53-7.el9.x86_64              httpd-core-2.4.53-7.el9.x86_64        
  httpd-filesystem-2.4.53-7.el9.noarch   httpd-tools-2.4.53-7.el9.x86_64       
  mod_http2-1.15.19-2.el9.x86_64         mod_lua-2.4.53-7.el9.x86_64           
  redhat-logos-httpd-90.4-1.el9.noarch  

完毕!
写入测试内容
[root@bb ~]# echo  web1-10 > /var/www/html/index.html
启用
[root@bb ~]# systemctl enable  --now httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
[root@bb ~]# 

rs2 和rs1 的一样

部署dr模式

1.架构图

从架构图可以看出,实验需要用到五台虚拟机

其中两台作为RS,一台为LVS,一台router且需要两个网卡,一个为仅主机模式,一个为NAT模式,最后一台作为客户机测试

注意,配置过程中的IP要根据自己的来设定

1,在lvs

配置好网卡
#把lvs的网卡设置上IP

[root@lvs ~]# vim /etc/NetworkManager/system-connections/eth1.connection 


[connection]

id=eth1

type=ethernet

interface-name=eth1



[ipv4]

method=manual

address1=192.168.0.50/24,192.168.0.100

nmcli connection reload
nmcli connection up eth1
之后安装ipvsadm并做策略
#在lvs安装ipvsadm

[root@lvs ~]# yum install ipvsadm -y
[root@lvs ~]# ipvsadm -A -t 192.168.0.200:80 -s rr
[root@lvs ~]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.10:80 -g 
[root@lvs ~]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.20:80 -g 
给lvs的环回配置vip
[root@lvs ~]# ip a  a 192.168.0.200/32 dev lo

2,在RS1

在RS1里配置好网卡IP
[root@web1 ~]# vim /etc/NetworkManager/system-connections/eth0.connection 



[connection]

id=eth0

type=ethernet

interface-name=eth0



[ipv4]

method=manual

address1=192.168.0.10/24,192.168.0.100

[root@bb ~]# nmcli connection reload 
[root@bb ~]# nmcli connection up eth0
安装好httpd,
[root@web1 ~]# yum install httpd -y
在他默认访问的路径下写进内容,以在测试的时候观察,并启用
[root@web1 ~]# echo web1-10 > /var/www/html/index.html 

systemctl enable --now httpd
使RS主机不对外响应VIP
[root@web1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore 
[root@web1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 
[root@web1 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce 
[root@web1 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore 

给环回配置vip

[root@web1 ~]# ip a a 192.168.0.200/32 dev lo

另外一台的RS配置一样,不过IP要改

3.在router的配置

[root@rou2 ~]# vim /etc/NetworkManager/system-connections/eth1.connection 

[connection]

id=eth1

type=ethernet

interface-name=eth1



[ipv4]

method=manual

address1=192.168.0.100/24




[root@rou2 ~]# vim /etc/NetworkManager/system-connections/eth0.connection 



[connection]

id=eth0

type=ethernet

interface-name=eth0



[ipv4]

method=manual

address1=172.25.254.100/24,172.25.254.2

dns=114.114.114.114;

把router的内核功能打开
[root@rou2 ~]# vim /etc/sysctl.conf


sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
net.ipv4.ip_forward = 1


[root@rou2 ~]# sysctl -p
net.ipv4.ip_forward = 1

4.在客户机

配置IP
[root@bb ~]$ vim /etc/NetworkManager/system-connections/eth0.connection 


[connection]

id=eth0

type=ethernet

interface-name=eth0



[ipv4]

method=manual

address1=172.25.254.200/24,172.25.254.100

测试

测试结果为成功

lvs防火墙标记解决轮询调度

在lvs的dr模式的基础上进行配置

1.在rs 1

安装mod_ssl让rs支持https
[root@bb ~]# yum install mod_ssl -y

重启httpd

root@bb ~]# systemctl restart httpd

两台RS的配置一样

2.在lvs上

清空之前的ipvsadm策略
[root@lvs ~]# ipvsadm -C
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
主机端口做标记为
[root@lvs ~]# iptables -t mangle -A PREROUTING -d 192.168.0.200 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 666

在客户机测试

测试结果为成功

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

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

相关文章

C++——类和对象(part1)

前言 本篇博客来为大家介绍C中的一个重要内容——类与对象,这部分的内容较多,将会分三篇文章来介绍,本篇为第一篇,如果你学习C或对C感兴趣,那么请继续往下阅读,下面进入正文部分。 1. 类的定义 1.1 类定…

【Material-UI】Button Group:实验性 API 详解

文章目录 一、按钮组概述1. 组件介绍2. 基本用法 二、实验性 API 详解1. LoadingButton 组件1.1 基本用法1.2 位置属性 三、实验性 API 的应用场景1. 数据加载按钮2. 提交表单按钮3. 保存操作按钮 四、按钮组的样式定制1. 变体(Variants)2. 颜色&#xf…

解决Ubuntu/Kali手动创建的启动器在dock上没有图标,且不能“添加到dock中“的问题

文章目录 问题描述问题解决解决方案 1 | 添加StartupWMClass字段解决方案 2 | 重命名文件名 如何获取 WM 值?方式 1 | xprop 命令方式 2 | 直接查看 问题描述 这个启动器无论是在菜单还是桌面都是正常的,只有在dock中没有图标,且不像其他APP…

《向量数据库指南》——非结构化数据的行业需求及向量数据库的关键角色

非结构化数据的行业需求及向量数据库的关键角色 引言 在当今数字化时代,数据已成为驱动社会进步与产业升级的核心要素。随着技术的飞速发展,特别是人工智能(AI)技术的广泛应用,数据的类型与规模正以前所未有的速度增长。其中,非结构化数据作为数据海洋中的主体部分,其…

同态加密和SEAL库的介绍(六)BGV 方案

前面介绍 BFV 和 CKKS 加密方案,这两者更为常用。并且也解释了 Batch Encoder 和 级别的概念,这对接下来演示 BGV 会很有帮助。 一、BGV简介 BGV (Brakerski-Gentry-Vaikuntanathan) 方案 是一种基于环学习同态加密(RLWE)问题的加…

霍尼韦尔落地灯怎么样?书客、霍尼、柏曼护眼大路灯多维度实测

霍尼韦尔落地灯怎么样?护眼大路灯作为最适合新时代学生照明工具,以良好的作用表现得到了许多家长及社会人士的认同,但同时也因为火爆,市面上的品牌繁杂,出现了许多劣质或者不专业的产品,促使一些人不知道如…

学习java的日子 Day64 学生管理系统 web2.0 web版本

MVC设计模式 概念 - 代码的分层 MVC:项目分层的思想 字母表示层理解MModle模型层业务的具体实现VView视图层展示数据CController控制器层控制业务流程(跳转) 1.细化理解层数 Controller:控制器层,用于存放Servlet&…

中职云计算实训室

一、实训室建设背景 随着信息技术的飞速发展,云计算已成为推动数字化转型、促进经济社会发展的重要力量。《中华人民共和国国民经济和社会发展第十四个五年规划和2035年远景目标纲要》明确提出,要加快数字化发展,建设数字中国。云计算作为数…

我的创新大赛经验分享:打造一份出色的商业计划书

我的创新大赛经验分享:打造一份出色的商业计划书 前言封面和目录:第一印象至关重要执行摘要:一语中的项目背景:市场与行业的深度剖析产品/服务:展现独特性和竞争力市场分析:深入洞察目标市场商业模式&#…

等保测评练习卷30

等级保护初级测评师试题30 姓名: 成绩: 一、判断题(10110分) 1.要想使用远程桌面的SSL加密功能,运行的操作系统必须为Windows 2000 Server或以上版本。&#xf…

排序算法1:堆排序,直接插入排序与希尔排序

前言 前些时间,博主带领着大家学习了数据结构,数据结构中的二叉树更是其中的重中之重,我们之前了解了二叉树是现实计算机存储数据的一种重要形式。借助其结构,我们还能实现更多高效的功能。 今天我们将进入排序算法的章节&#…

Spring MVC框架学习笔记

学习视频:10001 Spring MVC概述_哔哩哔哩_bilibili~11005 请求映射方式_哔哩哔哩_bilibili 目录 1.概述 Java EE三层架构 Spring MVC在三层架构中的位置 ​编辑 Spring MVC在表现层的作用 Spring MVC的特点 2.Spring MVC入门程序 代码实现 Spring MVC工作原理 Spring …

ETF套利有什么好用的软件?ETF套利神器—万得宏汇

ETF套利全场景覆盖,支持瞬时、趋势、事件套利等业务场景。丰富的组合交易工具、灵活高效的窗口设置,叠加ETF利润计算器联动,让ETF投资更轻松。 L2行情极速柜台,交易快人一步 市场行情瞬息万变,行情速度决定交易速度&a…

智能化解决方案:提升汽车制造图文档发送效率,实现高效传输

汽车制造业企业数据外发需求频繁,不仅有与异地研发机构间、供应商之间的协同研发文件交换,还有与外包供应商及零部件供应商之间的基于价值链的协同关系。主要涉及的数据类型有:汽车制造图文档发送、研发数据发送、项目文件发送、反馈数据与协…

用 GO 开发一个windows桌面图形化软件入门

项目采用的是walk技术方案 一、初始化项目 创建一个文件夹比如demo,然后进入demo执行 go mod init demo 二、安装walk模块 go get github.com/lxn/walk go get github.com/lxn/win 三、安装rsrc 安装: go install github.com/akavel/rsrc 生成*…

【突发】国内大量家用路由器网络访问异常和流量劫持事件分析

以下内容由WebRAY和Panabit联合发布 0x01 事件背景 从2024年5月开始,国内部分家用路由器开始出现间歇性断网、域名解析延迟高以及解析到海外IP等情况,今年8月该现象变得尤为严重。前几天在做应急响应时候发现某企业暴露在公网上的路由器配置的DNS地址被莫…

无线自组网应急指挥系统解决方案详解

随着全球自然灾害频发和社会应急事件的增加,如地震、洪水、泥石流等,传统的通信手段在面对这些极端情况时往往显得力不从心。尤其是在灾区,基础设施的损毁往往导致通信网络瘫痪,使得救援行动陷入困境。如何在这种紧急情况下迅速建…

深度学习入门(六):无监督学习

一、K-means算法 K-means算法是一种常用的聚类算法,旨在将数据集划分成 k 个簇,使得每个簇中的数据点尽可能相似,而不同簇之间的数据点差异尽可能大。该算法是基于迭代的方法来寻找最优的簇中心,并通过不断调整簇的划分来最小化簇…

【web安全】权限漏洞之未授权访问

一.Jenkins未授权访问漏洞 步骤一:使用以下fofa语法进行搜索 port"8080" && app"JENKINS" && title"Dashboard [Jenkins]" 步骤二:进入执行页面http://xxx.xxx.xxx.xxx:xxxx/manage/script/index.php 执…

预训练大语言模型综述来了!中国人民大学教授发表包含了416个参考文献的大语言模型综述

尽管大语言模型在最近今年发展十分迅速,但是相关的综述却相对比较落后。本文是由中国人民大学教授Wayne Xin Zhao等人前几天刚公开的关于大语言模型的综述,论文正文部分共32页,包含了416个参考文献。内容十分详实。 这份大模型综述我已经打包…