几种数据存储及其缓存的结构/架构(一)
很久没有写东西了,一直想好好总结总结。想了想还是先从数据中心来说起,同时呢,同大家共同了解一下数据缓存和分布部署的东东。写的不好,各位看官尽管拍砖,手下留情 :)
05年的时候做过这样一个项目,纯粹的高可用+略微有点高效率的mysql部署架构,目前这种结构在sina内部基本上已经遍地开花了,到处都在用了,因为需要需要借用这样的结构,所以,先做一下简单的说明。
一、 单数据中心的mysql高可用架构
关键字:mysql replication master slave master-backup mon perl
DNS
这是2006年初完成的项目,经过后来同事的大力改进,目前已经遍布在sina主要的数据中心。
(一) 架构图
(二) 系统结构说明
如上图所示,该系统由:
1) DNS服务器群组、
2) MON监控服务器群组
3) MYSQL服务器集群
组成。web群组通过交换机访问DMM结构中的任何服务器。
(三) 系统服务流程描述、负载均衡与故障监控原理
1) MYSQL服务器集群是基于MYSQL本身MASTER/SLAVE的结构实现的扩展,在MYSQL的REPLICATION机制实现读写分离的基础上,MON对MASTER SERVER进行监控,保障故障的及时发现,并触发MASTER SERVER的切换功能,实现故障的自动处理,保障MASTER SERVER的持续运行,集群中MASTER SERVER有两台,实现ACTIVE/STANDBY的结构。
2) MYSQL SLAVE SERVER提供数据的只读服务,WEB服务器的几乎所有应用数据是从SLAVE SERVER群组中取得的。
3) MON的监控群组是ACTIVE/STANDBY的结构,是通过MON的远程监控功能实现的,实现MON监控服务的故障自动切换,保障MON的持续稳定运行。
4) 当MON监控到MASTER SERVER的服务出现故障的时候,MON通过触发监控程序,在DNS SERVER的记录中进行更新,更新该记录所指向的IP为STANDBY SERVER的IP地址,并修改MYSQL集群中所有SLAVE SERVER的配置,更改其配置中MASTER SERVER的IP地址。从而,WEB服务器再次进行数据库写操作的时候,连接将建立到原STANDBY 状态的服务器上。
5) MON对SLAVE SERVER群组中的所有的服务器进行监控,当监控发现其中某台服务器不能正常提供服务时,MON通过触发相应的程序,在DNS的记录中将该服务器的IP去掉。则WEB服务器访问数据库前查询DNS的时候,DNS返回的IP地址组中,将不再包含该IP。
6) 当数据库中有数据需要update或是有新数据insert到数据库等写操作的时候,WEB SERVER通过DNS查询到MYSQL MASTER的IP地址,然后通过该IP同数据库MASTER SERVER进行通信,进行相应的数据库操作。
7) 当WEB服务器需要连接数据库取得数据的时候,首先通过数据库读库的域名由DNS随机分配一个SLAVE SERVER的IP地址,然后WEB服务器通过该IP地址连接数据库,并取得所需数据。
(四) 效果:
目前线上服务器运行的效果是100%,但是应该能够承诺到全年服务时间在4个9,99.99%
(五) 缺点:
最近评论