zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

Redis开发运维实践高可用和集群架构与实践(二)

2023-09-11 14:15:59 时间
11.1.2.1 部署架构

部署架构上采用三台机器,一个Master接受写请求,两个Slave进行数据同步,三台机器上都部署sentinel(一般为奇数个,因为需要绝大部分进行投票才能failover)。(官方示例)具体架构如下图:

注意:如果有条件可以将sentinel多部署几个在客户端所在的应用服务器上,而不是与从节点部署在一起,这样避免整机宕机后sentinel和slave都减少而导致的切换选举sentinel无法超过半数。

11.1.2.2 网络规划

redis高可用环境不需要进行心跳线的配置,每个物理节点的网卡进行双网卡主备绑定生成bond0即可。

11.1.2.3 用户规划
11.1.2.4 持久化规划

如果读多写少,可以在master上只开启aof,在低峰期定时进行bgsave,在slave上彻底关闭持久化。 如果读写差不多,可以在一个slave上开启rdb(这个slave只做持久化,不进行读操作),在其余主从都关闭持久化。 注意:从节点是不会从本地恢复而直接从master节点进行恢复的,因此在重启前如果有需要备份从节点,则需要把aof和rdb文件移走。

11.1.2.5 目录规划

解压下列压缩包至/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重新启动。

11.1.2.7 配置文件

首先,一个sentinel可以配置多个master。一个master的配置如下:

port 26379

###定义目录存放

dir "/redis"

###监控mymaster(可自定义-但只能包括A-z 0-9和”._-”),注意quorum只影响ODOWN的判断,但是不影响failover,发生failover的条件必须是半数sentinel认为老Master已经ODOWN。此参数建议设置为sentinel/2+1的数值,否则可能会产生脑裂。

sentinel monitor mymaster 192.168.145.131 6379 2

###mymaster多久不响应认为SDOWN,设置为3100也就是说3次ping失败后认为SDOWN

sentinel down-after-milliseconds mymaster 3100

###如果在该时间(ms)内未能完成failover操作,则认为该failover失败

sentinel failover-timeout mymaster 15000

###在执行故障转移时, 最多可以有多少个从Redis实例在同步新的主实例, 在从Redis实例较多的情况下这个数字越小,同步的时间越长,完成故障转移所需的时间就越长

sentinel parallel-syncs mymaster 1

###reconfig的时候执行的脚本(选配)

sentinel client-reconfig-script mymaster /redis/script/failover.sh

###出现任何sentinel在warning事件时候执行的脚本(选配)

sentinel notification-script mymaster /redis/script/notify.sh

####日志位置

logfile "/redis/log/sentinel.log"


本文为《Redis开发运维实践指南》内容,该书作者为黄鹏程,已授权云栖社区转载。

国王小组:国际多语言交易所搭建|如何选择开发架构风格 DDD为复杂软件的设计提供了指导思想,其将易发生变化的业务核心域放置在限定上下文中,在确保核心域一致性和内聚性的基础上,DDD可以被多种语言和多种技术框架实现,具体的框架实现需要根据实际的业务场景和需求来制定。