Centos7下安装redis集群哨兵模式
整体哨兵模式规划
redis节点规划:6381 (master), 6382 (slave),6383(slave),6384(slave)
sentinel模式节点规划:26381,26382
redis安装教程
redis主从安装步骤
- 安装redis;
- 在 /usr/local/ 目录下创建 redis-sentinel 文件夹;
- 进入 /usr/local/redis-sentinel 目录下,创建文件夹; master-6381,slave-6382,slave-6383,slave-6384,sentinel-26381,sentinel-26382;
- 把 redis 安装目录下的 redis.conf 拷贝到目录 master-6381、slave-6382、slave-6383、slave-6384 下;
cp /usr/local/redis-4.0.6/redis.conf /usr/local/redis-sentinel/master-6381/
cp /usr/local/redis-4.0.6/redis.conf /usr/local/redis-sentinel/slave-6382/
cp /usr/local/redis-4.0.6/redis.conf /usr/local/redis-sentinel/slave-6383/
cp /usr/local/redis-4.0.6/redis.conf /usr/local/redis-sentinel/slave-6384/
- 把 redis 安装目录下 sentinel.conf 拷贝到 sentinel-26381,sentinel-26382 下;
cp /usr/local/redis-4.0.6/sentinel.conf /usr/local/redis-sentinel/sentinel-26381
cp /usr/local/redis-4.0.6/sentinel.conf /usr/local/redis-sentinel/sentinel-26382
- 修改 /usr/local/redis-sentinel/master-6381/ 目录下 redis.conf 配置文件(主服务器);
bind 192.168.1.62 //修改成自己的IP地址,这里我试过启动不起来,需要把这个bind注释掉,监听所有端口,还可以加上密码 requirepass 密码
port 6381 //主服务器的端口号
daemonize yes //后台启动
pidfile /var/run/redis_6381.pid // redis 后台启动的时候,会在/var/run/默认生成一个pid文件
protected-mode no //保护模式关闭,否则启动哨兵的时候,无法正常运行(还可以设置密码的方式)
dir /usr/local/redis-sentinel/master-6381/data //数据保存目录
logfile "6381.log" //日志名字
dbfilename dump6381.rdb //备份文件名字
- 修改 /usr/local/redis-sentinel/slave-6382/ 目录下 redis.conf 配置文件(从服务器);
bind 192.168.1.62 --修改成自己的IP地址,这里我试过启动不起来,需要把这个bind注释掉,监听所有端口,还可以加上密码 requirepass 密码
port 6382 --主服务器的端口号
daemonize yes --后台启动
pidfile /var/run/redis-6382.pid -- redis 后台启动的时候,会在/var/run/默认生成一个pid文件
protected-mode no --保护模式关闭,否则启动哨兵的时候,无法正常运行(还可以设置密码的方式)
dir /usr/local/redis-sentinel/slave-6382/data --数据保存目录
logfile "6381.log" //日志名字
dbfilename dump6381.rdb //备份文件名字
slaveof 192.168.1.62 6381 --主服务器的IP 主服务器端口号(这个需要添加)
- 其他从服务器同上修改成自己的端口;
- 记得在主从目录相应的位置创建data文件夹,否则启动时会报错找不到data文件夹;
- 一定要打开这几个端口否则无法连接;
- 启动一主三从四个服务器;
/usr/local/redis-4.0.6/src/redis-server /usr/local/redis-sentinel/master-6381/redis.conf
/usr/local/redis-4.0.6/src/redis-server /usr/local/redis-sentinel/slave-6382/redis.conf
/usr/local/redis-4.0.6/src/redis-server /usr/local/redis-sentinel/slave-6383/redis.conf
/usr/local/redis-4.0.6/src/redis-server /usr/local/redis-sentinel/slave-6384/redis.conf
启动成功之后使用 ps -ef|grep redis
命令查看进程;
root 19253 1 0 22:52 ? 00:00:00 /usr/local/redis-4.0.6/bin/redis-server *:6382
root 19276 1 0 22:52 ? 00:00:00 /usr/local/redis-4.0.6/bin/redis-server *:6383
root 19298 1 0 22:52 ? 00:00:00 /usr/local/redis-4.0.6/bin/redis-server *:6384
root 19393 1 0 22:53 ? 00:00:00 /usr/local/redis-4.0.6/bin/redis-server *:6381
root 19415 14406 0 22:53 pts/0 00:00:00 grep --color=auto redis
- 使用命令
/usr/local/redis-4.0.6/bin/redis-cli -h ip -p 端口
进入 redis 使用info
查看是否配置好主从,可以看到有3个从;
# Replication
role:master
connected_slaves:3
slave0:ip=127.0.0.1,port=6384,state=online,offset=1078,lag=1
slave1:ip=127.0.0.1,port=6383,state=online,offset=1078,lag=1
slave2:ip=127.0.0.1,port=6382,state=online,offset=1078,lag=0
master_replid:c544526ec7ec485aee47f385ede62f74231f7f32
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1092
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:1092
- 验证:在主节点添加一个值,看看是否能同步到从服务器;
127.0.0.1:6381> set name xpd
OK
127.0.0.1:6382> get name
"xpd"
127.0.0.1:6383> get name
"xpd"
127.0.0.1:6384> get name
"xpd"
在主从配置完成的基础上配置哨兵监控主节点
- 修改 /usr/local/redis-sentinel/sentinel-26381 和 sentinel-26382 目录下的 sentinel.conf
-- 添加以下内容
daemonize yes -- 指定sentinel为后台启动
protected-mode no --关闭保护模式
logfile "/usr/local/redis-sentinel/sentinel-26381/sentinel-26381.log"
-- 修改以下内容
port 26381 -- 指定sentinel端口号
sentinel monitor mymaster [主服务器节点IP] [主服务器节点port] [几个哨兵检测到主节点失联数量] -- 至少有几个哨兵检测到主服务器故障了,才进行故障迁移 ,实例sentinel monitor mymaster 192.168.1.62 6381 2
sentinel down-after-milliseconds mymaster 30000--指定Sentinel判定Master断线的时间
dir /usr/local/redis-sentinel/sentinel-26381/data
- 启动哨兵,并查看哨兵日志,记住开放哨兵端口!!!
/usr/local/redis-4.0.6/src/redis-sentinel /usr/local/redis-sentinel/sentinel-26381/sentinel.conf
/usr/local/redis-4.0.6/src/redis-sentinel /usr/local/redis-sentinel/sentinel-26382/sentinel.conf
tail -f /usr/local/redis-sentinel/sentinel-26381/sentinel-26381.log
tail -f /usr/local/redis-sentinel/sentinel-26382/sentinel-26382.log
[root@VM-24-4-centos sentinel-26382]# tail -f /usr/local/redis-sentinel/sentinel-26382/sentinel-26382.log
3564:X 12 Aug 00:10:32.388 # Configuration loaded
3565:X 12 Aug 00:10:32.390 * Running mode=sentinel, port=26382.
3565:X 12 Aug 00:10:32.390 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
3565:X 12 Aug 00:10:32.394 # Sentinel ID is 433bfdd83c84b102e2f5cc642cd137bbc83710c9
3565:X 12 Aug 00:10:32.395 # +monitor master mymaster 101.23.123.322 6381 quorum 2
3565:X 12 Aug 00:10:32.398 * +slave slave 101.23.123.322:6384 101.23.123.322 6384 @ mymaster 101.23.123.322 6381
3565:X 12 Aug 00:10:32.408 * +slave slave 101.23.123.322:6383 101.23.123.322 6383 @ mymaster 101.23.123.322 6381
3565:X 12 Aug 00:10:32.412 * +slave slave 101.23.123.322:6382 101.23.123.322 6382 @ mymaster 101.23.123.322 6381
3565:X 12 Aug 00:10:32.938 * +sentinel sentinel 357323c61f0a372c16d972ed0603ecaed84f3606 10.0.0.1 26381 @ mymaster 101.23.123.322 6381
3565:X 12 Aug 00:11:02.960 # +sdown sentinel 357323c61f0a372c16d972ed0603ecaed84f3606 10.0.0.1 26381 @ mymaster 101.23.123.322 6381
- 杀掉主节点进程并查看sentinel日志;
- 主节点从6381变成6384;
- 6381节点启动之后变成6384的从节点;