小阿轩yx-LVS负载均衡群集

小阿轩yx-LVS负载均衡群集

  • 构建群集服务器—通过整合多台服务器
  • 使用 LVS 达到服务器的高可用和负载均衡
  • 并以同一个 IP 地址对外提供相同的服务

LVS 群集应用基础

  • 群集称呼来自英文单词“Cluster”
  • 在服务器领域则表示大量服务器的集合体,区分单个服务器

Cluster

  • 表示一群、一串的意思

LVS 群集技术概述

  • 根据企业环境不同
  • 群集提供的功能也不同
  • 采用的技术细节也不同
群集的三种类型

每种群集都至少包含两台服务器,对外表现为一个整体,只提供一个访问入口

负载均衡群集(Load Balance Cluster)

  • 提高应用系统的响应能力
  • 尽可能处理更多的访问请求
  • 减少延迟为目标
  • 获得高并发、高负载的整体性能

高可用群集(High Availability Cluster)

  • 提高应用系统的可靠性
  • 尽可能地减少中断时间为目标
  • 确保服务的连续性
  • 达到高可用(HA)的容错效果

高性能运算群集(High Performance Computer Cluster)

  • 提高应用系统的 CPU运算速度、扩展硬件资源和分析能力为目标
  • 获得相当于大型、超级计算机的高性能运算(HPC)能力

不同类型的群集在必要时可以合并,如高可用的负载均衡群集

负载均衡的分层结构

典型的负载均衡群集中包括三个层次的组件

  • 前端至少有一个负载调度器(Load Balancer,或称为 Director)负责响应并分发来自客户机的访问请求
  • 后端由大量真实服务器(Real Server)构成服务器池(Server Poo1),提供实际的应用服务,整个群集的伸缩性通过增加、删除服务器节点来完成

第一层,负载调度器

  • 这是访问整个群集系统的唯一入口
  • 对外使用所有服务器共有的 VIP(Virtual IP,虚拟 IP)地址,也称为群集 IP 地址

第二层,服务器池

  • 群集所提供的应用服务(如HTTP、FTP)由服务器池承担,每个节点具有独立的RIP(Real IP,真实 IP)地址,只处理调度器分发过来的客户机请求
  • 当某个节点暂时失效时,负载调度器的容错机制会将其隔离,等待错误排除以后再重新纳入服务器池

第三层,共享存储

  • 为服务器池中的所有节点提供稳定、一致的文件存取服务,确保整个群集的统一性。
  • Linux/UNIX 环境中,共享存储可以使用 NAS 设备,或者提供 NFS(Network File System,网络文件系统)共享服务的专用服务器
负载均衡的工作模式
  • 群集的负载调度技术,可以基于 IP、端口、内容等进行分发
  • 其中基于 IP 的负载调度是效率最高的

基于IP的负载均衡模式中,常见的三种工作模式有

  • 地址转换
  • IP 隧道
  • 直接路由

地址转换(Network Address Translation)

  • 简称 NAT 模式
  • 类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,即作为客户机的访问入口,也是各节点回应客户机的访问出口。
  • 服务器节点使用私有IP地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式。

IP 隧道(IP Tunnel)

  • 简称 TUN 模式
  • 采用开放式的网络结构,
  • 负载调度器仅作为客户机的访问入口,各节点通过各自的 Internet 连接直接回应客户机,而不再经过负载调度器。
  • 服务器节点分散在互联网中的不同位置,具有独立的公网IP地址,通过专用 IP隧道与负载调度器相互通信。

直接路由(Direct Routing)

  • 简称 DR 模式
  • 采用半开放式的网络结构,与 TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络。
  • 负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道。

NAT方式只需要一个公网 IP地址,从而成为最易用的一种负载均衡模式,许多硬件负载均衡设备就采用这种方式

优势

  • 安全性也比较好

相比较而言DR 模式和 TUN 模式

优势

  • 负载能力更加强大
  • 适用范围更广

缺点

  • 节点的安全性稍差一些

LVS 虚拟服务器

Linux Virtual Server

  • 是针对Linux 内核开发的一个负载均衡项目
  • 由我国的章文嵩博士在 1998年5月创建
  • 官方站点位于 http://www.linuxvirtualserver.org/
  • LVS 实际上相当于基于 IP地址的虚拟化应用
  • 为基于 IP地址和内容请求分发的负载均衡提出了一种高效的解决方法
  • LVS 现在已成为 Linux 内核的一部分
  • 默认编译为 ip_vs 模块
  • 必要时能够自动调用
LVS 的负载调度算法
  • 针对不同网络服务和配置,LVS 调度器提供多种不同的负载调度算法

最常用的四种算法

  • 轮询
  • 加权轮询
  • 最少连接
  • 加权最少连接

轮询(RoundRobin)

  • 将收到的访问请求按照顺序轮流分配给群集中的各节点,均等地对待每台服务器,而不管服务器实际的连接数和系统负载。

加权轮询(Weighted Round Robin)

  • 根据调度器设置的权重值来分发请求,权重值高的节点优先获得任务并且分配的请求越多,这样可以保证性能高的节点承担更多请求。

最少连接(Least Connections)

  • 根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点。如果所有的服务器节点性能相近,采用这种方式可以更好地均衡负载。

加权最少连接(Weighted Least Connections)

  • 在服务器节点的性能差异较大的情况下,调度器可以根据节点服务器负载自动调整权重,权重较高的节点将承担更大比例的活动连接负载。
使用 ipvsadm 管理工具

ipvsadm 是在负载调度器上使用的 LVS 群集管理工具,通过调用 ip_vs 模块来添加、删除服务器节点,以及查看群集的运行状态。

构建 LVS 负载均衡群集
地址转换模式(LVS-NAT)

实验环境

各web节点需要设置网关,NFS不需要

CentOS 系统,手动加载 ip_vs 模块并查看信息

//加载 ip_vs模块
[root@localhost ~]# modprobe ip_vs
//查看 ip_vs 版本信息
[root@localhost ~]# cat /proc/net/ip_vs
IP Virtual Server version 1.2.1(size=4096)
Prot LocalAddress:Port Scheduler Flags
    ->RemoteAddress:Port Forward Weight ActiveConn InActConn

配置负载调度器

[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl stop firewalld

安装 ipvsadm

[root@localhost ~]# yum -y install ipvsadm

查看 ipvsadm 版本

[root@localhost ~]# ipvsadm -v
ipvsadm v1.27 2008/5/15 (compiled with popt and IPVS v1.2.1)

添加配置文件

[root@localhost ~]# vim /etc/sysctl.conf 
## 添加下面代码
net.ipv4.ip_forward = 1

语句生效

[root@localhost ~]# sysctl -p

配置新策略

[root@localhost ~]# ipvsadm -C

创建虚拟服务器

[root@localhost ~]# ipvsadm -A -t 172.16.16.172:80 -s rr

添加服务器节点

[root@localhost ~]# ipvsadm -a -t 172.16.16.172:80 -r 192.168.10.102:80 -m -w 1
[root@localhost ~]# ipvsadm -a -t 172.16.16.172:80 -r 192.168.10.103:80 -m -w 1

查看当前策略信息

[root@localhost ~]# ipvsadm-save
-A -t localhost.localdomain:http -s rr
-a -t localhost.localdomain:http -r 192.168.10.102:http -m -w 1
-a -t localhost.localdomain:http -r 192.168.10.103:http -m -w 1

-s:指定调度算法

  • rr:轮询

  • wrr:加权轮询

  • lc:最小链接数

  • wlc:加权最小连接数

  • -A    添加一个新的集群服务;

  • -E    修改一个己有的集群服务;

  • -D    删除指定的集群服务;

  • -a    向指定的集群服务中添加RS及属性;

  • -e    修改RS属性;

  • -t    指定为tcp协议;

  • -u    指定为udp协议;

  • -s    调度方法,默认为wlc;

  • -w    指定权重,默认为1;

  • -g    Gateway, DR模型;

  • -i    ipip, TUN模型;

  • -m    masquerade, NAT模型;

  • -S    保存ipvsadm设定的规则策略,默认保存在/etc/sysconfig/ipvsadm中;

  • -R    载入己保存的规则策略,默认加载/etc/sysconfig/ipvsadm;

  • -C    清除所有集群服务;

  • -Z    清除所有记数器;

  • -L    显示当前己有集群服务,能通过相应的options查看不同状态信息;

  • -r          指定真实服务器的地址

启动 ipvsadm

[root@localhost ~]# systemctl enable ipvsadm

配置 web 节点服务器

在两个 web 节点上安装 httpd

[root@localhost ~]# yum -y install httpd
[root@localhost ~]# systemctl stop firewalld 
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum -y install nfs-utils

 创建测试页

[root@localhost ~]# vim /var/www/html/index.html
LVS test1

启动 httpd 服务

[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd

客户端测试 LVS 群集

[root@localhost ~]# curl 172.16.16.172

在 LVS 上产看调度信息

[root@localhost ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.16.172:80 rr
  -> 192.168.10.102:80              Masq    1      0          0         
  -> 192.168.10.103:80              Masq    1      0          0 
  • ActiveConn是活动连接数,也就是tcp连接状态的ESTABLISHED

  • InActConn是指除了ESTABLISHED以外的,所有的其它状态的tcp连接

linux 做客户端时可以用以下代码进行测试

[root@localhost ~]# for i in $(seq 10);do curl 172.16.16.172;done

 NFS 共享存储服务

NFS

  • 是一种基于 TCP/IP 传输的网络文件系统协议
  • 最初由 Sun 公司开发
  • 通过使用 NFS协议,客户机可以访问远程服务器中的共享资源
  • 对于大多数负载均衡群集来说,使用 NFS协议来共享数据存储是比较常见的做法
  • NFS也是NAS存储设备必然支持的一种协议
使用 NFS 发布共享资源
  • NFS 服务的实现依赖于 RPC(Remote Process Call,远端过程调用)机制
  • 以完成远程到本地的映射过程

CentOS7系统中,需要安装软件包提供 NFS共享服务

  • nfs-utils
  • rpcbind

前者用于 NFS 共享发布和访问

后者用于RPC支持

安装 nfs-utils、rpcbind 软件包

[root@localhost ~]# systemctl stop firewalld 
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum -y install nfs-utils rpcbind
[root@localhost ~]# systemctl enable nfs
[root@localhost ~]# systemctl enable rpcbind

设置共享目录

[root@localhost ~]# mkdir -p /opt/wwwroot
[root@localhost ~]# vi /etc/exports
/opt/wwwroot   192.168.10.0/24(rw,sync,no_root_squash)

可以同时发布多个目录,并且可以为不同的客户端设置不同的访问权限

  • rw 可读写的权限 
  • ro 只读的权限 
  • no_root_squash 登入NFS主机,使用该共享目录时相当于该目录的拥有者,如果是root的话,那么对于这个共享的目录来说,他就具有root的权限,这个参数极不安全,不建议使用
  • root_squash 登入NFS主机,使用该共享目录时相当于该目录的拥有者。但是如果是以root身份使用这个共享目录的时候,那么这个使用者(root)的权限将被压缩成为匿名使用者,即通常他的UID与GID都会变成nobody那个身份
  • all_squash 不论登入NFS的使用者身份为何,他的身份都会被压缩成为匿名使用者,通常也就是nobody
  • sync 资料同步写入到内存与硬盘当中 
  • async 资料会先暂存于内存当中,而非直接写入硬盘 
  • insecure 允许从这台机器过来的非授权访问

启动 NFS 服务程序

[root@localhost ~]# systemctl start rpcbind
[root@localhost ~]# systemctl start nfs
[root@localhost ~]# netstat -anpt | grep rpc
tcp        0      0 0.0.0.0:20048     0.0.0.0:*               LISTEN      44153/rpc.mountd    
tcp        0      0 0.0.0.0:50661     0.0.0.0:*               LISTEN      7511/rpc.statd      
tcp6       0      0 :::20048          :::*                    LISTEN      44153/rpc.mountd    
tcp6       0      0 :::54742          :::*                    LISTEN      7511/rpc.statd

查看本机发布的 NFS 共享目录

[root@localhost ~]# showmount -e
Export list for localhost.localdomain:
/opt/wwwroot 192.168.7.0/24
/var/ftp/pub 192.168.10.173,192.168.7.172

在客户机中访问 NFS 共享资源

  • NFS 协议的目标是提供一种网络文件系统
  • 对 NFS 共享的访问使用 mount 命令来进行挂载,对应的文件系统类型为nfs
  • 既可以手动挂载,也可以加入/etc/fstab 配置文件来实现开机自动挂载
  • 考虑到群集系统中的网络稳定性,NFS服务器与客户机之间最好使用专有网络进行连接

安装 rpcbind 软件包,并启动 rpcbind 服务

[root@localhost ~]# yum -y install rpcbind nfs-utils
[root@localhost ~]# systemctl enable rpcbind
[root@localhost ~]# systemctl start rpcbind

手动在 web 节点挂载 nfs

[root@localhost ~]# mount -t nfs 192.168.10.105:/opt/wwwroot /var/www/html

在 nfs 上创建测试网页

[root@localhost ~]# vim /var/www/html/index.html
LVS test

linux做客户端时可以用一下代码进行测试

[root@localhost ~]# for i in $(seq 10);do curl 172.16.16.172;done

小阿轩yx-LVS负载均衡群集

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PLC边缘网关在实际应用中的作用-天拓四方

随着工业自动化的快速发展,PLC已成为工业自动化领域中不可或缺的核心设备。然而,随着工业物联网的兴起,PLC设备面临着数据集成、远程监控以及安全性等方面的挑战。为了解决这些问题,PLC边缘网关应运而生,它作为连接PLC…

[go-zero] goctl 生成api和rpc

文章目录 1.goctl 概述2.go-zero 需要安装的组件3.生成 api4.生成 rpc 1.goctl 概述 goctl支持多种rpc,较为流行的是google开源的grpc,这里主要介绍goctl rpc protoc的代码生成与使用。protoc是grpc的命令,作用是将proto buffer文件转化为相…

《梦醒蝶飞:释放Excel函数与公式的力量》8.3 COUNTBLANK函数

8.3 COUNTBLANK函数 在数据处理和分析中,我们经常需要识别和统计数据集中的空白单元格。COUNTBLANK函数是Excel中用于统计某个范围内空白单元格数量的强大工具。 8.3.1 函数简介 COUNTBLANK函数用于统计指定范围内的空白单元格数量。这在数据清洗、数据完整性检查…

头条系统-05-延迟队列精准发布文章-概述添加任务(db和redis实现延迟任务)、取消拉取任务定时刷新(redis管道、分布式锁setNx)...

文章目录 延迟任务精准发布文章 1)文章定时发布2)延迟任务概述 2.1)什么是延迟任务2.2)技术对比 2.2.1)DelayQueue2.2.2)RabbitMQ实现延迟任务2.2.3)redis实现 3)redis实现延迟任务4)延迟任务服务实现 4.1)搭建heima-leadnews-schedule模块4.2)数据库准备4.3)安装redis4.4)项目…

【OpenSSH】立即检测 OpenSSH 的 regreSSHion 漏洞

OpenSSH regreSSHion 漏洞简介 OpenSSH 是一种广泛使用的网络协议,提供加密的数据通信和远程登录功能。然而,最近发现的一个漏洞(CVE-2024-6387),被称为 regreSSHion,使得未经身份验证的攻击者能够在 Linu…

Android触摸事件分发关键点【笔记摘要】

触摸事件分发:就是一个为了解决触摸事件冲突而设置的机制 1.事件类型 ACTION_DOWN -> ACTION_UP / ACTION_CANCEL ACTION_DOWN -> ACTION_MOVE -> ACTION_MOVE -> ACTION_MOVE -> ACTION_UP / ACTION_CANCEL 这个取消事件ACTION_CANCEL它是一种特殊…

基于物品的协同过滤算法

预估用过户对候选物品的兴趣 计算物品相似度 召回通道 快速做召回条件

iPhone苹果手机怎么取消腾讯视频VIP会员自动续费?

腾讯视频会员分为VIP(同时在线设备5台、同时播放设备2台;)和SVIP(同时在线设备8台、同时播放设备3台;),在iPhone苹果手机上开通腾讯视频连续包月、包季、包年后,需要手动取消才能关闭…

UE4_材质_材质节点_DepthFade

一、DepthFade参数 DepthFade(深度消退)表达式用来隐藏半透明对象与不透明对象相交时出现的不美观接缝。 项目说明属性消退距离(Fade Distance)这是应该发生消退的全局空间距离。未连接 FadeDistance(FadeDistance&a…

被⽹络罪犯利⽤的5⼤ChatGPT越狱提⽰

⾃ChatGPT发布的近18个月以来,⽹络罪犯们已经能够利⽤⽣成式AI进⾏攻击。OpenAI在其内容政策中制定了限制措施,以阻⽌⽣成恶意内容。作为回应,攻击者们创建了⾃⼰的⽣成式AI平台,如 WormGPT和FraudGPT,并且他们还分享了…

Ubuntu22.04上Docker的安装

1. 使用APT安装 首先安装HTTPS传输的软件包和CA证书,确保软件下载过程中不被篡改。 sudo apt-get updatesudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release -y然后,使用国内源,并添加软件源的 GPG 密钥以防…

删除keil!VSvode+eide+jlink(stlink)配置keil工程,调试使用cortex-debug+openocd

文章目录 目的前期准备1.软件安装2.VScode安装3.VScode插件安装4.安装ARM-GCC交叉编译器 工程导入程序编译jlink在线调试部分常见问题更改为GCC 编译器更改为stlinkopencd一些tips调试变量查看构建器选项配置 目的 提示:这里可以添加技术概要 vscode代替keil进行程…

Ozon、美客多补单测评黑科技:打造无懈可击的自养号补单环境

不管哪个跨境平台的风控都会做升级,相对的补单技术也需要进行相应的做升级,风控升级后,自己养号补单需要注意以下技术问题,以确保补单的稳定性和安全性: 一、物理环境 1. 硬件参数伪装:平台已经开始通过I…

择校秘籍:如何找到口碑爆棚的学校?以星贝育园为例

在为孩子选择学校时,家长们总是慎之又慎,希望能找到一所口碑好、教育质量高的学校,为孩子的未来奠定坚实的基础。今天,我们就以星贝育园为例,来探讨一下如何选择口碑好的学校。 一、考察师资力量 优秀的教师团队是一所…

什么是定时器?

前言👀~ 上一章我们介绍了阻塞队列以及生产者消息模式,今天我们来讲讲定时器 定时器 标准库中的定时器 schedule()方法 扫描线程 手动实现定时器 任务类 存储任务的数据结构 定时器类 如果各位对文章的内容感兴趣的话,请点点小赞&am…

帮找Java Bug,面试,项目,解决Java问题

本人是个Java老程序员,如果你有解决不了的问题,或者面试的时候需要人帮助,或者求职就业上任何问题都可以联系我,下面是我微信,欢迎联系我!

【JUC】可重入锁理解

可重入锁(Reentrant Lock),也称作递归锁,是一种特殊的锁机制,它允许同一个线程多次获取同一个锁。 优点是可以避免死锁。 public class WhatReentrant {public static void main(String[] args) {new Thread(new Runn…

Qt——升级系列(Level Eight):界面优化

目录 QSS 背景介绍 基本语法 QSS设置方式 指定控件样式设置 全局样式设置 从文件加载样式表 使用Qt Designer 编辑样式 选择器 选择器概况 子控件选择器 伪类选择器 样式属性 盒模型 控件样式示例 按钮 复选框、单选框 输入框 列表 菜单栏 登录界面 绘图 基本概念 绘制各种形…

【Kali-linux for WSL】图形化界面安装

文章目录 前言图形化界面安装 前言 之前在WSL中安装了Kali 启动之后发现什么都没有!!! 那我还怎么学习渗透技术??? 看来,得改进下我的kali-linux for wsl,安装个图形化界面 图形化…

Jetson系列机载电脑创建热点模式配置方法

Jetson nano为例—— 创建热点模式配置方法 1.1、新建一个 WiFi 在屏幕右上角找到网络图标,点击后选择“Edit Connections”选项,进入选择网络连接页面,然后点击左下角加号,新建一个连接,类型选择 WiFi 后点击 “cre…