高可用性系统的集群解决方案整理
关于如何设计一个高可用性(部分节点宕机仍然保证可用)的系统,整理下大致思路。
?
系统前端的设计中,采用比较通用的解决方案,Web服务器(如Apache)+ 应用服务器集群(Tomcat或者WebLogic)。
?
客户端(Client)连接Web服务器时需要考虑session的分布式管理,可以用Memcached与中间件结合提供session管理(可以扩展SessionManager或者自定义Filter来实现),为了避免Memcached服务器宕机,需要建立Memcached集群,通过magent进行代理,代理本身也支持集群,因此不需要考虑magent服务器也挂了的情况。
?
※ 注1:Memcached提供session管理,参考:使用memcached实现session远程分布式存储
※ 注2:Memcached作为应用的缓存层,本身设计就不实现冗余机制。参考:Memcached 集群架构问题归纳
※ 注3:magent是一款开源的Memcached代理服务器软件,使用总结: http://blog.s135.com/post/393/
※ 注4:Memcached + magent 的实现方式,参考:Memcached集群/分布式的单点故障
?????????? 摘录如下
?
?
在系统持久层的设计方案中,为了实现高可用性,需要提供数据库集群。
这里有两个方面的考虑,首先,多台DB服务器时提供负载均衡的实现。其次,数据的备份、同步,避免一台DB服务器宕机后数据丢失。
?
※ 注1:数据库的备份同步可以通过数据库本身完成(采取区域复制或者挖掘日志),也可以通过部分第三方同步方案完成。参考:Oracle 数据库之间数据同步方案 或者 SQLServer的集群实现
※ 注2:数据库基本都有实现集群方案,如Oracle的RAC,SQLServer的MSCS等,参考:数据库集群技术分析和比较
?
?
?