基于 openEuler 构建 LVS-DR 群集(同网段)。

server/2025/2/14 0:06:48/

一、LVS相关原理

1.LVS简介

LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项 目,它的官方站点是www.linuxvirtualserver.org。现在LVS已经是 Linux标准内核的一部分,在 Linux2.4内核以前,使用LVS时必须要重新编译内核以支持LVS功能模块,但是从Linux2.4内核以后,已 经完全内置了LVS的各个功能模块,无需给内核打任何补丁,可以直接使用LVS提供的各种功能。

使用LVS技术要达到的目标是:通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用 的服务器群集,它具有良好可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的服务性能

2.LVS体系结构

使用LVS架设的服务器集群系统有三个部分组成:最前端的负载均衡层(调度层DIP),用Load Balancer表示,中间的 服务器群组层(RIP),用Server Array表示,最底端的数据共享存储层(本实验不涉及),用Shared Storage表示。

3.LVS相关术语

名称缩写说明
虚拟IP地址(Virtual IP Address)VIP客户端访问服务的ip
真实IP地址(Real Server IP Address)RIP集群服务器(real server)的ip
Director的IP地址(Director IP Address)DIPDirector用于连接内外网网络的IP地址
客户端主机IP地址(Client IP Address)CIP客户端用户计算机请求集群服务器的IP地址,该地址用作 发送给集群的请求的源IP地址

4.LVS工作模式(重点分析VS/NAT、VS/DR模式)

共有三种模式:nat(地址转换)、tunnl(隧道)、dr(直连)

NAT优势:

• 部署简单:只需在负载均衡器上进行地址转换配置,内部服务器无需特殊设置,可使用私有IP地址,易于构建和管理小型负载均衡集群。• 易于管理:所有外部请求都由负载均衡器接收和分发,对后端服务器的管理相对集中,便于进行流量控制、监控和故障排查等操作。• 支持端口映射:能灵活地将外部请求的不同端口映射到后端服务器的不同端口,满足后端服务器提供多种服务且端口需求不同的情况。• 网络隔离性好:内部服务器使用私有IP,与外部网络隔离,增强了内部网络的安全性,减少了外部网络攻击的风险。

DR优势:

• 高性能:直接将请求数据包通过MAC地址转发到后端服务器,无需像NAT模式那样进行地址转换,减少了网络开销,提高了转发效率,能处理大量并发请求,提升系统整体性能。• 支持大规模集群:由于转发效率高,理论上可以连接的后端服务器数量更多,能更好地满足大规模服务器集群的负载均衡需求,实现更高的扩展性。• 对后端服务器要求低:后端服务器只需配置与负载均衡器在同一物理网段的IP地址,无需进行复杂的网络配置,兼容性好,可方便地添加或替换后端服务器。• 响应速度快:请求直接到达后端服务器,响应数据可以直接返回给客户端,无需经过负载均衡器再次转发,缩短了响应时间,提高了用户体验。

5 LVS调度算法(主要掌握标红即可)

当Director收到来自客户端计算机访问她的VIP上的集群服务的入站请求时,Director必须决定那个集 群节点应该获得请求。Director可用于做出该决定的调度方法分成两个基本类别:

固定调度算法:rr,wrr,dh,sh

动态调度算法:lc,wlc,lblc,lblcr,SED,NQ(后两种官方站点没提到)

算法说明
rr轮循调度(Round-Robin),它将请求依次分配不同的RS,也就是在RS中均摊请求。这种 算法简单,但是只适合于处理性能相差不大的情况
wrr加权轮循调度(Weighted Round-Robin)它将依据不同RS的权值分配任务。权值较高的 RS将优先获得任务,并且分配到的连接数将比权值较低的RS更多。相同权值的RS得到相 同数目的连接数。
lc最小连接数调度(Least-Connection),IPVS表存储了所有的活动的连接。把心的连接请 求发送到当前连接数最小的RS。
wlc加权最小连接数调度(weighted leastconnection)假设各台RS的权值依次为wi (i=1..n),当前的TCP连接数依次为Ti(i=1..n),依次选取Ti/Wi为最小的RS作为下一个 分配的RS。

二、LVS-DR集群服务搭建

1.对real server 配置

1)下载nginx安装包,并写测试页面,启动服务

2)配置VIP

(1)命令格式
nmcli connection add type dummy ifname dummy1 ipv4.method manual ipv4.addresses 10.0.0.70/32  ####2台rs服务器相同操作或者采用子接口方式配置VIPifconfig eth160:70 192.168.63.70 netmask 
255.255.255.255 up

3)arp抑制

#1.打开下面配置文件
vi /etc/sysctl.conf
#2.添加arp抑制
net.ipv4.conf.all.arp_ignore = 1 
net.ipv4.conf.all.arp_announce = 2 
net.ipv4.conf.dummy1.arp_ignore = 1 
net.ipv4.conf.dummy1.arp_announce = 2 
#3. 重载配置文件
sysctl -p 

(2)脚本配置
#!/bin/sh## Startup script handle the initialisation of LVS# chkconfig: - 28 72# description: Initialise the Linux Virtual Server for DR#### BEGIN INIT INFO# Provides: ipvsadm# Required-Start: $local_fs $network $named# Required-Stop: $local_fs $remote_fs $network# Short-Description: Initialise the Linux Virtual Server# Description: The Linux Virtual Server is a highly scalable and highly#   available server built on a cluster of real servers, with the load#   balancer running on Linux.# description: start LVS of DR-RIPLOCK=/var/lock/ipvsadm.lockVIP=192.168.95.70. /etc/rc.d/init.d/functionsstart() {PID=`ifconfig | grep lo:10 | wc -l`if [ $PID -ne 0 ];thenecho "The LVS-DR-RIP Server is already running !"else/sbin/ifconfig ens160s:70 $VIP netmask 255.255.255.255 broadcast $VIP up/sbin/route add -host $VIP dev ens160s:70echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "1" >/proc/sys/net/ipv4/conf/eth0/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/eth0/arp_announceecho "1" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/all/arp_announce/bin/touch $LOCKecho "starting LVS-DR-RIP server is ok !"fi}stop() {/sbin/route del -host $VIP dev lo:10/sbin/ifconfig lo:10 down  >/dev/nullecho "0" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/eth0/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/eth0/arp_announceecho "0" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/all/arp_announcerm -rf $LOCKecho "stopping LVS-DR-RIP server is ok !"}status() {if [ -e $LOCK ];thenecho "The LVS-DR-RIP Server is already running !"elseecho "The LVS-DR-RIP Server is not running !"fi}case "$1" instart)start;;stop)stop;;restart)stopstart;;status)status;;*)echo "Usage: $1 {start|stop|restart|status}"exit 1esacexit 0

2.对direct server配置

1)行配置添加LVS服务并增加两台RS

再操作前要先安装ipvsadm服务

(1)命令配置
 [root@localhost ~]# ipvsadm -A -t 192.168.63.70:80 -s rr  #配置VIP[root@localhost ~]# ipvsadm -a -t 192.168.63.70:80 -r 192.168.63.11:80 -g -w 1 [root@localhost ~]# ipvsadm -a -t 192.168.63.70:80 -r 192.168.63.12:80 -g -w 1###添加两台RS          [删除方法]# ipvsadm -D -t 192.168.63.70:80 -s wrr# ipvsadm -d -t 192.168.63.70:80 -r 192.168.63.11:80
[root@localhost ~]# ipvsadm –help-A  添加虚拟服务器-t  设置群集地址(VIP,Virtual IP)-s  指定负载调度算法-a  添加真实服务器-d  删除真实服务器-r  指定真实服务器(Real Server)的地址-m  使用NAT模式;-g、-i分别对应DR、TUN模式-w  为节点服务器设置权重,默认为1
(2)脚本配置
lvs director 上的脚本
=================================================================#!/bin/sh## Startup script handle the initialisation of LVS# chkconfig: - 28 72# description: Initialise the Linux Virtual Server for DR#### BEGIN INIT INFO# Provides: ipvsadm# Required-Start: $local_fs $network $named# Required-Stop: $local_fs $remote_fs $network# Short-Description: Initialise the Linux Virtual Server# Description: The Linux Virtual Server is a highly scalable and highly#   
available server built on a cluster of real servers, with the load#   
balancer running on Linux.# description: start LVS of DRLOCK=/var/lock/ipvsadm.lockVIP=192.168.63.70RIP1=192.168.63.11RIP2=192.168.63.12
DipName=ens160. /etc/rc.d/init.d/functionsstart() {PID=`ipvsadm -Ln | grep ${VIP} | wc -l`if   [ $PID -gt 0 ];thenecho "The LVS-DR Server is already running !"else#Set the Virtual IP Address/sbin/ifconfig ${DipName}:70 $VIP broadcast $VIP netmask 
255.255.255.255 up   /sbin/route add -host $VIP dev ${DipName}:70  #基于子接口方式配置VIP#Clear IPVS Table/sbin/ipvsadm -C#Set Lvs/sbin/ipvsadm -At $VIP:80 -s rr /sbin/ipvsadm -at $VIP:80 -r $RIP1:80 -g/sbin/ipvsadm -at $VIP:80 -r $RIP2:80 -g/bin/touch $LOCK#Run Lvsecho "starting LVS-DR Server is ok !"       fi}stop()    {                                   #停止LVS集群服务#clear Lvs and vip /sbin/ipvsadm -C/sbin/route del -host $VIP dev ${DipName}:70/sbin/ifconfig ${DipName}:10 down >/dev/nullrm -rf $LOCKecho "stopping LVS-DR server is ok !"}status() {if [ -e $LOCK ];thenecho "The LVS-DR Server is already running !"elseecho "The LVS-DR Server is not running !"fi}case "$1" instart)start;;stop)stop;;restart)stopstart;;status)status;;*)echo "Usage: $1 {start|stop|restart|status}"exit 1esacexit 0======================================================

2)查看ipvsadm配置

# ipvsadm -L -n

三、测试

1)上面是没关防火墙和seliunx前的测试


http://www.ppmy.cn/server/167467.html

相关文章

string

string 概念 string 字符串其实是一种更加高级的封装,string字符串中包含大量的方法, 这些方法使得字符串的操作变得更加简单。 C中将字符串直接作为一种类型,也就是string类型,使用string类型创建的 对象就是C的字符串。 使用C中提供的string是,必须添加头文件string。 st…

本地大模型编程实战(11)与外部工具交互(2)

文章目录 准备定义工具方法创建提示词生成工具方法实参以 json 格式返回实参自定义 JsonOutputParser返回 json 调用工具方法定义通用方法用 链 返回结果返回结果中包含工具输入 总结代码 在使用 LLM(大语言模型) 时,经常需要调用一些自定义的工具方法完成特定的任务…

【大语言模型】最新ChatGPT、DeepSeek等大语言模型助力高效办公、论文与项目撰写、数据分析、机器学习与深度学习建模等科研应用

ChatGPT、DeepSeek等大语言模型助力科研应用 随着人工智能技术的快速发展,大语言模型如ChatGPT和DeepSeek在科研领域的应用正在为科研人员提供强大的支持。这些模型通过深度学习和大规模语料库训练,能够帮助科研人员高效地筛选文献、生成论文内容、进行数…

【工业场景】用YOLOv8实现烟雾识别

烟雾识别任务的应用场景主要主要体现在以下几个方面: 火灾预警:烟雾是火灾的早期信号,通过烟雾识别技术可以及时发现火灾并及时采取应急措施,减少火灾对人员和财产的损失。 工业安全监测:在工业生产过程中,烟雾可能是一些危险化学品泄露或燃烧产生的,通过烟雾识别可以实…

大模型被偷家?CNN结合多模态!

2025深度学习发论文&模型涨点之—— CNN多模态 卷积神经网络是一种特殊类型的神经网络,其主要结构包括卷积层、池化层、全连接层和输出层。卷积层通过卷积操作学习图像的特征,池化层通过下采样操作减少参数数量,全连接层和输出层通过分类…

DeepSeek服务器繁忙之谜:原因与解决方案

文章来源于百家号:GPU服务器厂家 DeepSeek,作为一款备受欢迎的人工智能平台,凭借其强大的功能和免费开放的策略,吸引了大量普通用户和开发者。然而,许多用户在使用过程中经常遇到“服务器繁忙,请稍后再试”…

IPC 共享通俗讲解及其安全风险

IPC 共享,指的是进程间通信(IPC,Inter-Process Communication)中的数据共享方式。简单来说,它允许多个进程(程序)相互交换信息或共享数据。 为什么需要 IPC 共享? 在计算机中&#…

深度学习-利用预训练的 ResNet 和 DenseNet 模型进行医学影像诊断

下面将分别展示基于 PyTorch 框架,利用预训练的 ResNet 和 DenseNet 模型进行医学影像诊断以提高准确率的代码实现。以肺炎 X 光影像诊断为例,假设数据集已经按照训练集和测试集划分好,每个类别存放在不同文件夹中。 1. 安装必要的库 pip i…