LVS简介与集群及类型介绍

====================
面试:
负载均衡:nginx apache DNS  都可以做负载均衡
集群最少需要两台机器
你们公司有的高可用是多少?回答是几个9(一般回答3个9)(表示全年停机时间)银行或者京东淘宝一般都是6个9,全年停机时间31.5sec
但有些公司是不用追求这个高可用 比如股票
一、集群
1、背景
在互联网应用中,随着站点对硬件性能,响应速度,服务稳定性,数据可靠新等需求约来越高,单台服务器将难以承担素有的访问。
除了使用价格昂贵的大型机,企业含有另一种徐泽来解决难题,通过整合多台廉价的普通服务器来构建大型集群环境。以同一个地址对外提滚相同的服务。
2、类型
无论是哪种群集,至少包括两台节点服务器,而对外表为一个整体,只提供一个访问入口(域名或IP地址),相当于一台大型计算机能力,根据群集所针对的目标差异,可以分为以下三种类型:
(1)负载均衡群集Load Balance Cluster(LB)
以提高应用系统的相应能力、尽可能处理更多的访问请求、减少延迟为目标、获得高并发、高负载(LB)的整体性能。
例如:DNS轮询,应用层交换,反向代理等
负载分配依赖于节点(调度器|负载均衡器)的分流算法,将来自客户端的访问请求封单多个服务器节点,从而缓解整个系统的负载压力,
这类集群软件中比较著名的有:Linux  Virtual  Server(LVS)、Haproxy、Nginx。
实现集群的硬件:F5 BIG-IP(重要)、Ctrix Netscale人、A10(重要)、Array(重要)、绿盟、梭子鱼
阿里云基于LVS和Nginx包装一个产品:SLB
(2)高可用集群High Availability Cluster(HA)
以提高应用系统的可靠性、尽可能减少中断时间为目标、确保服务的连续性、达到高可用(HA)的容错效果。
例如:故障切换、双机热备、多机热备等。
工作模式:有双工、主从俩种模式。双工即节点同时在线;主从则只有主节点在线,当出现故障时从节点自动切换为主节点。
这类集群中比较著名的有:Heartebat、Keepalived。
(3)高性能运算集群(High Performance Computer Cluster)HPC
以提高应用系统的CPU运算速度,扩展硬件资源和分析能力为目标,获得相当于大型,超级计算机的高性能运算(PHC)能力,
例如:云计算、网络计算
HPC主要依赖分布  式运算,并行计算,通过专用硬件和软件将多个服务器的CPU,内存等资源整合在一起,实现大型,超级计算机才具有的计算能力。
这类软件有:Hadoop
2、LVS负载均衡集群的分层介绍
在典型的负载均衡集群中,主要包含三个层级。
LVS通过前端至少一个负载调度器(也叫负载均衡器)无缝地将网络请求调度到真实服务器上,从而使得服务器集群的结构对客户是透明的,客户访问集群系统提供的网络服务就像访问一台高性能、高可用的服务器一样。客户程序不接受服务器集群的影响不需要任何修改。系统的伸缩性通过在服务器机群中透明地加入或删除一个节点来达到,通过检测节点或服务进程故障和正确重置使系统达到高可用性。为了保持服务的一致性,所有节点使用共享存储设备。
 

第一层,负载调度器:这是访问整个集群系统的唯一入口,对外使用所有服务器共有的VIP(Virtual IP,虚拟IP)地址,也称为群集IP地址。通常会配置主备两台调度器实现热备份,当朱调度器失效以后平滑替换至备用调度器,确保高可用性。
第二层,服务器池:集群所提供的应用服务(如,FTTP FTP)有服务池承担,其中的某个节点暂时失效,负载调度器的容错机制会将其隔离,等待错误排除以后再重新纳入服务器池
第三层,共享存储:为服务器池中的所有节点提供稳定、一致的文件存取服务,确保整个集群的统一性。在Linux/UNIX环境中,共享存储可以使用NAS设备,或者提供NFS(Network File System,网络文件系统)共享服务的专用服务器。
3、LVS虚拟服务器
Linux Virtual Server 是针对Linux内核开发的一个负载均衡项目。LVS实际上相当于基于IP地址的虚拟化应用,为基于IP地址和内容请求分发的负载均衡提出 了一种高效的解决方法。
LVS现在已成为linux内核的一部分,默认编译为ip_vs 模块,并查看当前系统中ip_vs模块的版本信息
[root@localhost ~]# yum -y install ipvsadm                    //安装ipvsadm管理工具                                               
[root@localhost ~]# modprobe ip vs                              //加载ip vs模块                                                                                       
[root@localhost ~]# lsmod I grep^ip vs                        //查看 ip vs 模块信息                                                 
ip Vs   141432 0                                                                                      
[root@localhost ~]# cat /proc/net/ip vs                     //查看ip vs 版本信息                                                     
IP Virtual Server version 1.2.1 (size=4096)                                                                   
Prot LocalAddress:Port Scheduler Flags                                                                 
一> RemoteAddressPort Forward Weight ActiveConn InActConn                                           
4、LVS负载均衡的工作模式
关于集群的负载调度技术,可以基于IP、端口、内容等进行分发,其中基于IP的负载调度室效率最高的。
基于IP的负载均衡模式中,常见的有地址转换(NAT)、IP隧道(TUNNEL)、直接路由(DR)、FULLNAT四种工作模式
地址转换(Network Address Translation):简称NAT模式,类似于防火墙的私有网络结构,负载调度器作为服务器节点的网关,即作为客户机的访问入口,也是各节点回应客户机的访问出口,服务器节点使用私有IP地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式。缺点是整个架构的负载不高(调度器压力大)
IP隧道(IP Tunnel):简称TUN模式,采用开放式的网络结构,负载调度器仅作为客户机的访问入口,各节点通过各自的lntemet连接直接回应客户机,而不再经过负载调度器。服务器节点分散在互联网中的不同位置,具有独立的公网IP地址,通过专用IP隧道与负载调度器相互同信
直接路由 (Direct Routing):简称DR模式采用半开放式的网络结构,与TUN模式的结构雷士,但各节点并不是分散在各地,而是与调度器位于同一个物理网络。负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道。
5、LVS的负载均衡调度算法   工作中常用的rr wrr LC WLC DH
1)轮叫调度(Round Robin)(rr)~~
调度器通过“轮叫”调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上世纪的连接数和系统负载
2)加权轮叫(Weighted Round Robin)(wrr)~~`
调度器通过“加权轮叫”调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器能处理更多的访问流量。调度器可以自动询问真实服务器的负载情况,并动态调整期权值
3)最少链接(Least Connections) (LC)~~
调度器通过“最少连接”调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用“最小连接”调度算法可以较好地均衡负载。
4)加权最少链接(Weighted Least Connections) (WLC)~~~
在集群系统中的服务器性能差异较大的情况下,调度器采用“加权最少链接”调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
5)基于局部性的最少链接(Locality- BasedLeast Connections) (LBLC)2
6)带复制的基于局部性最少连接(Locality-Based Least Connections with Replication) (LBLCR)
7) 目标地址散列(Destination Hashing) (DH)~~~~
根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。
8)源地址散列(Source Hashing) (SH)。
根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若服务器是可用的且为超载,将请求发送到该服务器,负责返回空
9)最短的期望的延迟(Shortest Expected Delay SchedulingSED) (SED)。
10)最少队列调度(Never Queue Scheduling )(NQ)
6、使用ipvsadm管理工具
ipvsadn是在负载调度器上使用的LVS群集管理工具,通过调用ip vs模块来添加、删除服务器节点,以及查看群集的运行。
[root@locathost ~]# rpm-qipvsadm       //查看是否安装ipvsadm
ipvsadm-1.27-7.el7.x86 64
[root@localhost ~]# ipvsadm-v     //查看版本
ipvsadmv1.27 2008/5/15 (compiled with popt and IPVSv1.2.1)-
LVS群集的管理工作主要包括:创建虚拟服务器、添加服务器节点、查看群集节点状
态、删除服务器节点、保存负载分配策略,下面分别展示使用ipwsadm命令的操作方法。。
 
1)创建虚拟服务器。
若群集的VIP地址为192. 168.200.254,针对TCP80端口提供负载分流服务,使用的调
度算法为轮询,则对应的ipvsadm命令操作如下所示。对于负载均衡调度器来说,VIP必须
是本机实际已启用的P地址。。
[root@localhost ~]# ipvsadm -A -t 192.168.200.254:80 -s rr
上述操作中,选项A表示添加虚拟服务器,-用来指定VIP地址及TCP端口,8用来
指定负载调度算法一轮询 (π) .加权轮询(wm)、最少连接(le)、加权最少连(we)等。。
 
2)添加服务器节点
为虚拟服务器192.168.200.254添加4个服务器节点,IP 地址依次为192.168.200.112、
192.168.200.113 ,对应的ipvsadm命令操作如下所示,
若希望使用保持连接,还应添加“-p60"选项,其中60为保持时间(秒)。。
[root@localhost ~]# ipvsadm -a -t 192.168.200.254:80 -r 192.168.200.112:80 -m -w 1
[root@localhost ~]# ipvsadm -a -t 192.168.200.254:80 -r 192.168.200.113:80 -m -w 1
上述操作中,选项。表示添加服务器、↓用来指定VIP地址及TCP端口、r用来指定
RIP地址及TCP端口,-m表示使用NAT群集模式(-gDR模式、iTUN模式),-w用来设
置权后重(权重为0时表示暂停节点)。。
 
3)查看群集节点状态。
结合选项L可以列表查看LVS虚拟服务器,可以指定只查看某一一个VIP 地址(默认为
查看所有)结合选项-将以数字形式显示地址、端口等信息。。
[root@localhost ~]#ipvsadm-Ln //查看节点状态
IP VirtualServer version 1.2.1 (size=-4096)-
Prot LocalAddressPort Scheduler Flags
->RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.200.254:80rr.
->192.168.200.112:80 Masq 1 0 0
->192.168.200.113:80 Masq 1 0 0
[root@localhost ~]# ipvsadm-Lnc //查看负载连接情况。
IPVS connection entries。
pro expire state source virtualdestination
TCP 01:51 FIN WAIT 172.16.16.110:49712 192.168.200.254:80 192.168200112:80
TCP 01:52 FIN WAIT 172.16.16.110:49720 192.168.200.254:80 192.168.200.113:80,
上述输出结果中,Forward 列下的Masg对应的Masquerade (地址伪装), 表示采用的
群集模式为NAT:如果是Route,则表示采用的群集模式为DR.。
 
4)刪除服务器节点。
需要从服务器池中删除某一个节点时,使用选项d。执行删除操作必须指定目标对象,
包括节点地址、虚拟IP地址。例如,以下操作将会刑除LVS群集192.168.200.254中的节点
192.168.200.115.。
[root@localhost ~]# ipvsadm-d -r 192.168.200.115:80-t 192.168.200.254:80
需要删除整个虚拟服务器时,使用选项D并指定虚拟IP地址即可,无需指定节点。例
如若执行"ipwsadm-D -t 192. 168 200.254.80”,则删除此虚拟服务器.。
 
5)保存负载分配策略。
使用导出/导入工具ipvsadm-save/ipwsadm-restore可以保存、恢复LVS策略。当然也可以快
速清除、重建负载分配策略。。
froot@localhost ~]# ipysadm-save> /etc/sysconfig/ipvsadm//保存策略。
froot@localhost ~]# cat/etc/sysconfg/ipvsadm//确定保存结果。
-A-t 192.168.200.254:http-s
-a -t 192.168.200.254:htp r minion-one:http -m W 1
一a -t 192.168.200.254:http F 192.168.200.113:http-m-w1.
at 192.168.200.254:http- 192.168.200.114:http -m-w 1。
[root@localhost ~]# ytectitstop ipvsadm//停止服务(清除策略) .
[root@localhost ~]# systemctistart ipvsadm//起动服务(重建规则) D
 7、DR模式
负载调度器:
安装ipvsadm
[root@localhost ~]# yum -y install ipvsadm
配置负载分配策略
[root@localhost ~]# ipvsadm -A -t 192.168.200.254:80 -s rr
[root@localhost ~]# ipvsadm -a -t 192.168.200.254:80 -r 192.168.200.112:80 -g -w 1
[root@localhost ~]# ipvsadm -a -t 192.168.200.254:80 -r 192.168.200.113:80 -g -w 1
配置VIP
[root@localhost ~]# ifconfig ens32:0 192.168.200.254 netmask 255.255.255.0
节点服务器:
安装apache
[root@localhost ~]# yum -y install httpd
创建测试页
[root@localhost ~]# echo "1111" > /var/www/html/index.html
[root@localhost ~]# systemctl restart httpd
配置VIP
[root@localhost ~]# ifconfig lo:0 192.168.200.254 netmask 255.255.255.255
 
[root@localhost ~]# route add -host 192.168.200.254 dev lo:0
修改
[root@localhost ~]# vi /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
[root@localhost ~]# sysctl -p
需要解决的问题:
1、DR模式中,负载调度器和节点服务器都要配置相同的VIP地址,但在局域网中具有相同 的IP地址,会造成各服务器ARP广播通信的缭乱。
解决方法:
对节点服务器,使其不响应针对VIP的ARP请求,使用虚拟接口lo:0承载VIP地址,设置内核参数arp_ignore=1,系统只响应ip为本地RIP的ARP请求
2、路由器收到ARP请求后,更新ARP表的内容,原有的VIP对应调度器的MAC地址会被更新为节点服务器的MAC地址。此时新来的请求报文,路由器根据ARP表,转发给节点服务器,从而导致调度器失效
解决方法:
对节点服务器进行处理,设置内核参数arp_announce = 2 ,系统不使用IP包的源地址(VIP)来设置ARP请求的源地址,而选择发送接口的IP(RIP)地址。

原文地址:https://www.cnblogs.com/elin989898/p/11936864.html