36_01Linux集群系列之一--集群基础概念

对于一个LAMP网站来说,当用户越来越多以至于我的服务器不能快速进行响应的话,应该怎么做?
1、Scale On (向上扩展)
    换用更高的配置,但是硬件的提升并不意味着能力的线性增长,当达到一定程度,也会下降,同时硬件的价格也会上升;
2、Scale Out(向外扩展)    
        
Cluster:

Load Balancing 负载均衡集群

LB的衡量标准:是多少的并发能力;

需要依靠一个特殊的调度器设备,当外部请求过来时,本身并不做任何事情,而是通过Round Robin(轮调)来分配多台主机的资源,完成资源请求;
    当有的主机的配置高于其他主机,通过加权的方式(表明我的配置比你高),实现能者多劳;

  当别人发帖并上传文件至我的网站,调度器分配一个服务器进行上传。但是当下次访问我的网站调度器分配了另外一个主机给别人,那么这个文件怎么可能会找得到,于是出现一个问题,上传的文件应该放在哪个主机上,才能够实现访问?那就在所有主机的下一层搭建一个NFS服务器,所有上传的文件放在NFS服务器上,并分配一个地址,当即使调度器分配不同的主机访问这个文件的时候,都会到再下一层的NFS上得到,从而解决了上传文件的存放问题。
  这又出现一个问题,当我更新了我的主页,上传至其中一台主机,那如何实现所有主机都能够看到这个新的主页??可以利用类似DNS主从复制那种方法,利用rsync进行差异备份,只备份不同的文件至其他主机,但是这又有问题,rsync只能实现差异备份,不同做到同步备份,例如我写个计划任务每一小时从主的服务器上rsync新的文件,但是刚过,我的主页更新了,这意味着在接下来的一小时内不能得到最新的页面,别人多次访问我的网站看到的会是两个不同的主页,额,,是个复杂的问题,那么,有没有一种手段,只要我在一台主机上更新了操作,其他主机上都会立刻得到通知,然后进行更新操作呢,有,利用inotify!!    这个就是利用rsync和inotify来实现多个主机同步。

但是,rsync对于大文件的同步能力不是很强,可以使用sersync.

当然,上面的还只是实现一个廉价的web服务器集群。。。

这种集群,只是适合读更多的web服务器,而对于数据库,就没发进行资源分配,另外表也没法进行存放,当业务再进行增大的时候,再进行重新设计的时候,可以进行横向扩展。
横向扩展:
    当我访问一个网站时,网站对应一个集群,而网站中每一个板块又对应一个集群,例如新闻对应一个集群,博客对应一个集群,军事对应一个集群.......

另外所有的操作都用调度器进行,那如果调度器坏了怎么办??
    那就弄一个从调度器,平时不工作,如果主调度器的心跳(heartbeat)检测停止了,怎么请求回应都没有反应,从调度器夺取主调度器的IP地址,代替主调度器。

而后端服务器挂了一个怎么办?
    后端服务器的健康检查(Health check),调度器应该能对后端服务器进行健康检查,如果在一定次数或时间内一台主机挂了,应该把这台主机剔除出去,调度器会应该自动把分配到这台主机上的请求转发到其他主机上,而添加了一台,又应该能把请求资源分配到新的主机上。

Failover(故障转移)
-Client-Side Connect Time Failover:这种Failover方式只在发起连接时才去感知节点故障
-TAF(Transparent Application Failover):连接建立后,应用系统运行过程中,如果某个实例发生故障,连接到这个实例上的用户会被自动迁移到

其他健康实例上。

High Availiability(HA) 高可用集群
    可用性=MTTF/(MTTF+MTTR)
    MTTF:平均故障间隔时间
    MTTR:平均修复时间

HB的衡量标准:有限时间内或多大比例处于工作状态;
    从99%到99.9%,将近十倍的提升。
        从99%,99.9%,99.99%,99.999%提升,意味着一年停3天,0.3天,3小时,3分钟;
 
split-brain:脑裂    
    当主设备太忙,以至于不能回复从设备的心跳请求,从设备认为它挂了,那么夺得IP地址,然后开启服务,重新代替主设备,当主设备回过神,发现自己挂了,卧槽,这能忍,两台主机同时向DAS中写入数据或读写同一个文件数据,从而导致数据紊乱,我的神,这能行。。这个叫做脑裂
    那么,就出现了,,防止主设备没挂掉,再补其一刀,拔掉它的电源,这个真有这样的设备,两台主机连接到同一个电源设备上,出现上面状况时,从设备会发送指令使主设备断电。
        这个叫做爆头(STONITH) Shoot The Other Node In The Head..
        
当然,直接拔人家电源,太残忍,那么就出现了一种不让他访问存储设备不就行了,这个叫做fencing:(隔离)
但是也有可能出现卧槽,这能忍,你抢我抢,额,完了,玩不下去了。。。

所以,一般真正的集群,3个节点,奇数个,1个始终干不过多个,是吧。

HP(High Performance)高性能计算集群
    用途:主要用于科学计算,大数据处理
    分类:
        向量机
        并行处理集群
            分布式文件系统
            将大任务切割成小任务,分别进行处理的机制

分布式文件系统

DAS的存储要远远快于NAS,所以更多的时候会使用DAS;

DAS: Direct Attached Storage 直连式存储(多个主机可共用一套存储设备)
NAS:Network Attached Storage 网络附属存储

这篇写的挺综合,很适合看!
http://www.admin5.com/article/20120521/432182.shtml
这篇写的挺基础,很适合看!
http://os.51cto.com/art/201405/438325.htm

时间: 2024-08-17 21:24:41

36_01Linux集群系列之一--集群基础概念的相关文章

Linux集群系列之一——集群基础概念

PHP高级工程师之LInux集群(多态主机组合起来,完成一个任务) 在这里和大家分享一下多数网络黑客常用的攻击方式及预防措施. 如有不善,多提意见(QQ:1595068971-邮箱:[email protected]) 负载均衡集群LB(提高服务的病发处理能力为根本)增加处理能力 衡量标准: 病发处理能力(一次性能够处理多少个请求) 高可用集群HA(提升服务的始终在线能力为根本,不会因为宕机而导致服务不可用)增加服务可用性 衡量标准:在线时间 / (在线时间+故障处理时间) 99%,99.9%,

领域驱动设计系列:澄清一些基础概念

要研究DDD,必须认清DDD的核心是通用语言和模型驱动设计.即使是DDDLite(技术上的DDD),也必须清楚DDD在架构中的位置和必须的架构知识,否则一路跑到哪里能否回来都是未知了.我们先了解常用架构分层,再了解DDD的所在层次和范畴,然后强调DDD的核心.包括从架构到领域模型设计方面的决策和自己的些许实践. 1.三层作为基础:表示层.业务逻辑层.数据访问层是所有讨论的基础.有2个最重要的决策和实践等待你应用和发现: (1)在假设存在多个表示层的基础上,你可以据此将分散在表示层中的业务逻辑代码

Java并发编程系列(一)基础概念

1.线程状态图: 5种状态: 1.新建(new) 2.就绪(Runnable) 3.运行(Running) 4.阻塞(Blocked) 等待阻塞:调用了wait()方法 同步阻塞:调用了synchronized()方法或执行了synchronized代码块,但是没有获取到对象的同步锁. 其他阻塞:调用sleep()或join()方法 5.死亡(Dead) 相关方法: 1.run(): 是Runnable接口里唯一的一个抽象方法,可以被重复调用.直接调用run方法,并不会启动新线程,程序中依然只有

linux集群系列(1) --- Linux集群系统基础

一.简介     1.1. Linux集群系统包括集群节点和集群管理器两部分. 集群节点有时简称为节点.服务器或服务器节点,是提供处理资源的系统,它进行集群的实际工作.一般来讲,它必须进行配置才能成为集群的一部分,也必须运行集群的应用软件.应用软件可以是专用于集群的软件,也可以是设计用于分布式系统的标准软件. Linux集群管理器则是将节点捆绑在一起,以构成单一系统外观的逻辑结构,它用于将任务分解到所有的节点.集群因多种不同的原因而有着不同的类型,建立Linux集群的最直接原因是共享CPU资源,

分布式缓存技术redis学习系列(四)——redis高级应用(集群搭建、集群分区原理、集群操作)

本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用(主从.事务与锁.持久化)> 本文我们继续学习redis的高级特性--集群.本文主要内容包括集群搭建.集群分区原理和集群操作的学习. Redis集群简介 Redis 集群是3.0之后才引入的,在3.0之前,使用哨兵(sentinel)机制(本文将不做介绍,大家可另行查阅)来监控各个节点之间的状态.Redi

剖析Elasticsearch集群系列第一篇 Elasticsearch的存储模型和读写操作

剖析Elasticsearch集群系列涵盖了当今最流行的分布式搜索引擎Elasticsearch的底层架构和原型实例. 本文是这个系列的第一篇,在本文中,我们将讨论的Elasticsearch的底层存储模型及CRUD(创建.读取.更新和删除)操作的工作原理. Elasticsearch是当今最流行的分布式搜索引擎,GitHub. SalesforceIQ.Netflix等公司将其用于全文检索和分析应用.在Insight,我们用到了Elasticsearch的诸多不同功能,比如: 全文检索 比如找

集群系列教程之:keepalived+lvs 部署

集群系列教程之:keepalived+lvs 前言:最近看群里很多人在问keepalived+lvs的架构怎么弄,出了各种各样的问题,为此特别放下了别的文档,先写一篇keepalived+lvs架构的文档,使那些有需求的人能够得以满足.但是此篇文档是架构文档,不是基础理论,但我想你能做这个架构,势必也了解了基础理论知识,更多的理论知识体系,请看下回分解.... 测试拓扑: 环境说明: 从上面的拓扑图,就可以看出本实验的环境信息,其中实线代表的是真实的物理连接,而虚线表示的是逻辑关系.hostna

HA Cluster基础概念及实现高可用集群

HA Cluster高可用集群分以下几个步骤来说: 点我-->HA Cluster基础概念 点我-->heartbeat实现HA 点我-->corosync详解 点我-->pacemaker详解 点我-->DRBD详解 点我-->heartbeat基于crm进行资源管理 点我-->Corosync+Pacemaker+DRBD+MySQL 实现高可用(HA)的MySQL集群 点我-->Heartbeat+MySQL+NFS 实现高可用(HA)的MySQL集群

mongo 3.4分片集群系列之四:搭建分片集群--哈希分片 + 安全 + 区域

这个系列大致想跟大家分享以下篇章(我会持续更新的(^ω^)): 1.mongo 3.4分片集群系列之一:浅谈分片集群 2.mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3.mongo 3.4分片集群系列之三:搭建分片集群--哈希分片 + 安全 4.mongo 3.4分片集群系列之四:搭建分片集群--哈希分片 + 安全 + 区域 5.mongo 3.4分片集群系列之五:详解平衡器 6.mongo 3.4分片集群系列之六:详解配置数据库 7.mongo 3.4分片集群系列之七:配置数