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

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

场景

LAMP
http,web object简单无状态连接
200,50dynamic
prefork,2M
10M
50*10+150*2 M
apache:进程切换,查询mysql, 网络IO,磁盘IO
2A X B ^ R t 8 W00--->1000
800,200
1600+2000
解决方式
Scv r M Xale ON  :向上扩展   换更好的硬件,如n ; 1 : @ d $换主机
注意:Scale On向上扩展,硬件增长比例与性能增长比例是不成线性的。而且相对于成本是高昂的。
SV 7 R b x Y , z 6cale Out:  向外扩展

需要解决的问题

如何分配调度多台主机:
D@ w g ~ nNS解析
问题:DNS缓存以及DNS缓存服务器的| + h ` g缓存,以及每台主机都必须有独立IP。_ - _ 4 l 5 3 0 !

方案

---->Load Balancing:LB  负载均衡
进行调度,分配,分发(调度算法):? i N 1
Round Robin: 轮调
同一个客户端请求,并发的资源可能来自多7 y . ^ s r台服务器。
服务器的硬件,性L & S 6能有所差异.
WRR:weight Round Robin 加权轮调
考虑公平以及效率,权重weight。? 2 : I能者多劳。l T B + ( 8 3 7 2

场景

不同服务器之间数据的同步
独立出来一台主机做为MYSQL服务器使用。
不同服务器中的数据保存在同一mysql服务器中,解n - T ? ` 8决数据同步问题。
注意:发帖中的附件不能保存在数据库中,附件保存在其他存储设备中,数据库里面仅是一个指针指向附件具体存储的位置。
为了是附件也能在不同服务器进行访问,数据同步,可以在独立出来一台主机作为NFS服务器使用,附件则保存在NFs中,多台服务器都可以直接访问和存储。
网页的页面文件不应该放在NFS上,页面文件要放在本地服务F / O a器上,这样减少请求响应的时间。每台本地服务器上都存放页面文件的话,页面更新困难。
为了解决页面文件的更新困难问题,使用一台作为主的页面文件主机,每次只是更新这一台,并通知其他服! k v 2 / W w O务器,让其他主机主动过来参照更新页面文件。
实现 :rsync 只复制有差异的文件 ,可以远程
同步复制文件机w g /制:
例行计划任务+通知机制(更新即通知)
机制: rsync+inotify
实时监控,页面一有更新,就通知,从服务器就来复制。h P 3 T y Q h U s
集群j m s m A t : d .
ClustW ) : A g f =er
LB:   load Balancing: 负载均衡集群
HA:High Av# ^ @ .aili~ m k R S w l 3able 高可用
注意:负载均衡集群具有高可用的能力,但不是高可用集群。高可用集群的主机之间要进行通信,发送heartbeat,以及宕机后,快速切换服务。
而负载均衡集群的高可用能力是通过上面的调度服务器调度来4 ! O n o a V D l实现。
调度服务器如何知道后端服务器的是否在线或宕机,而进行调x 3 d G W n w b度分配?
对后端服务器的健康检查;
health check:健康检查
检查多次,检查在是否可用,不可用,则重新调度,即从集群中移除,如果检查发现,有可用的集群服务器,就将其加入到集群服务器中,接受调B = Y度分配。
'检查活到死,死到活'
当服务器增多,调度器的资源有限,可能会成为整个系统的瓶颈。
为了$ A t ( f Q h f解决上述问题,进行功能切分4 % e : P / 2。不同功能进行不同集群。使调度器的效率很高。
单一调度器,可能会出现宕机,损@ g w d : X b I坏等,所以要T 6 | {为调度器配备一个备用的调度服务器。
primary-------standby
standy:具备和primary配置一样,IP地址进行切换,自己服务启动。
primary 和 standby时刻通信,发送heartbeat(心跳数),一旦宕机,立即启动,进行切换。

调度器:o E %

高可3 % E 2 Z P用和负载均衡:
负载均衡集群以提高a ) @ v d W j服务的并发处理能力为着眼点的,高可用集群是提高系统始终在线能力为着眼点的。
LB0 | n ? # 6:增加处理能力的,并发处理能力。
HA:增加系统的服务可用性
可用性= 正常在线时间/正常在线时间+ Q ;故障处理时间
在线时间/e W 7 %(在线时间+故障时间)
99%,99.9%提高了10倍的可用性
9C , l9.99% 99.999%
```language
高可用:o F d ^ p pHA
web
primary:IP,web app, 页面----- standby:IP,web app,页面
NFS (瓶颈)
LAMP场景
共享存储:
提高资源利用:
整合起来,web  和 mail 互为高可用 。运行的服务是分开的。
hoH 4 7 z n e : k Lst1:IP1  web       host2:IP2   mails  8 0 s
注意:某个资源只能被某个节点所占用
nop e } D r Nde:节点   主机
host1:
host2:
host3:
多个调度服务器互为高可用集群; e D ,要设置优先级,以及时时发送heartbeat,使用多播,I W ` 5 B =组播的方式。还有集` ! ) ~ R r群事务信息。
DC:推选的事务协调员,如果挂了,就重新推选。
共享存储:
1.R} b _ L G gAID   DAS   块级别
2.NFS    NAS   文件级别
NAS 1000mbps 12.5MB/s
DAS  320Mbps
DAS:Direct At+ d u d C _ | G ^tached Storage直接附加存储
NAS:Network Attacw n O R  u %hed Storage 网络附加存储。
RAID与NFS
NFS对前端服务器而言! . C R x P _,NFs就是文件共享服务器。数据请求是在文件级别上完成的。网络上是以文件
RAID,是磁盘阵列,是通过主板上的总线连接到RAID上,相当于本地存储设备,数据是在, r %块级别上交换的。
磁盘:块级别
一个文件包含多个块。
注意:通过DAS机制,若两个进程工作在一台主机上同时处理同一个文件,可以通过加锁,防止同时处理同一个文件。
当两个进程工作在两个主机上,都同时处理DAS上的主机同一文% p g c + 6 a c件。
注意:两个主机同时加载同一个文件到各自内存里,修改后,将文件写回到DAS里,如果交叉,会是存储混乱。
NFG W Q MS自身可以锁定两个同时写的操作。阻塞另一台主机的写操作。
如果由于没有及时传递heartbear信息,结果切换到备用的调度服务器,而主调度服务器还在写数据到DAS中,而standby也同时写同一个文件。左右就不协调了,称为split-brain:脑裂

解决办法:

1.STONITH:(Shoot The Other Node In The Head)
通过电源交d z Y换机(切断主机的电源)
2.fencing$ Q 7 $ T L -:隔离
拒绝某一节点访问某一` _ * 4  I J资源的机制,使服务器和存储设备断开。
隔离级别:
1.节点级别:STONTIN
2.资源级别
注意:为了防止脑裂,集群分裂,高可用集群至少有3个节点,奇数个节点,仲裁机制,少数服从多数。
补充:
脑裂:H 9 u F ~ j本来一个大脑的两半球互相7 # l E ^ X 5 3 R配合,变成了分裂成两个独立的大脑,都认为对方已 k F } @ S ; #死。在集群环境中,有这么几N C e ? . o | v !种可能造成"Split-Brain"现象:
1、在集群环境中的节点间的心跳线同时断掉后,集群系统所处于x ? q G m的一种特殊状态。例如节点1和2组成一个集群,突然1和2间的心跳同时都断了# { + c 1 / [,如果此前节点1正在运行应用,心跳都断掉后2开始去接管应用,强行加载数据,此时就是split-brain。
2、集群中节点因为处理器忙或者其他原因暂时停止响应时,其他节点可能误认为该节点“已死”。
后果:节点间争夺共享磁盘(即资源)的访问权,都Z g j q p 4 q K对共享文件系统产生读写操作,从而导致共享磁盘文件系统损坏。
解决办法:使用5 T m 4 * l t g r硬盘心跳,scsi reservation,以S , . a c及最极端的power fence。

HP:高性能集群(HBC)

HigA 9 6 ;h Performance
向量机
数据存储,以及磁盘IO可能会产生瓶颈。
化整为零--->合并整合
每台计算机只处理( r w p ( P Z F所有数据的一部分,且每台计算机上只存储一部分数据。
每个节点既是计算节点,也是存储节点。
分布式存储:
分布式文件系统
并行计算(处理)集群:
分布式文件系统
将大大任务切割为{ + ^ 3 ! B | ` u是小任务,分别进行处理的机制。
HP:科学运算集群