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模式部署_第1张图片
    image
  2. 重新启动192.168.66.70redis服务,服务会以从节点纳入集群中


    image

你可能感兴趣的:(Redis主从加Sentinel模式部署)