Linux虚拟服务器(LVS)系统是由负载调度器(Load Balancer)、服务器集群(Server Cluster)和文件存储服务(File Servers)组成的,通过Linux下的负载平衡,将一群服务器构成一个服务集群,而实际服务器的前端是一台负载平衡器,将用户的请求调度到实际服务 器执行后将结果返回用户,而终端用户可见的只是一台服务器,由于负载调度技术是在Linux内核中实现的,我们称之为Linux Virtual Server。正如上文所讲,当前网络服务要求系统提供可靠性、可用性高的服务,即要求系统在遭到破坏和出现故障时,系统上的数据不能丢失,而且在尽可能 短的时间内恢复系统的正常运行,下面我们就LVS的基本原理(参考图1)和一些服务安全性能进行探讨。
附件1
连接用户的外部网为Internet/Intranet,服务器组由内部网(通常是高速局域网或地理分布的广域网)连接。负载平衡器有两个IP地 址,一个是外部网关,一个是内部网关。外部网的用户发出请求,负载调度器负责将用户要求的任务,调度到服务器集群中的服务器上执行,具体的调度策略现在主 要有四种调度算法:轮转调度算法(Round-RobinScheduling)、加权轮转调度算法(Weighted Round-RobinScheduling)、最小连接调度算法(Least-ConnectionScheduing)、加权最小连接算法 (Weighted Least- ConnectionScheduing)。LVS采用基于IP层负载平衡技术,通过IPVS软件实现了三种IP负载均衡技术,在Linux操作系统下, 将IP层的TCP和UDP请求均衡地转移到不同的服务器上。当用户请求到达时,调度器从服务器组中选出一个服务器转发该请求并由该服务器执行,同时记录此 调度。这一切都在操作系统核心空间内完成,且调度开销很小,使得服务器集群中的节点数目可以达25甚至可以多达100。文件存储系统基于容错式分布文件系 统来实现,如Coda。
我们谈到的LVS网络服务的高可靠性主要体现在:
1.负载调度器上运行了一个监视进程--mon,它负责监控服务进程和服务器集群中的各个服务器节点的状况,通过配置fping 监听器,每隔一定时间检测各个服务器节点。通过配置相应的服务监听器来探查所有节点中不同的服务进程,例如http monitor就用来探查http服务,一旦出现失败,监视进程就发出警报通知调度器将该节点从调度列表中删除,使调度器可以自动屏蔽服务器节点的失效。 当此服务器节点恢复时,调度器将此节点添加到调度列表中,从而总是保持对系统重置的正确,并且服务器集群中节点的数目是可变的,由于节点的失效被屏蔽,系 统管理员可以在任何时候加入或删除一个或多个节点而不干扰对用户提供的服务。这也就意味着LVS系统在超载时,我们可以通过增加服务集群的节点数目来满足 用户的请求,当服务器组中某台实际服务器出现故障,可以删除但不影响对用户的服务,从而实现高效可靠的服务。
2.在第一点的基础上,现在调度器就成为了单一的失效点,调度器的失效将导致整个系统的瘫痪。为了屏蔽主调度器可能出现的失效,需要建立一个 备份的从调度器。两个心跳进程分别在主、从调度器上运行,定期互相汇报各自的健康状况,一旦从调度器探测到主调度器失效,则激活fake程序接管 Virtual IP Address来提供负载平衡调度;当从调度器探测到主调度器恢复时,将释放Virtual IP Address,由主调度器收回并提供负载调度服务。虽然,主调度器的失效和接管将导致调度信息的丢失,需要用户重新发送请求。但是,这大大的提高了系统 的安全性和可靠性,使得一旦主调度器出现故障,系统可以在很短的时间内恢复服务。
附件1
连接用户的外部网为Internet/Intranet,服务器组由内部网(通常是高速局域网或地理分布的广域网)连接。负载平衡器有两个IP地 址,一个是外部网关,一个是内部网关。外部网的用户发出请求,负载调度器负责将用户要求的任务,调度到服务器集群中的服务器上执行,具体的调度策略现在主 要有四种调度算法:轮转调度算法(Round-RobinScheduling)、加权轮转调度算法(Weighted Round-RobinScheduling)、最小连接调度算法(Least-ConnectionScheduing)、加权最小连接算法 (Weighted Least- ConnectionScheduing)。LVS采用基于IP层负载平衡技术,通过IPVS软件实现了三种IP负载均衡技术,在Linux操作系统下, 将IP层的TCP和UDP请求均衡地转移到不同的服务器上。当用户请求到达时,调度器从服务器组中选出一个服务器转发该请求并由该服务器执行,同时记录此 调度。这一切都在操作系统核心空间内完成,且调度开销很小,使得服务器集群中的节点数目可以达25甚至可以多达100。文件存储系统基于容错式分布文件系 统来实现,如Coda。
我们谈到的LVS网络服务的高可靠性主要体现在:
1.负载调度器上运行了一个监视进程--mon,它负责监控服务进程和服务器集群中的各个服务器节点的状况,通过配置fping 监听器,每隔一定时间检测各个服务器节点。通过配置相应的服务监听器来探查所有节点中不同的服务进程,例如http monitor就用来探查http服务,一旦出现失败,监视进程就发出警报通知调度器将该节点从调度列表中删除,使调度器可以自动屏蔽服务器节点的失效。 当此服务器节点恢复时,调度器将此节点添加到调度列表中,从而总是保持对系统重置的正确,并且服务器集群中节点的数目是可变的,由于节点的失效被屏蔽,系 统管理员可以在任何时候加入或删除一个或多个节点而不干扰对用户提供的服务。这也就意味着LVS系统在超载时,我们可以通过增加服务集群的节点数目来满足 用户的请求,当服务器组中某台实际服务器出现故障,可以删除但不影响对用户的服务,从而实现高效可靠的服务。
2.在第一点的基础上,现在调度器就成为了单一的失效点,调度器的失效将导致整个系统的瘫痪。为了屏蔽主调度器可能出现的失效,需要建立一个 备份的从调度器。两个心跳进程分别在主、从调度器上运行,定期互相汇报各自的健康状况,一旦从调度器探测到主调度器失效,则激活fake程序接管 Virtual IP Address来提供负载平衡调度;当从调度器探测到主调度器恢复时,将释放Virtual IP Address,由主调度器收回并提供负载调度服务。虽然,主调度器的失效和接管将导致调度信息的丢失,需要用户重新发送请求。但是,这大大的提高了系统 的安全性和可靠性,使得一旦主调度器出现故障,系统可以在很短的时间内恢复服务。