Redis哨兵模式安装与配置

在介绍哨兵模式之前首先介绍下Redis主从复制

Redis 主从复制 可将 主节点 数据同步给 从节点,从节点此时有两个作用:

  1. 一旦 主节点宕机从节点 作为 主节点备份 可以随时顶上来。
  2. 扩展 主节点读能力,分担主节点读压力。
Redis主从复制模式

主从复制 同时存在以下几个问题:

  1. 一旦 主节点宕机从节点 晋升成 主节点,同时需要修改 应用方主节点地址,还需要命令所有 从节点复制 新的主节点,整个过程需要 人工干预
  2. 主节点写能力 受到 单机的限制
  3. 主节点存储能力 受到 单机的限制
  4. 原生复制 的弊端在早期的版本中也会比较突出,比如:Redis 复制中断 后,从节点 会发起 psync。此时如果 同步不成功,则会进行 全量同步主库 执行 全量备份 的同时,可能会造成毫秒或秒级的 卡顿

Redis Sentinel 是 Redis 高可用 的实现方案。Sentinel 是一个管理多个 Redis 实例的工具,它可以实现对 Redis 的 监控、通知、自动故障转移。

1. Redis Sentinel规划

一个一主多从的Redis系统中,可以使用多个哨兵进行监控任务以保证系统足够稳健。此时,不仅哨兵会同时监控主数据库和从数据库,哨兵之间也会相互监控。在这里,建议大家哨兵至少部署3个,并且使用奇数个哨兵。
本文使用3台服务器作为sentinal哨兵节点,另外3台服务器作为主从数据节点。

IP 端口号 角色
192.168.88.111 6379 Redis Master
192.168.88.112 6379 Redis Slave
192.168.88.113 6379 Redis Slave
192.168.88.114 26379 Sentinel
192.168.88.115 26379 Sentinel
192.168.88.116 26379 Sentinel

2. Redis安装与配置

本文使用的Redis版本为redis-4.0.11

2.1 数据节点和哨兵节点通用安装

源码安装包redis-4.0.11.tar.gz放在/opt目录下。

# 解压
cd /opt
tar -zxvf redis-4.0.11.tar.gz
cd redis-4.0.11

# 安装
make
make install

# 创建相关文件夹
mkdir /usr/local/redis

# 拷贝启动命令文件
cd /opt/redis-4.0.11/src
cp redis-cli /usr/local/redis
cp redis-server /usr/local/redis

2.2 主从数据节点配置

拷贝配置文件到相关目录:

cd /opt/redis-4.0.11
cp redis.conf /usr/local/redis

编辑配置文件:

cd /usr/local/redis
vim redis.conf

常用配置如下:

# 注释以下内容开启远程访问
# bind 127.0.0.1

# Redis使用后台模式
daemonize yes

# 关闭保护模式
protected-mode no

# 修改pidfile指向路径
pidfile  /usr/local/redis/redis.pid

#日志文件
logfile " /usr/local/redis/log/redis.log"

#数据库文件名
dbfilename dump.rdb

#数据库文存放目录
dir /usr/local/redis/data

如果是从节点服务器,则redis.conf配置文件中还需要添加如下内容:

# 192.168.88.111为主节点ip,6379为端口
slaveof 192.168.88.111 6379

启动服务:

cd /usr/local/redis
redis-server redis.conf

启动客户端:

redis-cli
redis-cli -p 6379

查看节点状态:

info replication

如果需要远程连接redis服务器,需要修改防火墙配置:

# centos 6
vim /etc/sysconfig/iptables
# 添加如下配置
-A INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT
service iptables restart

# centos 7
firewall-cmd --permanent --add-port=6379/tcp
firewall-cmd --reload

没有使用哨兵模式,主redis服务器挂掉之后,从redis服务器只能读不能写。

2.3 sentinel哨兵节点配置

拷贝sentinel配置文件到相关目录:

cd /opt/redis-4.0.11
cp sentinel.conf /usr/local/redis

编辑配置文件:

# 关闭保护模式
protected-mode no

# sentinel monitor [master-group-name] [ip] [port] [quorum]
# 该行的意思是:监控的master的名字叫做mymaster (可以自定义),地址为192.168.88.111:6379,行尾最后的一个2代表在sentinel集群中,多少个sentinel认为master死了,才能真正认为该master不可用了。
sentinel monitor mymaster 192.168.88.111 6379 2

启动sentinel:

cd /usr/local/redis
redis-server sentinel.conf --sentinel

防火墙设置:

vim /etc/sysconfig/iptables
# 添加如下配置
-A INPUT -m state --state NEW -m tcp -p tcp --dport 26379 -j ACCEPT
service iptables restart

# centos 7
firewall-cmd --permanent --add-port=26379/tcp
firewall-cmd --reload

3. 总结

Redis哨兵为Redis提供了高可用性。实际上这意味着你可以使用哨兵模式创建一个可以不用人为干预而应对各种故障的Redis部署。

哨兵模式还提供了其他的附加功能,如监控,通知,为客户端提供配置。

下面是在宏观层面上哨兵模式的功能列表:
监控:哨兵不断的检查master和slave是否正常的运行。
通知:当监控的某台Redis实例发生问题时,可以通过API通知系统管理员和其他的应用程序。
自动故障转移:如果一个master不正常运行了,哨兵可以启动一个故障转移进程,将一个slave升级成为master,其他的slave被重新配置使用新的master,并且应用程序使用Redis服务端通知的新地址。
配置提供者:哨兵作为Redis客户端发现的权威来源:客户端连接到哨兵请求当前可靠的master的地址。如果发生故障,哨兵将报告新地址。

哨兵的分布式特性
Redis哨兵是一个分布式系统:
哨兵自身被设计成和多个哨兵进程一起合作运行。有多个哨兵进程合作的好处有:
当多个哨兵对一个master不再可用达成一致时执行故障检测。这会降低错误判断的概率。
即使在不是所有的哨兵都工作时哨兵也会工作,使系统健壮的抵抗故障。毕竟在故障系统里单点故障没有什么意义。

Redis的哨兵、Redis实例(master和slave)、和客户端是一个有特种功能的大型分布式系统。

当然,Redis Sentinel 仅仅解决了 高可用 的问题,对于 主节点 单点写入和单节点无法扩容等问题,还需要引入 Redis Cluster 集群模式 予以解决。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,904评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,581评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,527评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,463评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,546评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,572评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,582评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,330评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,776评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,087评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,257评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,923评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,571评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,192评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,436评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,145评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容