Redis主从加Sentinel模式部署

一、简介

官网 https://redis.io
中文官网 http://redis.cn/
通过Redis主从复制功能可以实现读写分离,一主多从的架构。
Redis Sentinel可用实现redis故障master自动切换,实现redis高可用
二、部署目标 一主两从,三哨兵
  1. 主 192.168.66.70:6379
  2. 从 192.168.66.71:6379
  3. 从 192.168.66.72:6379
  4. 哨兵 192.168.66.70:26379
  5. 哨兵 192.168.66.71:26379
  6. 哨兵 192.168.66.72:26379
三、安装Redis
  1. 下载redis安装包
mkdir /usr/local/redis cd /usr/local/redis wget http://download.redis.io/releases/redis-5.0.5.tar.gz

  1. 解压压缩包
tar xzf redis-5.0.5.tar.gz

  1. yum 安装gcc依赖
yum install gcc -y

  1. 编译安装
cd redis-5.0.5 make MALLOC=libc

  1. 将src目录下文件加载到usr/local/bin目录下
cd src make install

四、配置reids和sentinel服务
  1. 创建/etc/redis配置文件目录,/var/log/redis日志目录
mkdir /etc/redis mkdir /var/log/redis

  1. 复制redis和sentinel配置文件到etc目录下
cp /usr/local/redis/redis-5.0.5/redis.conf /etc/redis/ cp /usr/local/redis/redis-5.0.5/sentinel.conf /etc/redis/

  1. 修改redis.conf配置文件
daemonize yes (以守护进程方式启动) logfile "/var/log/redis/redis.log" (日志文件) 注释掉 bind 127.0.0.1允许ip访问 默认:只能本地访问 appendonly yes:开启持久化 no-appendfsync-on-rewrite yes: 统计

  1. 修改sentinel.conf配置文件
daemonize yes logfile "/var/log/redis/sentinel.log":wq

  1. 新建/usr/lib/systemd/system/redis.service文件并添加以下代码
[Unit] Description=Redis After=syslog.target network.target remote-fs.target nss-lookup.target[Service] Type=forking PIDFile=/var/run/redis.pid ExecStart=/usr/local/redis/redis-5.0.5/src/redis-server /etc/redis/redis.conf ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true[Install] WantedBy=multi-user.target

  1. 新建/usr/lib/systemd/system/redis-sentinel.service文件并添加一下代码
[Unit] Description=Redis-sentinel After=syslog.target network.target remote-fs.target nss-lookup.target[Service] Type=forking PIDFile=/var/run/redis-sentinel.pid ExecStart=/usr/local/redis/redis-5.0.5/src/redis-sentinel /etc/redis/sentinel.conf ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true[Install] WantedBy=multi-user.target

  1. 重载系统服务
sudo systemctl daemon-reload

  1. 启动redis,sentinel
systemctl start redis systemctl start redis-sentinel

五、配置一主两从,三哨兵集群
  1. 根据步骤三和四分别在192.168.66.70,192.168.66.71,192.168.66.72三台服务器上安装redis和sentinel服务
  2. 修改192.168.66.71和192.168.66.70两个从服务器的redis配置文件并重启redis服务
slaveof 192.168.31.70 6379

  1. 修改三个服务器中sentinel配置文件,并重启redis-sentinel服务
sentinel monitor mymaster 192.168.31.70 6379 2

六、验证
  1. 用redis-cli工具登录其中一个哨兵
redis-cli -p 26379

  1. 连接成功后运行如下命令
info

结果如下
# Sentinel sentinel_masters:1 sentinel_tilt:0 sentinel_running_scripts:0 sentinel_scripts_queue_length:0 sentinel_simulate_failure_flags:0 master0:name=mymaster,status=ok,address=192.168.66.70:6379,slaves=2,sentinels=3

  1. 将192.178.31.70服务器关闭,或者停止redis服务,查看sentinel日志,redis master会切换到其他服务上

    Redis主从加Sentinel模式部署
    文章图片
    image
  2. 【Redis主从加Sentinel模式部署】重新启动192.168.66.70redis服务,服务会以从节点纳入集群中

    Redis主从加Sentinel模式部署
    文章图片
    image

    推荐阅读