LVS负载均衡群集概念的一些详细解答

创新互联负载均衡(Cloud Load Balancer)是对多台云服务器进行流量分发的服务。创新互联负载均衡可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。创新互联负载均衡服务通过设置虚拟服务地址(VIP),将位于同一地域的多台云服务器资源虚拟成一个高性能、高可用的应用服务池。根据应用指定的方式,将来自客户端的网络请求分发到云服务器池中。创新互联负载均衡服务会检查云服务器池中云服务器实例的健康状态,自动隔离异常状态的实例,从而解决了云服务器的单点问题,同时提高了应用的整体服务能力。今天创新互联给大家介绍下LVS负载均衡群集概念的一些详细解答

创新互联公司网站建设服务商,为中小企业提供成都做网站、网站设计服务,网站设计,绵阳服务器托管等一站式综合服务型公司,专业打造企业形象网站,让您在众多竞争对手中脱颖而出创新互联公司

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.负载均衡的分层结构

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

图中各层的详细介绍:

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

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

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

地址转换:简称NAT模式,类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,及作为客户机的访问入口。服务器节点使用私有IP地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式。如图:
LVS负载均衡群集概念的一些详细解答
NAT模式的实现步骤可以参考博文:LVS负载均衡群集之构建NAT模式,可跟做!!!
IP隧道:简称TUN模式,采用开放式的网络结构,负载调度器仅作为客户机的访问入口,各节点通过各自的Internet连接直接回应客户机,而不再经过负载调度器。服务器节点分散在互联网中的不同位置,具有独立的公网IP地址,通过专用IP隧道与负载调度器相互通信。如图:
LVS负载均衡群集概念的一些详细解答
直接路由:简称DR模式,采用半开放式的网络结构,与TUN模式的结构相似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络。负责调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道。如图:
LVS负载均衡群集概念的一些详细解答
DR模式的实现步骤可参考博文:LVS负载均衡群集之构建DR模式,可跟做!!!
以上三种工作模式中,NAT方式只需要一个公网IP地址,从而成为最易用的一种负载均衡模式,安全性也比较好,许多硬件负载均衡设备就采用这种方式,相比较而言,DR模式和TUN模式的负载能力更加强大,使用范围更广,但节点的安全性要稍差一些。

二、LVS虚拟服务器详解

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

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

 [root@localhost ~]# modprobe ip_vs                                    //加载IP_vs模块
[root@localhost ~]# 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系统默认没有安装,需要自行安装!

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

ipvsadm命令的操作方法:

[root@localhost ~]# 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)。
[root@localhost ~]# 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);
[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  192.168.1.254:80 rr
  -> 192.168.1.100:80             Masq    1      0          0   
    //Forward列对应的是Masq(地址伪装),表示采用的群集模式为NAT;
    ActiveConn列:当前连接数;
    InActConn列:正在活动的连接数;
[root@localhost ~]# ipvsadm -d -r 192.168.1.100:80 -t 192.168.1.254:80
//从群集中删除192.168.1.100的节点(-d表示删除)
[root@localhost ~]# ipvsadm -D -t 192.168.1.254:80
//删除192.168.1.254这个VIP(也就意味这个群集就没了)
[root@localhost ~]# ipvsadm-save
//查看设置的策略
[root@localhost ~]# ipvsadm-save > 123.txt
//保存策略到指定文件
[root@localhost ~]# 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
//确认保存文件内容
[root@localhost ~]# ipvsadm -C
//清空所有策略
[root@localhost ~]# ipvsadm-restore < 123.txt
//从指定文件导入策略
三、NFS共享存储服务详解

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

1.使用NFS发布共享资源

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

[root@localhost ~]# yum -y install nfs-utils
//用于NFS共享发布和访问
[root@localhost ~]# yum -y install rpcbind
//用于RPC支持
2.设置共享目录
[root@localhost ~]# mkdir /a
[root@localhost ~]# touch /a/123.txt
//创建目录、文件用于测试
[root@localhost ~]# vim /etc/exports
//填写以下内容(NFS服务的配置文件为/etc/exports)
/a      192.168.1.0(rw,sync,no_root_squash)
或者
[root@localhost ~]# 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用户降权对待)
[root@localhost ~]# systemctl start nfs
[root@localhost ~]# systemctl start rpcbind
//启动nfs服务、rpcbind服务
[root@localhost ~]# showmount -e
//查看本机发布的共享目录
Export list for localhost.localdomain:
/a 192.168.1.10,192.168.1.1
3.客户机访问测试
[root@localhost ~]# showmount -e 192.168.1.2
//查询NFS服务的发布情况
Export list for 192.168.1.2:
/a 192.168.1.10,192.168.1.1
[root@localhost ~]# mount 192.168.1.2:/a /b
[root@localhost ~]# ls /b
123.txt
//挂载到本地,并查看内容
//如果开启同步权限,有任何变化,NFS服务器和客户端会立马更新内容
4.客户机实现自动挂载
[root@localhost ~]# vim /etc/fstab
               ………………                     //省略部分内容,填写以下内容
192.168.1.2:/a          /b                      nfs     defaults,_netdev        0 0
//_netdev  建议添加次参数,表示需要网络支持;如果想在网络终端的情况下放弃挂载,添加一下参数(soft、intr)实现软挂载

如果大家还有什么地方需要了解的可以在创新互联官网找我们的专业技术工程师的,创新互联技术工程师在行业内拥有十几年的经验了,所以会比小编回答的更加详细专业。创新互联官网链接www.cdcxhl.com


文章标题:LVS负载均衡群集概念的一些详细解答
地址分享:http://azwzsj.com/article/jdejoh.html