部署架构上采用三台机器,一个master接受写请求,两个slave进行数据同步,三台机器上都部署sentinel(一般为奇数个,因为需要绝大部分进行投票才能failover)。(官方示例)具体架构如下图:
注意:如果有条件可以将sentinel多部署几个在客户端所在的应用服务器上,而不是与从节点部署在一起,这样避免整机宕机后sentinel和slave都减少而导致的切换选举sentinel无法超过半数。
redis高可用环境不需要进行心跳线的配置,每个物理节点的网卡进行双网卡主备绑定生成bond0即可。
用户名
用户所在组
用户目录
权限
备注
redis(10086)
redis (10086)
/redis
sudo(如需要浮动ip时赋予)
--
如果读多写少,可以在master上只开启aof,在低峰期定时进行bgsave,在slave上彻底关闭持久化。 如果读写差不多,可以在一个slave上开启rdb(这个slave只做持久化,不进行读操作),在其余主从都关闭持久化。 注意:从节点是不会从本地恢复而直接从master节点进行恢复的,因此在重启前如果有需要备份从节点,则需要把aof和rdb文件移走。
目录
含义
/redis/bin
redis可执行文件
/redis/conf
redis 和supervisord的配置文件
/redis/run
redis和supervisord运行时的pid文件
/redis/log
redis和supervisord的日志
/redis/script
一些管理脚本和测试脚本
/redis/data
redis持久化数据目录
解压下列压缩包至/tmp/redis目录,以符合上述目录结构:
部署相关组件: cd /tmp/redis/deploy ./deploy.sh
修改master配置文件redis.conf,注释掉包含slaveof的语句。 修改slave配置文件redis.conf,添加slaveof masterip port,指定主从 修改三台机器的sentinel配置文件,指定主服务器的ip和端口: sentinel monitor mymaster masterip port 2
然后使用supervisord重新启动。
首先,一个sentinel可以配置多个master。一个master的配置如下:
<b>本文为《redis开发运维实践指南》内容,该书作者为黄鹏程,已授权云栖社区转载。</b>