一直就想把网上各种流行的集群、负载均衡网站架构都搭建一遍,研究研究。
最近有空,就把流行的架构都搭建了一遍,也算有点小心得,只实现到了session共享,没有太深入的研究。

流行的架构套件主要有以下几种种类:
#心跳软件
keepalived
高可用软件,检测多机之机主机健康状态,通过漂移虚拟IP来达到集群功能

heartbeat
跟keepalived类似,整个研究过程主要是用了keepalived来实现。

#负载均衡软件
Haproxy
高可用、高性能(负载均衡)
用来分发访问资源
可用于web分发,也可以用于Mysql数据库的分发等

Nginx
主要用于web代理,通过代理来达到资源分配的效果。

LVS
系统集群服务

#web服务器
Nginx
apache
tomcat

#分布式缓存
memcached
Redis

#消息队列
kafka

#大数据计算
spark

自己尝试搭建成功的架构有:
[nginx+keepalived(主备) ] + Tomcat
前端nginx代理,keepalived保持主备切换,后端多个tomcat
可以通过nginx的ip_hash保持同一IP访问同一个tomcat,达到session不变化
也可以使用tomcat自带的cluster功能,共享session

[nginx+keepalived(主备) ] + memcached + Tomcat
前端nginx代理,keepalived保持主备切换,后端多个tomcat
通过memcached来共享session
这个方法要注意不同的tomcat版本要下载到不同的memcached-session-manager相关的jar包,有时候一个不同版本的包,就可能不会成功

[nginx+keepalived(主备) ] + redis + Tomcat
前端nginx代理,keepalived保持主备切换,后端多个tomcat
通过redis来共享session
这个方法也要根据不同的tomcat版本要下载到不同的tomcat-redis-session-manager,而且需要自己下载编译。官方说不支持tomcat8,不过网上有人编译好的,可以直接下载来。

[nginx+keepalived(主备) ] + PHP-FPM
前端nginx,keepalived保持主备切换,nginx调用后端的php-fpm来实现解析php

[nginx+keepalived(主备) ] + PHP-FPM + memcache
前端nginx,keepalived保持主备切换,nginx调用后端的php-fpm来实现解析php
通过memcache保存session
这里要注意,memcache有两个php扩展,一个是memcache,一个是memcached

[nginx+keepalived(主备) ] + PHP-FPM + redis
前端nginx,keepalived保持主备切换,nginx调用后端的php-fpm来实现解析php
通过redis保存session