小阿轩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负载均衡群集

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

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

相关文章

创新驱动,智享未来:电动车仪表盘之蓝牙芯方案

电动车行业不断发展的浪潮中,我们自豪地推出引领时代的电动车仪表盘蓝牙芯方案,为您的骑行之旅带来前所未有的智能与便捷。 精准掌控,一目了然 我们的蓝牙芯方案搭载了高性能BLE 5.0蓝牙芯片-HS6621CG-C 内核ARM Cortex-M4F, max 64MHZ,SRAM…

Operations Research课程之带约束的非线性规划(凸分析|Lagrange松弛|Lagrange对偶|KKT条件)

目录 1.凸分析 1.1 为什么需要凸分析 1.2 凸分析相关概念 1.3 凸规划定义 1.4 单变量NLP凸分析 1.5 多变量NLP凸分析 2.拉格朗日松弛 2.1 拉格朗日函数 2.2 拉格朗日对偶 2.2.1 弱对偶性 2.2.2 凸性 2.2.3 强对偶性 2.2.4 与LP对偶关系 3.KKT条件 3.1 KKT介绍…

Redis 管道(Pipeline)是什么?有什么用?

目录 1. redis 客户端-服务端模型的不足之处 2. redis 管道是什么?有什么好处? 3. 管道的使用场景 4. 管道使用的注意事项 1. redis 客户端-服务端模型的不足之处 众所周知,redis 是一个客户端-服务端的模型设计,客户端向服务…

Qt的信号与槽机制底层原理

Qt的信号与槽机制是Qt框架的核心特性之一,它允许对象之间进行解耦通信。信号(Signal)是一个类成员函数,当特定事件发生时,信号会被自动触发。槽(Slot)也是一个类成员函数,它可以被信…

上海网站建设如何做

上海是中国最繁华的城市之一,作为全国的经济、文化和科技中心,网站建设在上海变得越来越重要。如何做好上海网站建设,让网站更加吸引人,成为企业和个人宣传自身的重要平台呢? 首先,要有清晰的定位和目标。在…

SCI一区级 | Matlab实现BO-Transformer-BiLSTM时间序列预测

SCI一区级 | Matlab实现BO-Transformer-BiLSTM时间序列预测 目录 SCI一区级 | Matlab实现BO-Transformer-BiLSTM时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.【SCI一区级】Matlab实现BO-Transformer-BiLSTM时间序列预测,贝叶斯优化Transfor…

Zoom视颊会议软件使用

GPT-3.5 (OpenAI) Zoom是一款极受欢迎的视频会议软件。使用Zoom可以方便地进行视频会议、远程授课、在线研讨会等活动。以下是Zoom的使用步骤: 1. 下载Zoom客户端 可以在Zoom官网上下载对应平台的Zoom客户端。下载并完成安装后,双击打开客户端。 2. 创建…

【AI】ChatTTS实现文本转语音

最近有时间继续研究一下各种有趣的开源项目,一个叫ChatTTS的项目吸引了我的注意,这个项目可以把文本转换成语音,配合gpt生成文本,可以直接用于生产有声书作品了,这可以说是直接的生产力项目了。 项目对显存的要求不高&…

el-table 树状表格查询符合条件的数据

需要对el-table的树状表格根据输入机构名称&#xff0c;筛选出符合条件的数据&#xff0c;可用如下方法&#xff1a; 页面内容如下&#xff1a; <el-input v-model"ogeName" placeholder"请输入机构名称"><el-table :data"list" row…

Git 操作补充:cherry-pick、变基

1. 挑选提交合并 git cherry-pick 对于多分支的代码库&#xff0c;将代码从一个分支转移到另一个分支是一种常见的需求&#xff0c;这可以分成两种情况&#xff1a;一种情况是&#xff0c;你需要另一个分支的所有代码变动&#xff0c;那么就采用 git merge&#xff1b;另一种情…

如何准确测量 Android 应用中 Activity 和 Fragment 的启动时间

如何准确测量 Android 应用中 Activity 和 Fragment 的启动时间 在 Android 应用开发中&#xff0c;了解每个 Activity 和 Fragment 的启动时间对于性能优化至关重要。本文将介绍几种方法来准确测量 Activity 和 Fragment 的启动时间&#xff0c;并提供实际操作步骤&#xff0…

Spark SQL----内置函数JSON Functions

Spark SQL----内置函数JSON Functions JSON Functions 例子&#xff1a; -- from_json SELECT from_json({"a":1, "b":0.8}, a INT, b DOUBLE); --------------------------- |from_json({"a":1, "b":0.8})| -----------------------…

c++之auto

auto auto与for结合begin(),end()说明 auto c11标准引入auto类型说明符必须有初始值通过初始值来推断变量的类型 #include<cstdio> using namespace std; int main(){int v1 10;auto v2 v1;printf("v2%d\n",v2);double v310.5;auto v4 v3;printf("v4…

SF-HCI-SAP问题收集17:值映射布尔型EC数据

Complacency is the enemy of study 学习的敌人是自己的满足。 SAP SuccessFactors Employee Central 到 SAP ERP 的员工主数据复制 successfactor employee center主数据同步&#xff0c;一直以来排错比较难&#xff0c;难的地方是这个提示消息比较隐晦&#xff0c;而且同步的…

数据结构与算法学习(1)

#学习自用# 算法性能分析 时间复杂度O() 时间复杂度就是算法计算的次数。 for(int i0;i<n;i) {ans; } ans; 这串代码时间复杂度为O(n)&#xff0c;实际时间复杂度为O(n1)。如果把i改为i2&#xff0c;时间复杂度仍然为为O(n)&#xff0c;实际时间复杂度变为O(n/2 1)。时…

云原生技术架构详解

云原生技术最全详解(图文全面总结) 容器技术 容器技术&#xff1a;是将应用程序、及其所有依赖项&#xff0c;打包到一个独立的、可移植的容器中。 如下图所示: 容器技术的实现&#xff0c;最典型的就是以Docker为代表的。 如下图所示&#xff1a; 主要解决&#xff1a; 1、…

AI常见名词盘点(持续更新)

目录 知识库 知识库的定义 知识库的分类 AI知识库的特点 小结 Embedding 向量化表示 维度降低 语义关系 小结 提示词工程&#xff08;Prompt Engineering&#xff09; 定义 目的与应用 关键性质 工程化思想 应用示例 小结 RAG 检索增强生成 定义与重要性 RA…

Ubuntu设置nacos开机以单机模式自启动

首先&#xff0c;需要安装jdk Ubuntu 安装JDK 创建Systemd服务单元文件 sudo vim /etc/systemd/system/nacos.service按i进入编辑模式&#xff0c;写入下面信息 [Unit] Descriptionnacos server Afternetwork.target[Service] Typeforking Environment"JAVA_HOME/opt/j…

Java8 - Optional 处理可能为空值的容器类

1. 创建一个 Optional 对象 Optional.of、Optional.ofNullable 、Optional.empty是Optional类的三个静态方法&#xff0c;用于创建Optional对象。 1. Optional.of 方法 Optional.of 方法用于创建一个包含非空值的Optional对象&#xff0c;如果传入的值为null&#xff0c;则会…

Kafka集群安装部署

简介 Kafka是一款分布式的、去中心化的、高吞吐低延迟、订阅模式的消息队列系统。 同RabbitMQ一样&#xff0c;Kafka也是消息队列。不过RabbitMQ多用于后端系统&#xff0c;因其更加专注于消息的延迟和容错。 Kafka多用于大数据体系&#xff0c;因其更加专注于数据的吞吐能力…