Redis + Sentinel服务搭建

本来不想写的,但前两天因工作需要新部署一套3Redis + 3Sentinel的架构的时候,发现步骤好多细节全忘了,又重头查官站搞了一遍……还是写下来吧,权当备忘。

安装Redis Master节点

下载源码包

https://redis.io/download

编译安装

make PREFIX={destpath} install

进入{destpath},创建相关目录

mkdir logs conf rdb

redis.conf

从源码包中把redis.conf拷贝到{destpath}下
编辑redis.conf,主要关注几个地方:

bind {ip}  #不要bind 127.0.0.1
port {port}
protected-mode yes  #不要关闭protected-mode
daemonize yes #后台运行
logfile "{destpath}/logs/redis.log"
requirepass "{password}"
dir "{destpath}/rdb"  #dump.rdb输出位置

修改操作系统参数

编辑/etc/sysctl.conf

vm.overcommit_memory = 1
net.core.somaxconn = 1024

立即生效:

sysctl -p

启动

bin/redis-server ./redis.conf

验证

安装配置两个Slave节点

步骤同上,唯一区别是在redis.conf中增加两行:

slaveof  
masterauth "{password}"

验证主从同步

在master节点写数据,从slave节点读取,具体略

配置三个Sentinel节点

sentinel.conf

在{destpath}下编辑sentinel.conf

daemonize yes
loglevel notice
logfile "{destpath}/logs/sentinel.log"
bind {ip}
port {port}
dir "/tmp"
sentinel monitor {name} {masterip} {masterport} 2  #name为主从集群标识名,可随便定义
sentinel down-after-milliseconds {name} 8000  #master失联多久后启动选举
sentinel auth-pass {name} {password}  #{password}为在redis.conf中配置的

启动

bin/redis-sentinel ./sentinel.conf

验证

三个sentinel节点均启动后,使用redis-cli登入任意一个sentinel节点,执行:

SENTINEL master {name}

会输出当前master的信息,应为当前主节点的ip和port

SENTINEL slaves {name}

输出slave的信息,应输出除master外另两个Redis实例的ip和port
上述两个命令输出的flags字段应该为"master"和"slave",如果出现"sdown"、"odown"等信息,则说明配置有误

failover测试

连接master节点,执行命令:

DEBUG sleep 10

此命令会让master节点停止工作10秒钟,如果配置的down-after-milliseconds在10秒以内的话,应当会触发sentinel的选举。
等待10秒后,连接任意sentinel,执行

SENTINEL master {name}

应看到返回的master变为了另一个ip,而

SENTINEL slaves {name}

返回的两个slave中应包含原先的master

你可能感兴趣的:(Redis + Sentinel服务搭建)