随着一个公司的不断发展,用户量随之增多,对服务器的负载能力要求也逐渐增高,可采取换购高性能服务器解决负载能力问题,这叫做向上扩展。但扩展硬件终究会达到一个极限,此时便无法满足负载要求。而且换购高性能服务器投入的资金与提高负载能力的水平并不划算,可能投入大笔资金换来的只是20%左右负载能力的提高。所以有了集群(Cluster)的概念,也就是计算机的集合,多台服务器通过前端调度器的调度为用户提供服务,也就是向外扩展。
    Linux Cluster分为几个类型:LB、HA、HP、DS,LB就是负载均衡,多台服务器同时提供服务,这样的集群中存在一个调度器,这是负载均衡集群中的核心所在也是会出问题的一个点,一旦调度器出现问题,便会出现单点故障,所以调度器会成为性能瓶颈;HA被称为高可用集群,这里有MTBF(平均无故障时间)和MTTR(平均故障修复时间)以及Availability=MTBF/(MTBF+MTTR)的概念,一旦我们使MTTR的时间趋向于0,集群的高可用性便会很好,对于不同的业务,可用性要求也不同,一般会采用降低MTTR来提高可用性;HP被称为高性能集群,集中多台服务器的计算能力完成某些计算操作;DS被称为分布式系统,分布式存储和分布式处理较多使用这种服务。
    lvs集群分为四种类型:lvs-nat,lvs-dr,lvs-tunnal,lvs-fullnat,前三种类型是章文嵩先生研究所得,lvs-fullnat是后来开发来的一种集群类型,一般较多使用lvs-nat和lvs-dr这两种类型的集群完成集群服务的部署,下面是lvs-nat集群的工作简图:


Linux集群简介以及lvs-nat部署(一)_第1张图片

    


    客户端发送一个请求报文于调度服务器上,此时源IP地址和目的IP地址分别为CIP和VIP,调度服务器的VIP网卡接受到报文,传给input链,在链上匹配规则,如果匹配到是对应服务,则通过DIP网卡传送至后端RS提供服务,此时报文源IP地址和目的IP地址分别为CIP和RIP,后端RS接受到报文请求便提供服务。这里注意后端RS服务器为了防止外网用户直接访问,IP地址应为私有IP地址,只能通过VS调度至RS服务器。所以在RS中需要配置跳转至DIP的网关。由于这种集群类型的请求报文和响应报文都需要经过调度器转发,请求报文只有几十字节,而响应报文远远不止几十字节这么简单,因此调度器也便成了整个集群性能的瓶颈可能会引发单点故障。

    下面配置一个lvs-nat集群并进行测试:

    计划两台RS所在192.168.100.0/24网段,VS中172.16.0.0/16网段接收报文,192.168.100.0/24网段与RS交流。

    首先配置两台RS的IP地址:

Linux集群简介以及lvs-nat部署(一)_第2张图片

Linux集群简介以及lvs-nat部署(一)_第3张图片

    在两台RS上搭建Apache/HTTPD服务,RS1监听8080端口,RS2监听80端口:

d02e4a620083716c587d57fa94433333.png-wh_

Linux集群简介以及lvs-nat部署(一)_第4张图片

    注意:每台RS还需要一个网关以回应报文:

79662a5325907e4427b5f1769046cff2.png-wh_

    这时配置VS,首先也是先配置VS中两块网卡IP:

Linux集群简介以及lvs-nat部署(一)_第5张图片

    接下来配置VS的集群服务:

    0ab0502d645995462dc7596c7691bb5f.pngLinux集群简介以及lvs-nat部署(一)_第6张图片

    此时已经完成lvs-nat集群的搭建,但是可能172.16.0.0/16网段并不能访问后端服务器RS,VS明明已经接收报文,但是没有转发出去,这时需要开启Linux内核的ip_forward模块。有两种开启方式:临时开启是将此/proc/sys/net/ipv4/ip_forward文件中保存的值置1,永久开启则是将/etc/sysctl.conf中net.ipv4.ip_forward=0改为net.ipv4.ip_forward=1。

    接下来测试搭建lvs-nat集群时使用的rr算法:

    Linux集群简介以及lvs-nat部署(一)_第7张图片