前端负载均衡&架构
一直对浏览器到服务层这部分访问的负载均衡不是很清楚,今天看了一篇58到家shenjian的文章,觉得不错,这里大概说说自己的感想,文中的图都是借用人家的,特此说明
第一阶段(裸奔)
请求量很少,通过浏览器访问一个域名,经过DNS解析后,直接就到了 tomcat了
第二阶段(简单扩容)
第一个阶段很明显,如果tomcat挂了,那么系统就挂了,所以进行了简单的扩容,增加了web服务器
第三阶段(加了nginx的简单扩容)
第二个阶段很明显,首先对外暴露了过多的ip,其次DNS解析出来的服务器是否可用,无法保证,所以加了nginx
加了nginx之后,扩容就容易了,切换流量也容易,但如果nginx挂了怎么办呢
第四个阶段(使用keepalived)
使用keepalived使用管理两台nginx,如果一台nginx挂了,可以切换到另外一台nginx
这样也有两个问题:1.nginx的资源利用只有一半 2.如果请求超过nginx的单点性能极限,咋办
第五阶段(使用lvs和f5)
lvs和f5一个在操作系统层面,一个在硬件层面,它们的性能远超nginx,所以用它们管理一个nginx的集群再合适不过了
第六阶段(重新回到之前的DNS轮询)
第五个阶段基本已经可以抗住99.999%公司的访问了,但是如果请求确实超过了单点lvs和f5的性能极限呢。其实水平扩展是最好的解决办法
可以通过DNS轮询来接入多个lvs和f5,如果还不行,再继续水平加lvs和f5。