c.Linux Virtual Server工作原理与核心组件:
LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均
衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个
高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和
服务器端的程序。
为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性。一般来说,LVS集
群采用三层结构,其体系结构如图1所示,三层主要组成部分为:
负载调度器(load balancer),它是整个集群对外面的前端机,负责将客户的请求发送到一组服
务器上执行,而客户认为服务是来自一个IP地址(我们可称之为虚拟IP地址)上的。
服务器池(server pool),是一组真正执行客户请求的服务器,服务有WEB、MAIL、FTP和DNS
等。
共享存储(shared storage),它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥
有相同的内容,提供相同的服务。
调度器是服务器集群系统的唯一入口点(Single Entry Point),它可以采用IP负载均衡技术、
基于内容请求分发技术或者两者相结合。在IP负载均衡技术中,需要服务器池拥有相同的内容提供
相同的服务。当客户请求到达时,调度器只根据服务器负载情况和设定的调度算法从服务器池中选
出一个服务器,将该请求转发到选出的服务器,并记录这个调度;当这个请求的其他报文到达,也
会被转发到前面选出的服务器。在基于内容请求分发技术中,服务器可以提供不同的服务,当客户
请求到达时,调度器可根据请求的内容选择服务器执行请求。因为所有的操作都是在Linux操作系统
核心空间中将完成的,它的调度开销很小,所以它具有很高的吞吐率。
服务器池的结点数目是可变的。当整个系统收到的负载超过目前所有结点的处理能力时,可以
在服务器池中增加服务器来满足不断增长的请求负载。对大多数网络服务来说,请求间不存在很强
的相关性,请求可在不同的结点上并行执行,所以整个系统的性能基本上可随着服务器池的结点数
目增加而线性增长。
共享存储通常是数据库、网络文件系统或者分布式文件系统。负载调度器、服务器池和共享存
储系统通过高速网络相连接,如100Mbps交换网络、Myrinet和Gigabit网络等。使用高速的网络,
主要为避免当系统规模扩大时互联网络成为整个系统的瓶颈。在具体实施过程中,在红帽企业版
Linux上对LVS集群的定义和配置提供了更加详细的方案。
另外在红帽的LVS中还有一个比较关键的东西是LVS的组件:
LVS的组件中服务包括pulse,lvs,ipvsadm以及nany;另外还包括配置文件/etc/sysconfig/ha/
lvs.cf,配置工具piranha configuration tooly以及服务IP进行浮动之前arp欺骗手段中的
send_arp。
pulse是LVS的控制进程,该进程用于启动和控制所有的其他LVS相关的守护进程。该进程的
配置文件是/etc/sysconfig/ha/lvs.cf。在主router上pulse用于启动LVS守护进程,在备份router
上pulse通过定期收发心跳信号监控主router的状态。如果一旦主router失效,在备份router上的
pulse进程将关闭所有主router上的LVS服务,并且开启send_arp程序来重新指派浮动IP到备份
router的MAC上。
lvs进程运行在主router上,主要读取/etc/sysconfig/ha/lvs.cf文件,调用lvsadm工具来建立与维护ipvs路由表并对每一个LVS服务指派nanny进程。如果nanny报告一个真实服务器失效,
lvs进程将调用ipvsadm工具将失效真实服务器从IPVS路由表中删除。
ipvsadm用于升级kernel中的IPVS路由表,该进程主要用于更改、添加、删除IPVS路由表的
条目。nanny监控的进程运行在主LVS Router上,主LVS Router会通过他来监控每一个真实服务
器的状况。另外piranha configuration tool提供了一个图形接口用于修
改/etc/sysconfig/ha/lvs.cf文件,而send_arp会在浮动IP向不同的LVS router进行切换时发送
arp广播。