不单纯用heartbeat而用lvs+keepalived的原因

回复 收藏
本帖最后由 lyhabc 于 2016-1-13 21:42 编辑

为什麽很多公司都不用heartbeat,而用keepalived、nginx、lvs
今晚在地铁上想了一下原因
前端web一般用lvs或nginx做代理,并加个keepalived做lvs和nginx这两个代理的高可用
然后后端可以多个realserver或者webserver
这里会浪费掉一台代理,因为做高可用,另外一台代理是空闲的而web没有像数据库的脑裂问题,只需要每台机器都用rsync+crontab,同步www网站目录就可以了,各个机器的www网站目录里的文件都是一样的,不会出现a用户上传文件到a服务器,而下次a用户登录系统连接到b服务器发现他上传的文件没有了的问题
另外也可以使用inotify +rsync,不过inotify 有损坏硬盘的问题



而对于数据库mysql而言,heartbeat是不能用的,一般用keepalived
为什麽不能用heartbeat做mysql高可用,我们在铭哥的课上也看到,同一时刻只能一台机器启动服务,备机是不能启动服务的
备机(mysql从库)不能启动服务,那么从库做同步binlog日志呢?

所以一般用keepalived,keepalived只负责漂移vip,不管程序服务例如mysql的启停,但是keepalived有脑裂问题,而heartbeat没有脑裂问题

那有没有完美的方案呢,有,就是DRBD+Heartbeat+MySQL

如果要用heartbeat做mysql高可用也可以,需要加DRBD
DRBD+Heartbeat+MySQL
DRBD相当于共享存储了,因为用的DRBD,所以mysql从库是不需要启动的

不需要购买昂贵的共享存储,只需要搭建DRBD就可以了,而且不会脑裂



2016-01-13 21:36 举报
已邀请:

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: