集群听起来好像就是一个很高端很的技术,其实不是的,那么集群其实就是一堆计算机的集合,给用户提供同一个服务的一组计算机,就称之为集群,对于用户而言好像就是一台计算机提供的服务,集群主要分为三大类,


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 出现故障而导致整个集群系统瘫痪,

来源:http://www.codesky.net/article/201208/171298.html

浅谈Linux集群的更多相关文章

  1. mongo 3.4分片集群系列之一:浅谈分片集群

    这篇为理论篇,稍后会有实践篇. 这个系列大致想跟大家分享以下篇章: 1.mongo 3.4分片集群系列之一:浅谈分片集群 2.mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3.mong ...

  2. 浅谈MySQL集群高可用架构

    前言 高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用.对于一个系统而言,可能包含很多模块,比如前端应用,缓存,数据库,搜索,消息队列等,每个模块都需要做到高可用,才能 ...

  3. 浅谈mysql集群

    一.什么是MySQL集群 MySQL集群是一个无共享的(shared-nothing).分布式节点架构的存储方案,其目的是提供容错性和高性能. 数据更新使用读已提交隔离级别(read-committe ...

  4. 浅谈elasticsearch 集群

    elasticsearch 集群 摘要: elasticsearch 集群 搭建elasticsearch的集群 现在假设我们有3台es机器,想要把他们搭建成为一个集群 基本配置 每个节点都要进行这样 ...

  5. 浅谈Linux中的信号处理机制(二)

    首先谢谢 @小尧弟 这位朋友对我昨天夜里写的一篇<浅谈Linux中的信号处理机制(一)>的指正,之前的题目我用的“浅析”一词,给人一种要剖析内核的感觉.本人自知功力不够,尚且不能对着Lin ...

  6. linux集群时钟问题

    一.ntpd与ntpdate的区别: 摘自:ntpd与ntpdate的区别 - 百事乐 - 博客园  http://www.cnblogs.com/liuyou/archive/2012/07/29/ ...

  7. 浅谈 Linux 内核无线子系统

    浅谈 Linux 内核无线子系统 本文目录 1. 全局概览 2. 模块间接口 3. 数据路径与管理路径 4. 数据包是如何被发送? 5. 谈谈管理路径 6. 数据包又是如何被接收? 7. 总结一下 L ...

  8. 实验室 Linux 集群的管理常用命令

    实验室有一个Linux集群,本文做一下记录. SSH相关命令 通过SSH登录集群中的其他机器上的操作系统(或虚拟机中的操作系统).操作系统之间已经设置免密码登录. 1. 无选项参数运行 SSH 通常使 ...

  9. 基于VMware的虚拟Linux集群搭建-lvs+keepalived

    基于VMware的虚拟Linux集群搭建-lvs+keepalived 本文通过keepalived实现lvsserver的的双机热备和真实server之间的负载均衡.这方面的blog挺多,可是每一个 ...

随机推荐

  1. linux服务器之LVS、Nginx和HAProxy负载均衡器对比总结

    LVS特点: 1.抗负载能力强,使用IP负载均衡技术,只做分发,所以LVS本身并没有多少流量产生: 2.稳定性.可靠性好,自身有完美的热备方案:(如:LVS+Keepalived) 3.应用范围比较广 ...

  2. plsql 安装后database下拉没有东西

    今天第一天上班我自己也有点紧张,但是问题还是有的: 今天来说一下问题,就是装了plsql竟然在database这一栏没有东西,我也是纠结了很久,感觉今天的任务也被拉下了. 其实这个问题在我以前装的时候 ...

  3. 使用btoa和atob来进行Base64转码和解码

      btoa: 将普通字符串转为Base64字符串 atob: 将Base64字符串转为普通字符串   说明:window.btoa不支持汉字:   ===>使用window.encodeURI ...

  4. hdu 5532

    input 1<=T<=2000 2<=n<=10e5 a1 a2 ... an 1<=ai<=10e5 最多二十个n>1000 output 能否从数组中移 ...

  5. oracle中的常用函数1-------decode方法

    DECODE函数是ORACLE PL/SQL是功能强大的函数之一,目前还只有ORACLE公司的SQL提供了此函数,其他数据库厂商的SQL实现还没有此功能.DECODE有什么用途呢? 先构造一个例子,假 ...

  6. Sticks<DFS>

    题意: 给n个木棍,这些木棍是由m个长度均为L的木棍切割而来,求L的最小值. 思路: DFS+剪枝. 剪枝: 1:L的取值范围在n(max)和n(sum)之间,逐个枚举.sum%L!=0则L不能用. ...

  7. NSObject Class 浅析

    Objective-C中有两个NSObject,一个是NSObject类,另一个是NSObject协议.而其中NSObject类采用了NSObject协议.在本文中,我们主要整理一下NSObject类 ...

  8. NSAttributedString 的21种属性 详解

    原文链接:http://www.jianshu.com/p/09f54730feaa 先看看所有的Key NSFontAttributeName; //字体,value是UIFont对象 NSPara ...

  9. openwrt+ndp+ndppd+radvd+dhcpv6,ipv6穿透配置指南

    要用ipv6首先你的openwrt路由内核必须已经支持ipv6,且能安装相关软件! 首先说说最简单的ndp手工ipv6穿透,很简单,看代码详解: 环境: wan口 eth1 lan口 br-lan w ...

  10. Call an activity method from a fragment

    From fragment to activty: ((YourActivityClassName)getActivity()).yourPublicMethod(); From activity t ...