LVS负载均衡及Keepalived高可用技术
1.1集群的定义
集群,是指一组相互独立的计算机,利用高速通信网络组成的一个计算机系统,每个集群节点都是运行其自己进程的一个独立的服务器。
这些进程可以彼此通信,对网络客户机来说就像形成了一个单一系统,协同起来向用户提供应用程序、系统资源和数据,并以单一系统
的模式加以管理。一个客户机与集群相互作用时,集群像是一个独立的服务器。
1.2为什么要使用集群?
1.2.1集群的基本特点
1)高性能
2)低成本
3)高可扩展性
4)高可靠性
1.3集群的分类
集群计算机按功能和结构可以分成以下几类:
1)负载均衡集群(Load balancing clusters)
2)高可用性集群(High-availability(HA) clusters)
3)高性能计算集群(High-performance(HPC) clusters)
4)网络计算(Grid computing)
PS:在互联网网站运维中,比较常用的集群就是LB和HA。
1.4常用的集群软件硬件
1)互联网企业常用的集群软件有:lvs,keepalived,haproxy,apache,nginx,heartbeat
2)互联网企业常用的集群硬件有:F5,Netscaler,Radware等。
1.4.2企业运维中集群软硬件产品如何选型?
1)当企业业务比较重要,而技术力量薄弱,希望出钱购买产品及更好的服务时,可以选择硬件负载均衡产品。
2)中小型互联网企业,由于起步阶段无利润可赚或者利润很低,希望通过使用开源免费的解决方案解决问题,雇佣专门的运维人员进行维护。
LVS负载均衡集群介绍
1.5.1 搭建负载均衡服务的需求
负载均衡LB提供了一种廉价、有效、透明的方法,来扩展网络设备和服务器带宽、增加吞吐量、加强网络数据能力、提高网络的灵活性和可用性。
搭建负载均衡服务的需求
1)把单点计算机无法承受的大规模并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应时间,提升用户体验。
2)单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅提高。
3)7*24的服务保证,任意一个或多个有限后面节点宕机,不会影响业务。
在负载均衡集群中,所有计算机节点都会提供相同的服务。集群负载均衡器截获所有对该服务器的入站请求。然后将这些请求尽可能地平均的在
所有集群节点上。
1.5.2 LVS(linux virtual server)
LVS是Linux Virtual Server的缩写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统,可以在UNIX/LINUX平台下实现负载均衡集群功能。
1.5.3IPVS(LVS)发展史
早在2.2内核是,IPVS就已经以内核补丁的形式出现。
从2.4.23版本开始,IPVS软件就是合并到Linux内核的常用版本的内核补丁的集合。
从2.4.24以后IPVS已经成为Linux官方标准内核的一部分。
补充:我们使用该软件配置LVS时候,不能直接配置IPVS,需要使用IPVS的管理工具ipvsadm。
1.5.4IPVS软件工作层次
LVS负载均衡调度技术是在内核层面完成的。
1.5.5LVS体系结构与工作原理简单描述
LVS集群负载均衡器接受服务的所有入站客户端的计算机请求,并根据调度算法决定那个集群节点应该处理回复请求。
负载均衡器(LB)有时也被称为LVS Direcotr。
LVS虚拟服务器的体系结构,一组服务器通过高速的局域网或者地理分布的广域网相互连接,在它们的前端有一个负载调度器(load Balancer)。
负载调度器能无缝地将网络请求调度到真实的服务器上,从而使得服务器集群的结构对于客户是透明的,客户访问集群系统提供的网络服务就像
访问一台高性能、高可用的服务器一样。客户程序不受服务器集群的影响不需作任何修改。
1.5.7LVS相关术语命名约定
名称 缩写 说明
虚拟IP地址(Virtual Ip Address) VIP Director用于向客户端计算机提高服务的IP地址。比如www.etiantian.org域名就要解析到VIP上。
真实IP地址(Real Server Ip Address) RIP 在集群下面节点上使用的IP地址。
Director的IP地址(Director Ip Address) DIP Director用于连接内外网络的IP地址,物理网卡上的IP地址。
客户端主机IP地址(Client Ip Address) CIP 客户端用于计算机请求集群服务的IP地址,该地址用作发送给集群的请求的源IP地址。
1.5.8LVS负载均衡集群的3种工作模式介绍
1)NAT模式-网络地址转换
(Virtual Server via Network Address Translation(VS/NAT)
通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器;真实服务器的响应报文通过调度器时
报文的源地址被重写,在返回给客户端,完成整个负载调度过程。
提示:VS/NAT模式,很类似公路收费站,来去都要进过LB负载均衡器,通过修改目的地址,端口或源地址或源端口。(10-20台)
2)TUN模式-隧道模式
Virtual Server via IP Tunneling (VS/TUN)
采用NAT技术时,由于请求和响应报文都必须经过调度器地址重写,当客户请求越来越多时,调度器的处理能力将成为瓶颈。
为了解决这个问题,调度器把请求报文通过IP隧道(相当于ipip或ipsec)转发至真实服务器,而真实服务器将响应直接返
回给客户,这样调度器只处理请求报文。由于一般网络应答数据比请求报文大很多,采用VS/TUN技术后,集群系统的最大
吞吐量可以调高10倍。
3)DR模式-直接路由模式
Virtual Sever via Direct Routing (VS/DR)
VS/DR通过改写请求报文的MAC地址,将请求发送到真实的服务器,而请求发送到真实的服务器,而真实服务器将响应直接返回给客户。
同VS/TUN技术一样,VS/DR技术可极大的提高集群系统的伸缩性。这种方法没有IP隧道的开销,对于集群中真实服务器也没有必须支持
IP隧道协议的要求,但是要求调度器与真实服务器都有一块网卡连接在统一服务网段上。
1.5.10 LVS的调度算法
LVS调度算法决定了如何在这些集群节点之间分布工作负荷。
当Director收到来自客户端的访问它VIP上的集群服务入站请求时,Director必须决定哪个集群节点应该获得请求。
Director可用于做出该决定的调度方法分为两个基本类别:
固定调度算法:rr,wrr,dh,sh
动态调度算法:wlc,lc,lblc,lblcr,SE,NQ
10种调度算法如下:
rr : 轮询调度(Round-Robin),它将请求一次分配不同的RS,也就是在RS中均摊请求。这种算法简单,但是只适合与RS处理
性能相差不大的情况。
wrr: 加权轮询调度(Weighted Round-Robin),它将依据不同RS的权值分配任务。权值较高的RS将优先获得任务,并且分配到
的连接数将比权值较低的RS更多。相同权值的RS得到相同的连接数。
dh: 目的地址哈希调度(Destination Hashing)以目的地址为关键字查找一个静态的hash表来获得需要的RS。
sh: 源地址哈希调度(Source Hashing)以源地址为关键字查找一个静态hash表来获得需要的RS。
lc: 最小连接数调度(Least-Connection),IPVS表存储了所有的活动连接。把新的连接请求发送到当前连接数最小的RS。
wlc: 加权最小连接数调度(Weighted Least-Connection)假设各台RS的权值一次为Wi(l=1..n),当前的TCP连接数依次为
Ti(l=1..n),依次选取Ti/Wi为最小的RS作为下一个分的的RS。
lblcr:基于地址的最小连接数调度(Locality-Based Least-Connect)将来自同一目的地址的请求分配给同一台RS,如果这台服务器
尚未满负荷,否则分配给连接数最小的RS,并以它为下一次分配的首选考虑。
lblcr: 基于地址带重复最小连接数调度(Locality-Based Least-Connection with Replication)对于某一目的地址,对应有一个
RS子集。对此地址请求,为它分配子集中连接数最小RS;如果子集中所有服务器均已满负荷,则从集群选择一个连接数较小服
务器。将它加入到此子集并分配连接;若一定时间内,未被做任何修改,则将子集中负载最大的节点从子集删除。
1.5.11LVS的调度算法和生产环境选型
一般的网络服务,如HTTP、Mail、MySQL等,常用的调度算法为:
1)基本轮询调度rr算法 2)加权最小连接调度wlc 3)加权轮询调度wrr算法。
基于局部性的最小连接LBLC和带复制的基于局部性最少连接LBLCR主要适用web和Cache集群。
源地址散列调度和目标地址散列可以结合适用在防火墙集群中,他们可以保证整个系统的唯一出入口。最短预期延迟调度SED和不排列调度
NQ主要是对处理时间相对比较长的网络服务。
等
1.1集群的定义
集群,是指一组相互独立的计算机,利用高速通信网络组成的一个计算机系统,每个集群节点都是运行其自己进程的一个独立的服务器。
这些进程可以彼此通信,对网络客户机来说就像形成了一个单一系统,协同起来向用户提供应用程序、系统资源和数据,并以单一系统
的模式加以管理。一个客户机与集群相互作用时,集群像是一个独立的服务器。
1.2为什么要使用集群?
1.2.1集群的基本特点
1)高性能
2)低成本
3)高可扩展性
4)高可靠性
1.3集群的分类
集群计算机按功能和结构可以分成以下几类:
1)负载均衡集群(Load balancing clusters)
2)高可用性集群(High-availability(HA) clusters)
3)高性能计算集群(High-performance(HPC) clusters)
4)网络计算(Grid computing)
PS:在互联网网站运维中,比较常用的集群就是LB和HA。
1.4常用的集群软件硬件
1)互联网企业常用的集群软件有:lvs,keepalived,haproxy,apache,nginx,heartbeat
2)互联网企业常用的集群硬件有:F5,Netscaler,Radware等。
1.4.2企业运维中集群软硬件产品如何选型?
1)当企业业务比较重要,而技术力量薄弱,希望出钱购买产品及更好的服务时,可以选择硬件负载均衡产品。
2)中小型互联网企业,由于起步阶段无利润可赚或者利润很低,希望通过使用开源免费的解决方案解决问题,雇佣专门的运维人员进行维护。
LVS负载均衡集群介绍
1.5.1 搭建负载均衡服务的需求
负载均衡LB提供了一种廉价、有效、透明的方法,来扩展网络设备和服务器带宽、增加吞吐量、加强网络数据能力、提高网络的灵活性和可用性。
搭建负载均衡服务的需求
1)把单点计算机无法承受的大规模并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应时间,提升用户体验。
2)单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅提高。
3)7*24的服务保证,任意一个或多个有限后面节点宕机,不会影响业务。
在负载均衡集群中,所有计算机节点都会提供相同的服务。集群负载均衡器截获所有对该服务器的入站请求。然后将这些请求尽可能地平均的在
所有集群节点上。
1.5.2 LVS(linux virtual server)
LVS是Linux Virtual Server的缩写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统,可以在UNIX/LINUX平台下实现负载均衡集群功能。
1.5.3IPVS(LVS)发展史
早在2.2内核是,IPVS就已经以内核补丁的形式出现。
从2.4.23版本开始,IPVS软件就是合并到Linux内核的常用版本的内核补丁的集合。
从2.4.24以后IPVS已经成为Linux官方标准内核的一部分。
补充:我们使用该软件配置LVS时候,不能直接配置IPVS,需要使用IPVS的管理工具ipvsadm。
1.5.4IPVS软件工作层次
LVS负载均衡调度技术是在内核层面完成的。
1.5.5LVS体系结构与工作原理简单描述
LVS集群负载均衡器接受服务的所有入站客户端的计算机请求,并根据调度算法决定那个集群节点应该处理回复请求。
负载均衡器(LB)有时也被称为LVS Direcotr。
LVS虚拟服务器的体系结构,一组服务器通过高速的局域网或者地理分布的广域网相互连接,在它们的前端有一个负载调度器(load Balancer)。
负载调度器能无缝地将网络请求调度到真实的服务器上,从而使得服务器集群的结构对于客户是透明的,客户访问集群系统提供的网络服务就像
访问一台高性能、高可用的服务器一样。客户程序不受服务器集群的影响不需作任何修改。
1.5.7LVS相关术语命名约定
名称 缩写 说明
虚拟IP地址(Virtual Ip Address) VIP Director用于向客户端计算机提高服务的IP地址。比如www.etiantian.org域名就要解析到VIP上。
真实IP地址(Real Server Ip Address) RIP 在集群下面节点上使用的IP地址。
Director的IP地址(Director Ip Address) DIP Director用于连接内外网络的IP地址,物理网卡上的IP地址。
客户端主机IP地址(Client Ip Address) CIP 客户端用于计算机请求集群服务的IP地址,该地址用作发送给集群的请求的源IP地址。
1.5.8LVS负载均衡集群的3种工作模式介绍
1)NAT模式-网络地址转换
(Virtual Server via Network Address Translation(VS/NAT)
通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器;真实服务器的响应报文通过调度器时
报文的源地址被重写,在返回给客户端,完成整个负载调度过程。
提示:VS/NAT模式,很类似公路收费站,来去都要进过LB负载均衡器,通过修改目的地址,端口或源地址或源端口。(10-20台)
2)TUN模式-隧道模式
Virtual Server via IP Tunneling (VS/TUN)
采用NAT技术时,由于请求和响应报文都必须经过调度器地址重写,当客户请求越来越多时,调度器的处理能力将成为瓶颈。
为了解决这个问题,调度器把请求报文通过IP隧道(相当于ipip或ipsec)转发至真实服务器,而真实服务器将响应直接返
回给客户,这样调度器只处理请求报文。由于一般网络应答数据比请求报文大很多,采用VS/TUN技术后,集群系统的最大
吞吐量可以调高10倍。
3)DR模式-直接路由模式
Virtual Sever via Direct Routing (VS/DR)
VS/DR通过改写请求报文的MAC地址,将请求发送到真实的服务器,而请求发送到真实的服务器,而真实服务器将响应直接返回给客户。
同VS/TUN技术一样,VS/DR技术可极大的提高集群系统的伸缩性。这种方法没有IP隧道的开销,对于集群中真实服务器也没有必须支持
IP隧道协议的要求,但是要求调度器与真实服务器都有一块网卡连接在统一服务网段上。
1.5.10 LVS的调度算法
LVS调度算法决定了如何在这些集群节点之间分布工作负荷。
当Director收到来自客户端的访问它VIP上的集群服务入站请求时,Director必须决定哪个集群节点应该获得请求。
Director可用于做出该决定的调度方法分为两个基本类别:
固定调度算法:rr,wrr,dh,sh
动态调度算法:wlc,lc,lblc,lblcr,SE,NQ
10种调度算法如下:
rr : 轮询调度(Round-Robin),它将请求一次分配不同的RS,也就是在RS中均摊请求。这种算法简单,但是只适合与RS处理
性能相差不大的情况。
wrr: 加权轮询调度(Weighted Round-Robin),它将依据不同RS的权值分配任务。权值较高的RS将优先获得任务,并且分配到
的连接数将比权值较低的RS更多。相同权值的RS得到相同的连接数。
dh: 目的地址哈希调度(Destination Hashing)以目的地址为关键字查找一个静态的hash表来获得需要的RS。
sh: 源地址哈希调度(Source Hashing)以源地址为关键字查找一个静态hash表来获得需要的RS。
lc: 最小连接数调度(Least-Connection),IPVS表存储了所有的活动连接。把新的连接请求发送到当前连接数最小的RS。
wlc: 加权最小连接数调度(Weighted Least-Connection)假设各台RS的权值一次为Wi(l=1..n),当前的TCP连接数依次为
Ti(l=1..n),依次选取Ti/Wi为最小的RS作为下一个分的的RS。
lblcr:基于地址的最小连接数调度(Locality-Based Least-Connect)将来自同一目的地址的请求分配给同一台RS,如果这台服务器
尚未满负荷,否则分配给连接数最小的RS,并以它为下一次分配的首选考虑。
lblcr: 基于地址带重复最小连接数调度(Locality-Based Least-Connection with Replication)对于某一目的地址,对应有一个
RS子集。对此地址请求,为它分配子集中连接数最小RS;如果子集中所有服务器均已满负荷,则从集群选择一个连接数较小服
务器。将它加入到此子集并分配连接;若一定时间内,未被做任何修改,则将子集中负载最大的节点从子集删除。
1.5.11LVS的调度算法和生产环境选型
一般的网络服务,如HTTP、Mail、MySQL等,常用的调度算法为:
1)基本轮询调度rr算法 2)加权最小连接调度wlc 3)加权轮询调度wrr算法。
基于局部性的最小连接LBLC和带复制的基于局部性最少连接LBLCR主要适用web和Cache集群。
源地址散列调度和目标地址散列可以结合适用在防火墙集群中,他们可以保证整个系统的唯一出入口。最短预期延迟调度SED和不排列调度
NQ主要是对处理时间相对比较长的网络服务。
等