LVS负载均衡群集及相关服务详解

在各种互联网应用中,随着站点对硬件性能、响应速度、服务稳定性、数据可靠性等要求越来越高,单台服务器将难以承担所有的访问。除了使用价格昂贵的大型机、专用负载分流设备以外,企业中还有另外一种选择来解决难题,就是构建群集服务器——通过整个多台相对廉价的普通服务器,以同一个地址提供相同的服务。

在Linux系统中,有一种非常常用的群集技术——LVS(Linux Virtual Server,Linux虚拟服务器)。

博文大纲:
一、群集技术概述;
二、LVS虚拟服务器详解;
三、NFS共享存储服务详解;

LVS群集应用基础

群集:表示一群、一串的意思,用在服务器领域则表示大量服务器的集合体,以区分于单个服务器。

一、群集技术概述

根据实际企业环境的不同,群集所提供的功能也各不相同,采用的技术细节也可能各有千秋。然而从整体上来看,需要先了解一些关于群集的共性特征,这样才能在构建和维护群集的工作中做到心中有数,避免操作上的盲目性。

1.群集的类型

无论是哪种群集,都至少包括两台节点服务器,而对外表现为一个整体,只提供一个访问入口(域名或IP地址),相当于一台大型计算机。

根据群集所针对的目标差异,可分为以下三种类型:

  • 负载均衡群集(Load Balance Cluster):,简称LB,以提高应用系统的响应能力、尽可能处理更多的访问请求,减少延迟为目标,获得高并发、高负载的整体性能。例如:“DNS轮询”、“应用层交换”、“反向代理”等都可用作负载均衡群集。LB的负载分配依懒于主节点的分流算法,将来自客户机的访问请求分担给多个服务器节点,从而缓解整个系统的负载压力;
  • 高可用群集(High Availability Cluster):简称HA,以提高应用系统的可靠性,尽可能地减少中断时间为目标,确保服务的连续性,达到高可用(HA)的容错效果。例如:“故障切换”、“双机热备”、“多机热备”等属于高可用群集技术。HA的工作方式包括双工和主从两种模式。双工即所有节点同时在线;主从则只有主节点在线,但当出现故障时从节点能自动切换为主节点;
  • 高性能运算群集(High Performance Computer Cluster):简称HPC,以提高应用系统的CPU运算速度,扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算(HPC)能力。例如:“云计算”、“网格计算”也可视为高性能运算的一种。高性能运算群集的高性能依赖于“分布式运算”、“并行计算”,通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力。

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

2.负载均衡的分层结构

在典型负载均衡群集中,包括三个层次的组件,前端至少有一个负载调度器负责相应并分发来自客户机的访问请求;后端由大量真实服务器构成服务器池,提供实际的应用服务,整个群集的伸缩性通过增加、删除服务器节点来完成,而这些过程对客户机是透明的,为了保持服务的一致性,所有节点使用共享存储设备。如图:

图中各层的详细介绍:

  • 第一层,负载调度器: 这是访问整个群集系统的唯一入口,对外使用服务器公有的VIP(虚拟IP)地址,也称为群集IP地址。通常会配置主、备两台调度器实现热备份、当主调度器失效后平滑替换至备用调度器,确保高可用性;
  • 第二层,服务器池:群集所提供的应用服务(如HTTP、FTP)由服务器池承担,其中每个节点具有独立的RIP(真实IP)地址,只处理调度器分发过来的客户机请求。当某个节点暂时失效时,负载调度器的容错机制会将其隔离,等待错误排除以后再重新纳入服务器池;
  • 第三层,共享存储:为服务器池中的所有节点提供稳定、一致的文件存取服务,确保整个群集的统一性。在Linux/UNIX环境中,共享存储可以使用NAS设备,或者提供NFS(网络文件系统)共享服务的专用服务器;

3.负载均衡的工作模式

关于群集的负载调度技术,可以基于IP、端口、内容等进行分发,其中基于IP的负载调度是效率最高的。

基于IP的负载均衡模式中,常见的有:

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

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

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

以上三种工作模式中,NAT方式只需要一个公网IP地址,从而成为最易用的一种负载均衡模式,安全性也比较好,许多硬件负载均衡设备就采用这种方式,相比较而言,DR模式和TUN模式的负载能力更加强大,使用范围更广,但节点的安全性要稍差一些。

二、LVS虚拟服务器详解

Linux Virtual Server是针对Linux内核开发的一个负载均衡的项目,其官方网站是http://www.linuxvirtualserver.org/ 。LVS实际上相当于基于IP地址的虚拟化应用,为基于IP地址和内容请求分发的负载均衡提出了一种高效的解决方法。

LVS现在已成为Linux内核的一部分,默认编译为ip_vs模块,必要时能够自动调用。在Centos 7系统中,手动加载ip_vs模块,可以执行以下命令:

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

1.LVS的负载调度算法

针对不同的网络服务和配置需要,LVS调度器提供了多种不同的负载调度算法,其中最常用的几种算法:

  • 轮询(Round Robin):将收到的访问请求按照顺序轮流分配给群集中的各节点(真实服务器)均等地对待每台服务器,而不管服务器实际的连接数和系统负载;
  • 加权轮询(Weighted Round Robin):根据真实服务器的处理能力轮流分配收到的访问请求,调度器可以自动查询各节点的负载情况,并动态调整其权重。这样可以保证处理能力强的服务器承担更多的访问流量;
  • 最少连接(Least Connections):根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点。如果所有的服务器节点性能相近,采用这种方式可以更好地负载均衡;
  • 加权最少连接(Weighted Least Connections):在服务器节点的性能差异较大的情况下,可以为真实的服务器自动调整权重,权重较高的节点讲承担更大比例的活动连接负载。

2.使用ipvsadm管理工具

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

在CentOS 7系统默认没有安装,需要自行安装!

[[email protected] ~]# yum -y install ipvsadm
[[email protected] ~]# ipvsadm -v
ipvsadm v1.27 2008/5/15 (compiled with popt and IPVS v1.2.1)

ipvsadm命令的操作方法:

[[email protected] ~]# ipvsadm -A -t 192.168.1.254:80 -s rr
//群集的VIP地址是192.168.1.254,针对TCP的80端口提供负载分流服务,使用的调度算法是轮询。

命令中各选项的含义:

  • “-A”表示添加虚拟服务器;
  • “-t”用来制定VIP地址及TCP端口;
  • “-s”用来制定负载调度算法;
    轮询(rr)、加权轮询(wrr)、最少连接(lc)、加权最少连接(wlc)。
[[email protected] ~]# ipvsadm -a -t 192.168.1.254:80 -r 192.168.1.100 -m -w 1
//为虚拟服务器添加一个IP为192.168.1.254的真实服务器

命令中各选项(及相关选项)的含义:

  • -a:添加真实服务器;
  • -t:指定VIP地址及TCP端口;
  • -r:指定RIP地址及TCP端口(端口可以省略);
  • -m:使用NAT群集模式;
  • -g:使用DR群集模式;
  • -i:使用TUN群集模式;
  • -w:设置权重(权重为0时表示暂停节点,默认是1);
[[email protected] ~]# ipvsadm -ln
//查看群集节点状态
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.1.254:80 rr
  -> 192.168.1.100:80             Masq    1      0          0
    //Forward列对应的是Masq(地址伪装),表示采用的群集模式为NAT;
    ActiveConn列:当前连接数;
    InActConn列:正在活动的连接数;
[[email protected] ~]# ipvsadm -d -r 192.168.1.100:80 -t 192.168.1.254:80
//从群集中删除192.168.1.100的节点(-d表示删除)
[[email protected] ~]# ipvsadm -D -t 192.168.1.254:80
//删除192.168.1.254这个VIP(也就意味这个群集就没了)
[[email protected] ~]# ipvsadm-save
//查看设置的策略
[[email protected] ~]# ipvsadm-save > 123.txt
//保存策略到指定文件
[[email protected] ~]# cat 123.txt
-A -t 192.168.1.254:http -s rr
-a -t 192.168.1.254:http -r 192.168.1.100:http -m -w 1
//确认保存文件内容
[[email protected] ~]# ipvsadm -C
//清空所有策略
[[email protected] ~]# ipvsadm-restore < 123.txt
//从指定文件导入策略

三、NFS共享存储服务详解

NFS是一种基于TCP/IP传输的网络文件系统协议。通过使用NFS协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源,对于绝大多数的负载均衡群集来说,使用NFS协议来共享数据存储是非常常见的做法。

1.使用NFS发布共享资源

NFS服务的实现依赖与RPC机制,已完成远程到本地的映射过程。需要安装一下两个软件包才能提供NFS共享服务。

[[email protected] ~]# yum -y install nfs-utils
//用于NFS共享发布和访问
[[email protected] ~]# yum -y install rpcbind
//用于RPC支持

2.设置共享目录

[[email protected] ~]# mkdir /a
[[email protected] ~]# touch /a/123.txt
//创建目录、文件用于测试
[[email protected] ~]# vim /etc/exports
//填写以下内容(NFS服务的配置文件为/etc/exports)
/a      192.168.1.0(rw,sync,no_root_squash)
或者
[[email protected] ~]# vim /etc/exports
//填写以下内容(NFS服务的配置文件为/etc/exports)
/a      192.168.1.1(rw,sync,no_root_squash) 192.168.1.10(ro,sync)

配置文件中

  • (/a)是本地用于共享的目录;
  • IP地址、网段地址,允许使用*、?通配符;
  • rw(读写)、ro(只读)、sync(同步)、no_root_squash(表示当客户机以root身份访问时赋予本地root权限,默认是root_squash,将作为nfsnobody用户降权对待)
[[email protected] ~]# systemctl start nfs
[[email protected] ~]# systemctl start rpcbind
//启动nfs服务、rpcbind服务
[[email protected] ~]# showmount -e
//查看本机发布的共享目录
Export list for localhost.localdomain:
/a 192.168.1.10,192.168.1.1

3.客户机访问测试

[[email protected] ~]# showmount -e 192.168.1.2
//查询NFS服务的发布情况
Export list for 192.168.1.2:
/a 192.168.1.10,192.168.1.1
[[email protected] ~]# mount 192.168.1.2:/a /b
[[email protected] ~]# ls /b
123.txt
//挂载到本地,并查看内容
//如果开启同步权限,有任何变化,NFS服务器和客户端会立马更新内容

4.客户机实现自动挂载

[[email protected] ~]# vim /etc/fstab
               ………………                     //省略部分内容,填写以下内容
192.168.1.2:/a          /b                      nfs     defaults,_netdev        0 0
//_netdev  建议添加次参数,表示需要网络支持;如果想在网络终端的情况下放弃挂载,添加一下参数(soft、intr)实现软挂载

客户机重新启动后,也会自动挂载!!!

———————— 本文至此结束,感谢阅读 ————————

原文地址:https://blog.51cto.com/14157628/2437506

时间: 2024-10-27 12:03:01

LVS负载均衡群集及相关服务详解的相关文章

LVS负载均衡群集(三种工作模式原理详解)

LVS负载均衡群集(三种工作模式原理详解) 一.前言 ? 在互联网应用中,随着站点对硬件性能.响应速度.服务稳定性.数据可靠性等要求越来越高,单台服务器力不从心.所以我们需要通过一些方法来解决这样的瓶颈. ? 最简单的方法就是使用价格昂贵的大.小型的主机:但这样在大多数企业中显然是不可取或者说不现实的.那么我们就需要通过多个普通服务器构建服务器群集. 二.相关概念概述 2.1何为LVS? ? LVS--Linux Virtual Server,即Linux虚拟服务器(虚拟主机.共享主机),虚拟主

Nginx、LVS及HAProxy负载均衡软件的优缺点详解

提升根据不同的阶段来使用不同的技术.具体的应用需求还得具体分析,如果是中小型的Web应用,比如日PV小于1000万,用Nginx就完全可以了:如果机器不少,可以用DNS轮询,LVS所耗费的机器还是比较多的:大型网站或重要的服务,且服务器比较多时,可以考虑用LVS. 一种是通过硬件来进行,常见的硬件有比较昂贵的F5和Array等商用的负载均衡器,它的优点就是有专业的维护团队来对这些服务进行维护.缺点就是花销太大,所以对于规模较小的网络服务来说暂时还没有需要使用:另外一种就是类似于Nginx/LVS

总结)Nginx/LVS/HAProxy负载均衡软件的优缺点详解

总结)Nginx/LVS/HAProxy负载均衡软件的优缺点详解 PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下. 一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术.具体的应用需求还得具体分析,如果是中小型的Web应用,比如日PV小于1000万,用Nginx就完全可以了:如果机器不少,可以用DNS轮询,LVS所耗费的机器还是比较多的:大型网站或重要的服务,且服务器比较多时

LVS负载均衡群集之构建NAT模式,可跟做!!!

有关于LVS负载均衡群集的相关概念可以参考博文:LVS负载均衡群集详解 一.案例概述 LVS负载均衡模式-NAT模式:NAT用法本来是因为网络IP地址不足而把内部保留IP地址通过映射转换成公网地址的一种上网方式(源地址NAT).如果把NAT的过程稍微变化,就可以 成为负载均衡的一种方式.原理其实就是把从客户端发来的IP包的IP头目的地址在DIR上换成其中一台Web节点服务器的IP地址并发至此Web节点服务器,而Web节点服务器则在处理完成后把数据经过DIR主机发回给客户端,DIR在这个时候再把数

LVS负载均衡群集之构建DR模式,可跟做!!!

有关于LVS负载均衡群集的相关概念可以参考博文:LVS负载均衡群集详解 一.案例概述 LVS负载均衡模式-DR模式:lvs负载调度器作为群集的访问入口,但不作为网关使用,服务器池中的所有节点都各自接入internet,发送给客户机(互联网)的web响应数据包不需要经过lvs负载调度器. LVS负载均衡模式-DR模式:优点:负载均衡器只负责将请求包分发给物理服务器,而物理服务器将应答包直接发给用户.所以,负载均衡器能处理很巨大的请求量,这种方式,一台负载均衡能为 超过100台的物理服务器服务,负载

LVS负载均衡群集之DR模式+keepalived群集机构(理论+实践篇)

LVS-DR数据包流向分析 为方便进行原理分析,将Client与群集机器放在同一网络中,数据包流经的路线为1-2-3-4 Client向目标VIP发出请求, Director (负载均衡器)接收 Director根据负载均衡算法选择RealServer 1,不修改也不封装IP报文,而是将数据帧的MAC地址改为RealServer 1的MAC地址,然后在局域网上发送. RealServer_ _1收到这个帧,解封装后发现目标IP与本.机匹配(RealServer事先绑定 了VIP),于是处理这个报

LVS负载均衡群集基础(一)

LVS负载均衡群集(一) 1.      群集(或集群)的称呼来自于英文单词"Cluster",用在服务器的领域表示大量的服务器集合,以便与区分单个服务器. 2.      群集的类型: (1)      负载均衡群集(load balance cluster):提高系统的响应能力,尽可能的处理更多的访问请求等,获得高并发,高负载的整体性能.例如应用于:"DNS轮询"."反向代理"等. (2)      高可用群集(high availabili

lvs负载均衡群集搭建(DR)

lvs负载均衡群集搭建(DR) 1:之前有讲过使用NAT技术的lvs的群集搭建接下来使用DR的直接路由模式来搭建负载均衡群集 2:在DR模式中.lvs负载调度器作为群集的访问入口,但不作为网关使用,服务器池中的所有节点来自internet.发送给客户端的web相应数据包不需要经过负载调度器:这种方式入站.出站访问数据分别被处理,因此lvs负载调度器和所有节点服务器都需要配置VIP地址,以便响应整个群集的访问. VIP地址192.168.1.254 负载均衡服务器           web1服务

【中级篇】Linux中部署LVS负载均衡群集

LVS负载均衡群集 1.          实验需求: 1)     2台服务器部署HTTPD服务 2) 1台做负载调度器 3) 搭建负载均衡,测试其效果. 2.          实验环境: Linux服务器系统版本:CentOS-6.5 -S02 IP:192.168.10.15  ( httpd ) Linux服务器系统版本:CentOS-6.5 -S03 IP : 192.168.10.18  ( httpd ) Linux服务器系统版本:  RedHat6.5     IP1 :192