高并发和keepalived

407 阅读4分钟

很多web开发者都不会接触到高并发的项目,但是不代表高并发技术栈理论知识就不需要了解。就像欧洲没有互联网公司(没人比我更了解欧洲互联网环境了),但依旧有程序员。中国自有国情在此,你做的任何一个web应用都有可能成为高并发项目。

提到高并发就离不开负载均衡,负载可以理解为一个服务承受流量的工作状态,没有流量的时候是空载,有了点流量服务就运行起来,当流量超过了这个机器的上限,服务就是满载状态。面对一个流量打满了的服务,要么等,要么崩溃,要么等它崩溃。但机器是死的,我们程序员是活的,解决办法除了关机(别笑,我是认真的),还有就是让流量均匀地打到其他机器上去。

老祖宗有智慧,早就说过,狡兔有三窟,仅得免其死耳。一只兔子要有三个洞藏身,才能免除被猎人猎杀的危险。服务也是一样,如果仅有一台,那么被高并发这个猎人给干掉也无可厚非。所以有多台机器就能抗住更多的流量,抵御更多的风险,均衡讲的就是这么一个意思。

上面我用类比的方式大白话的语境讲述了,系统高可用系统扩展性负载均衡能力。如果一个系统的某些设备被钢铁侠发射的导弹炸掉了,被万磁王给吸走了,也不会影响到原来正常的服务,那么这就是高可用。redis的哨兵就是高可用,redis cluster也是高可用。高可用的原理就像葫芦娃一样,

系统扩展性讲的是提高带宽,增加数据库等等,都对服务是透明的,而且没有负作用。系统扩展性这方面我看很多框架都给我们处理好了,不需要太操心,都是配置一通就可以了。(像我就没有好的扩展性,如果谁给我五百万,我能高兴的当场去世)。

一个服务由多个物理机器提供,每个机器运行的服务是相同的。我们采用某个策略让流量负载到不同的机器上去,每个机器都保持一个比较合理的负载。一个高并发的项目,必然有虚拟服务器,故障隔离和失败切换机制。虚拟服务器是对客户端透明的,似乎只有一个服务器在提供服务。故障隔离是系统可以自动把失效了的机器从工作岗位请下去,不再提供服务。失败切换是针对负载均衡器的一种使用机制,在有两个负载均衡器的时候,一个被钢铁侠给炸伤了,另一个就赶紧接替其工作。

要实现上面我讲的这些功能,就需要一个大名鼎鼎的软件,keepalived。keepalived是一个用c语言编写的路由软件,它是依赖于LVS(Linux Virtual Server)的。当你第一次使用keepalive的使用不要像我一样,去百度如何下载LVS。(钢铁侠看到这里就提问,所以要去google一下怎么下载LVS吗?)嗯,是的,多用google少用百度。LVS由于太棒了,已经包含在linux内核当中了。

讲到这里,就明确了使用keepalived的两个特性。第一服务器必须是linux系统,第二高并发项目适合。keepalived的使用给我的感觉就和配置nginx差不多,而且keepalived很多时候也真的是和nginx一起打配合使用。概念明确了,使用场景明确了,那么怎么安装配置使用一下keepalived练练手呢?

接下来我会把如何下载keepalived和配置使用写成文章发表出来,只要我还活着,大家都有得学。

(本文有什么错误或者歧义请指出,谢谢)