Linux集群理论及技术

Linux集群理论及技术css

1、定义分类前端

由多台提供相同服务的Linux服务器组成的集合,称为Linux集群。根据集群做用分类为:mysql

一、负载均衡集群(LB)
目的是可以根据网站需求,自由扩展
二、高可用集群(HA)
目的是保障服务长时间可用
三、高性能集群(HP)
目的是解决大数据分析和计算

2、评估网站系统指标sql

一、可扩展性:根据网站需求,自由扩展或缩减
二、可用性:通常使用百分比来评估,95%,99%,99.9%,99.99%,99.999%即,可用性=年可用时长/一年总时长
三、性能:对整个网站访问量和响应时间的评估指标
四、容量:网站访问量,服务器硬件配置评估指标

3、评估运维水平的指标缓存

一、可用性:重中之重,最基础的指标
二、标准化:对多套系统,架构的标准制定;例如:版本控制(包括系统,应用等),目录路径的统一;最后的效果是:提供相同服务的服务器作到只有一个指导文档
三、自动化:作到标准化之后,能够根据本身的需求定制开发本身的运维工具,达到自动化的目的

4、网站演化思路服务器

一、分层:接入层——>应用层——>服务层——>数据层
二、分割:化整为零,将大业务切割成多个小业务
三、分布式
分布式分类举例:
    *分布式应用
    *分布式静态资源
    *分布式数据和存储
    *分布式计算

5、网站演化举例架构

一个以PHP开发的电商网站,初始只有一台lnamp服务器。那服务器遇到瓶颈怎么作扩展呢?负载均衡

一、换高配硬件服务器运维

wKiom1Yc1JTBkQG1AACa7HHJ_oI933.jpg

这种经过更换硬件提升服务器配置性能的扩展,称为纵向扩展。可是,单台服务器的硬件配置终究会有用完的时候,而业务的增加却能够无限制;而且,随着硬件配置的提升,单台硬件服务器的价格也是呈几何倍数增长,投入产出的性价比会愈来愈低。分布式

二、DNS解析

wKioL1Yc1PnS6_QFAACcorass0w645.jpg

这种经过增长提供相同服务的服务器的扩展方式,称为横向扩展。原理是:增长一台提供相同服务的服务器,经过DNS将访问请求分别解析到不一样的ip地址,来达到分流的目的。

这种简单的分流方式存在比较多的问题:1DNS的缓存做用会使分流效果大打折扣;2、服务器之间没有共同的数据存取地址和通讯机制,动态网站存在数据不一样步问题;3、链接的会话可能会被分配到两台服务器上,形成用户看不到以前的操做,仍是同步问题

三、分割

wKiom1Yc1UriQzbGAADFfGS8gxo099.jpg

这也是横向扩展的一种方式,将一台服务器上占用大量资源的服务拆分到单独的服务器上,减轻服务器压力。直到服务器正常,或者直接使每台服务器专一于一件事。

四、集群

通过3分割(分层)后,访问链接数增加,依然会面临资源问题。此时,须要增长某个资源紧张的节点服务器,组合成集群分担压力。相似2中,并行的增长一台节点服务器。例如:3中的AP节点压力过大,资源紧张,就须要增长AP环境的节点数量。全部的AP节点集合组成一个AP集群,其余层次的节点是相同的道理。

wKioL1Yc1ZvCcV1sAACd7fCfTLI832.jpg

五、集群调度

为了解决2中的DNS缓存带来的问题,在集群前端添加一层,做为集群的调度器。调度器的做用就是替代DNS的解析分流方式,由调度器来完成。DNS解析到LB,由LB来分配具体将链接分发给哪一个服务器处理。

wKioL1Yc1gDBQcnOAACiX_gELYs067.jpg

六、SPOF

Single Point of Failure故障单点。问题思考:上面的架构,存在的致命问题,万一LB服务器挂了,形成什么后果?该怎么办?此时,两台LNAMP服务器再也不直接面对外部的用户,链接所有由LB转入这两台服务器的。这样形成的结果就是“服务不可用”,尽管LNAMP两台服务器一点问题都没有。这样的LB服务器在这个架构中就被称为故障单点。那怎么解决?作冗余,下图

wKiom1Yc1e2Ap0utAACrTdh_Ryw983.jpg

两台LB之间通讯,slave固定检测master是否可用,不可用时slave生效顶替master的工做。与mysql的主备结构原理相同

七、缓存

缓存技术是加快服务响应时间的重要手段。在分层结构中每层的前面加入缓存层,能够加快相对服务层的响应速度,CDN技术就是一种缓存手段。缓存的原理就是将静态且访问量最多的数据缓存到内存中,省去内存从硬盘查找读入内存的操做时间,从而达到加速的目的。

缓存命中率:在缓存服务器上读取到的数据所占全部访问数据的比重。需注意影响命中率的因素有:内存过小、数据更新频繁,都会下降命中率。甚至,可能由于频繁的将不一样的数据缓存入内存,内存硬盘数据交互加重,形成没必要要的资源开销浪费。得不偿失;

八、消息队列

构建高可扩展性的网站架构须要遵循的基本原则:在集群系统内部尽可能避免串行化和交互。若是没法避免,能够交互系统之间加入中间层,对系统进行解耦。

消息队列在消息的传输过程当中保存消息的容器消息队列是一种行之有效的解决系统交互,解耦的方法。

wKioL1Yc1jaxBBCcAAB7HVjWsEw764.jpg 

例如:B服务的运行须要用到A服务的运行结果。1AB之间没有中间的一层(AB直接通讯),若是一段时间B的程序运行时间过长,A没法将运行结果交付给B。就会形成A必须等待B而没法运行新的运算,从而浪费A的资源。

2AB之间有一层中间层(例如消息队列),A运行获得的结果存入消息队列,继续下一个请求。B随时能够从队列内读取数据,从而避免上面的状况,使A在任什么时候间均可以接收处理任务请求。                                     

相关文章
相关标签/搜索