浅谈Linux集群
集群听起来好像就是一个很高端很的技术,其实不是的,那么集群其实就是一堆计算机的集合,给用户提供同一个服务的一组计算机,就称之为集群,对于用户而言好像就是一台计算机提供的服务,集群主要分为三大类,
LB 负载均衡集群
负载均衡集群主要是提高服务的响应能力的,比如说某服务器的并发响应能力是100个,这个时候经常有人反映说连不上服务器,这个时候解决方案一般有 两种,一,升级硬件,升级硬件显然不是很好的解决方案,假如说升级硬件之后过了一段时间由于业务量的加大,服务器又负载不起了怎么办呢, 二,将现有空闲低配的设备组合起来做成一个具有高并发的负载均衡集群,多台计算机同时分摊负载用户的请求,这样一来服务器的压力也没有那么大了,那么这一 类的集群具有很好的可伸缩性,可靠性,和成本低廉等好处,
HA 高可用性集群
高可用性集群主要是提供7*24小时不间断服务的,不能说因为一台或几台服务器的down机而导致无法提供服务的,如果某台down机了,会自动的切换到其他计算机上面工作,从而达到高可用的效果,
HP 高性能集群
高性能集群主要是用于需要大量CPU运算的场景中,比如说天气预报,国外3D大片的特效制作,等等一系列需要做大量运算的应用,
上面介绍了集群应用的三大类,下面来介绍下三大应用中各种实现的机制,
LB 负载均衡集群又分为硬件级与软件级的
硬件类的价格比较贵,F5,等
软件级的比较常见的有如下两种:LVS、Haproxy
HA 高可用集群的解决方案常见的有以下几种
heartbeat、corosync+openais RHCS、ultramokey、keepalived
HP 高性能集群的解决方案常见的有以下
bowerful
上面说了各种集群的解决方案,一般情况下负载均衡集群和高可用集群是结合起来使用的,下面来说说负载均衡集群中比较常用的LVS
LVS (linux virtual server) linux 虚拟服务器
lvs是由国人章文嵩开发的一款自由软件,lvs具有很好的可伸缩性,可靠性,和可管理性,通过linux系统和lvs可以实现一个高可用,高性能,低成本的服务器集群,
lvs是三层架构的,也就是说lvs有三个部分组成的,:最前端的负载均衡器LB,中间的是应用服务器群组,后端的是共享存储,见下图
lvs的三种工作模型
NAT模型
NAT模型显然根据名字都可以看出来,是通过网络地址转换来实现的,他的工作方式是,首先用户请求到达前端的负载均衡器(即Director Server),然后负载均衡器根据事先定义好的调度算法将用户请求的目标地址修改为后端的应用服务器(即Real Server) , 应用程序服务器处理好请求之后将结果返回给用户,期间必须要经过负载均衡器,负载均衡器将报文的源地址 改为用户请求的目标地址,再转发给用户,从而完成整个负载均衡的过程,
NAT模型的特点如下,
所有的节点必须在一个IP网络中
只需有一个公有地址即可
支持端口映射
后端的应用服务器不区分平台
进出数据包都需要经过负载均衡器,当负载过大的时候,负载均衡器将是整个集群的瓶颈
最多支持8个节点,
DR模型
DR模型是通过路由技术实现的负载均衡技术,而这种模型与NAT模型不同的地方是,负载均衡器通过改写用户请求报文中的MAC地址,将请求发送到 Real Server, 而Real Server直接响应用户,这样就大大的减少负载均衡器的压力,DR模型也是用的最多的一种,
DR模型的特点如下,
所有的集群节点都必须同一个物理网络中
RIP可以是公有IP也可以是私有IP
负载均衡器只响应进站请求,
不支持端口映射
TUN模型
TUN模型是通过IP隧道技术实现的,TUN模型跟DR模型有点类似,不同的地方是负载均衡器(Director Server)跟应用服务器(Real Server)通信的机制是通过IP隧道技术将用户的请求转发到某个Real Server,而Real Server 也是直接响应用户的,
TUN模型的特点,
所有的集群节点可以在任意地方
RIP必须是公网IP
负载均衡器只响应进站请求
不支持端口映射
上面介绍了LVS的工作模型,下面来说说LVS支持的调度算法
调度算法也可以称为负载均衡的方法,上面说过前端的负载均衡器(Director Server)会将用户的请求分摊给后端的应用服务器(Real Server),那么负载均衡器(Director Server)怎么会知道将用户请求分摊到哪台应用服务器(Real Server)呢? 就是根据调度算法来实现将用户请求具体分摊到哪台应用服务器(Real Server)的,在LVS中支持多达10种调度算法,下面来说说几个常用的调度算法,
轮询, 轮询调度是将用户请求平均分摊到Real Server 上去,
加权轮询, 加权轮询可以为Real Server 设置不同的权值,对于性能好的Real Server可以较高的权值,而性能比较差的Real Server 的权值可以设置较低点,这样的话就充分利用了服务器的资源,
最少连接, 最少连接调度会动态的将用户请求分摊到已建立的连接最少的Real Server上去,
加权最少连接, 加权最少连接可以将性能好的服务器的全值设置高点,性能差的服务器权值设置低一些,
除了上面四个外还有目标地址hash算法调度, 源地址hash算法, 最少期望延迟调度, 基本地的最少连接调度, 带复制的最少连接调度,等,
上面说了负载均衡集群LVS,其实LVS有一个致命的缺点,当有台负载均衡器(Director Server) 挂掉的时候,那么整个集群将瘫痪了,上面说过负载均衡集群一般要和高可用集群结合起来使用的,这样就可以避免某个Director Server 出现故障而导致整个集群系统瘫痪,