LVS初步认识

LVS是什么?

LVS是Linux Virtual Server,中文翻译为Linux虚拟服务器。

那么,什么又是VS呢?

VS是基于真实服务器集群来构建的具有可扩展性(scalability)和高可用性(availability)的服务器。这种架构对于终端用户完全透明,也就是说用户同集群系统交互就好像是在同一台高性能的虚拟服务器在交互一样。

下图可参考:

Image(8)[1]

LVS项目的目标是什么?

官方有说明

Build a high-performance and highly available server for Linux using clustering technology, which provides good scalability, reliability and serviceability.

使用集群技术,为Linux构建一个高性能和高可靠性的服务器,服务器还可以提供很好的可扩展性、可靠性和可维护性。

LVS以什么著称?

负载均衡服务器集群。

为什么选择LVS?

面对日益增长的业务访问压力,网站很容易过载,比方说是电商网站,在双十一、十一还会流量倍增。

我们一般有两种方式应对压力。

一种方式是增加单台服务器的性能,如升级硬件和优化软硬件。但是升级过程会很繁琐,而且升级所需要的成本越来越高。甚至直到有一天你都无法承受。比方说单台Oracle,在业务逐步增长的情况下,如果靠升级单台服务器性能,你总会有一天支付不起服务器和软件授权费用。

另一种方式是多服务器方案,比方说构建一个基于服务器集群的可扩展的网络服务系统。当业务增长时,我们可以简单地增加服务器到集群中,便可以轻松应付业务压力。也就是说,构建服务器集群系统具有更好的可扩展性和价效比(也可理解为性价比)。

有两种方式,来构建集群服务器。

一种方式是,基于DNS的负载集群。但是DNS构建的集群很难做到均匀负载和故障迅速切换,也很难处理峰值负载。这是因为DNS负载集群,是基于A记录和TTL值的简单轮循。如果减小TTL值,会增大DNS系统的负载,这种情况下,DNS负载便会成为瓶颈,而更大的TTL值,当服务器宕机后,故障恢复的时间会更长。

另一种方式是,基于调度器的负载集群。相比较基于DNS的方式,它可以更好地调度终端的用户请求到不同的服务器,不单可以以服务器为粒度,还可以以每个连接为粒度来调度。这种负载集群方式可以工作在应用层(七层负载)和IP层(四层负载)。相比较七层负载,四层负载具有更好地性能,可以轻松到扩展到25,甚至是100个节点。而七层负载当扩展到5个节点或者更多节点的时候,七层负载会成为瓶颈。

而IPVS(LVS的内核代码)就是基于调度器的负载集群中的四层负载方式的。

IPVS是如何工作的?

IPVS( IP Virtual Server)在Linux内核中实现了传输层(transport-layer)的负载均衡,所以被称作四层交换。IPVS运行在作为集群真实服务器前端(The front of)扮演负载器(load balancer)的主机上,通过IPVS,可以把TCP或UDP请求转发到真实服务器上,真实服务器上的服务在IPVS看来就是一个独立的IP地址。

如何查看Linux内核是否支持ipvs?

自Linux内核官方2.6.10版本默认就包括了ipvs的1.2.1版本。可以通过lsmod命令来查看是否支持ipvs内核:

# lsmod |head -1 && lsmod |grep ip_vs
Module Size Used by
ip_vs_wrr 12695 1
ip_vs_wlc 12519 0
ip_vs 141303 5 ip_vs_wrr,ip_vs_wlc
nf_conntrack 81926 1 ip_vs
libcrc32c 12644 1 ip_vs

其中ip_vs_wrr是指ipvs的轮循调度模块。所有的ipvs调度策略都是通过Linux内核中的一个独立的模块实现的。

参考资料

LVS Introduction - Load Balancing Server Cluster
http://www.linuxvirtualserver.org/whatis.html

Linux Virtual Server Tutorial
http://www.ultramonkey.org/papers/lvs_tutorial/html/

你可能感兴趣的:(LVS,初步认识,available,provides)