以前说过,我最喜欢的一个跑Rails的方式是Nginx在前面,后端采用mongrel或者thin,采用nginx的原因不在多说,想详细了解 nginx的参考我以前的文章,按照道理来说,这样的方案已经很不错了,如果再加上memcached做cach,应该可以顶住不小的压力了。 但是其当时也说到,Nginx的负载均衡到目前为止还是比较简单的轮训算法,他不会检测后端的mongrel是否压力过大,或者是否已经down下去了,这样就会初选,如果其中的一个mongrel挂掉了,nginx还是会把请求分过去的,这样就存在一个问题。
于是就有这么一个需求,能不能监控到后端的mongrel的状况,做智能分发呢?啊哈,是的,可以,HAProxy就可以做到这点。先看个改进版的架构。 ok, 比较清晰吧,Nginx接收到请求后,放到RequestQueue中,然后HAProxy从queue中取请求,智能的分发给后端的 App.Server。如此处理的好处就是HAProxy可以判断后端App.Server的负载情况以及是否down机情况,然后做智能分发。
OK,比较清晰了,我们再把Memcached加上,再加上智能判断一台服务器Down掉的情况,我再画个图片,如下:
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。