对于一个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