Redis集群(Sentinel)

Redis集群(Sentinel)

Redis:

Redis是一个开源的,支持网络,基于内存的key-value数据库, 使用Redis能极大地提高系统性能, 减轻系统数据库负载, 常用来支撑高并发业务场景.

Redis集群:

随着业务量和应用规模的增大, 单节点的Redis服务已经难以满足业务需求, 存在连续可用性以及支撑瓶颈风险,在服务故障突发的情况下就会被动停止服务, 在生产环境极不安全, 而Redis集群模式可以很好地解决这个问题.
Redis集群可以在某个节点故障的情况下保证数据的的完整性和服务的连续性, 剔除故障节点添加正常节点, 能够自我维护集群的稳定性.

Redis集群主要有三种模式: 主从模式/哨兵模式/Cluster模式

哨兵模式:
  • Sentinel模式原理

哨兵模式基于主从模式, 是Redis高可用的实现方式之一.
哨兵模式使用一个或多个哨兵(Sentinel)组成监控系统,对Redis节点进行监控,在Redis主节点发生故障时,将其剔除Redis集群,并修改其他从节点的配置文件,选择一个Redis从节点将它升级为主节点,完成故障转移,保证Redis集群的高可用性.
image.png

  • Sentinel模式的优缺点

优点:无论Redis主节点宕机或者Redis从节点宕机,整个集群都是可用的,读写操作正常.
缺点:当数据量巨大到一台服务器存储不下时,Sentinel模式仍不能满足需求

Redis集群Sentinel模式的搭建\n以三台Ubuntu18.04-LTS系统为例, Redis版本选择3.2.8

Redis主节点192.168.1.6:6379
从节点一:192.168.1.7:6379
从节点二:192.168.1.8:6379

  • Redis主节点下载解压Redis

下载解压Redis

root@iZbp19avc72hef0pmt4u02Z:/home# wget http://download.redis.io/releases/redis-3.2.8.tar.gz
root@iZbp19avc72hef0pmt4u02Z:~#tar -zxvf redis-3.2.8.tar.gz
root@iZbp19avc72hef0pmt4u02Z:/home# ls
redis-3.2.8.tar.gz  redis-3.2.8
root@iZbp19avc72hef0pmt4u02Z:/home# cd redis-3.2.8
root@iZ2ze26pixxe9t9kmg6tvhZ:/home/redis-3.2.8# ls
00-RELEASENOTES  BUGS  CONTRIBUTING  COPYING  deps  INSTALL  Makefile  MANIFESTO  README.md  redis.conf  runtest  runtest-cluster  runtest-sentinel  sentinel.conf  src  tests  utils
root@iZ2ze26pixxe9t9kmg6tvhZ:/home/redis-3.2.8#
  • Redis主节点编译安装Redis\n创建Redis编译安装目录
root@iZbp19avc72hef0pmt4u02Z:~# cd /home
root@iZbp19avc72hef0pmt4u02Z:/home# mkdir redis
root@iZbp19avc72hef0pmt4u02Z:/home# ls
redis-3.2.8.tar.gz  redis-3.2.8  redis
root@iZbp19avc72hef0pmt4u02Z:/home#

编译安装到指定目录/home/redis

root@iZbp19avc72hef0pmt4u02Z:~#cd /home/redis-3.2.8
root@iZbp19avc72hef0pmt4u02Z:/home/redis-3.2.8# make PREFIX=/home/redis install
root@iZbp19avc72hef0pmt4u02Z:/home/redis-3.2.8#
  • Redis主节点创建配置文件目录,日志目录以及数据目录
root@iZbp19avc72hef0pmt4u02Z:~#cd /home/redis
root@iZbp19avc72hef0pmt4u02Z:/home/redis# make dir conf
root@iZbp19avc72hef0pmt4u02Z:/home/redis# make dir logs
root@iZbp19avc72hef0pmt4u02Z:/home/redis# make dir data
root@iZbp19avc72hef0pmt4u02Z:/home/redis# ls
bin  conf  logs  data
root@iZbp19avc72hef0pmt4u02Z:/home/redis# 
  • Redis主节点修改redis.conf配置文件

将redis解压目录中的redis.conf配置文件复制到/home/redis/conf

root@iZ2ze26pixxe9t9kmg6tvhZ:/home/redis-3.2.8# ls
00-RELEASENOTES  BUGS  CONTRIBUTING  COPYING  deps  INSTALL  Makefile  MANIFESTO  README.md  redis.conf  runtest  runtest-cluster  runtest-sentinel  sentinel.conf  src  tests  utils
root@iZ2ze26pixxe9t9kmg6tvhZ:/home/redis-3.2.8# cp redis.conf ../redis/conf/
root@iZ2ze26pixxe9t9kmg6tvhZ:/home/redis-3.2.8# 
  • Redis主节点修改sentinel.conf配置文件
root@iZ2ze26pixxe9t9kmg6tvhZ:/home/redis-3.2.8# ls
00-RELEASENOTES  BUGS  CONTRIBUTING  COPYING  deps  INSTALL  Makefile  MANIFESTO  README.md  redis.conf  runtest  runtest-cluster  runtest-sentinel  sentinel.conf  src  tests  utils
root@iZ2ze26pixxe9t9kmg6tvhZ:/home/redis-3.2.8# cp sentinel.conf ../redis/conf/
root@iZ2ze26pixxe9t9kmg6tvhZ:/home/redis-3.2.8# 

todo 修改sentinel.conf配置文件

  • Redis从节点(一二)下载解压Redis

同Redis主节点

  • Redis从节点(一二)编译安装Redis

同Redis主节点

  • Redis从节点(一二)修改redis.conf配置文件
  • Redis从节点(一二)修改sentinel.conf配置文件
  • 启动Redis主节点
root@iZbp19avc72hef0pmt4u02Z:~#cd /home/redis/bin
root@iZbp19avc72hef0pmt4u02Z:/home/redis/bin# ./redis-server ../conf/redis.conf
root@iZbp19avc72hef0pmt4u02Z:/home/redis/bin#
  • 启动Redis从节点(一二)

同Redis主节点

  • 启动Redis主节点的哨兵
root@iZbp19avc72hef0pmt4u02Z:~#cd /home/redis/bin
root@iZbp19avc72hef0pmt4u02Z:/home/redis/bin# ./redis-sentinel ../conf/sentinel.conf
root@iZbp19avc72hef0pmt4u02Z:/home/redis/bin#
  • 启动Redis从节点(一二)的哨兵

同主节点

  • 查看Redis集群状态

todo

Redis集群的容灾验证
  • 强行宕掉Redis主节点, 再次检查Redis集群状态

todo

  • 重启被宕掉的原主节点, 再次检查Redis集群状态

todo