一、redis高可用方案:哨兵模式
哨兵模式是Redis的一种常见的高可用方案,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。
这里的哨兵有两个作用:
通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器。
当哨兵监测到master宕机,会自动将slave切换成master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机。
然而一个哨兵进程对Redis服务器进行监控,可能会出现问题,为此,我们可以使用多个哨兵进行监控。各个哨兵之间还会进行监控,这样就形成了多哨兵模式。
本方案采用的是一主二从三哨兵的模式。
二、方案配置
2.1准备三台虚拟机
//本文所列IP只是示范,请根据自己实际情况设置ip
虚拟机1:192.168.96.240
虚拟机2:192.168.96.241
虚拟机3:192.168.96.242
在虚拟机中安装redis,三台虚拟机操作同样
//本文所有命令均在root用户下输入
2.2安装wget
yum install wget
2.3安装gcc依赖
yum install gcc
2.4.跳转到/opt目录下
cd /opt
2.4.下载redis安装包
wget http://download.redis.io/releases/redis-5.0.7.tar.gz
2.5.解压安装包
tar -zxvf redis-5.0.7.tar.gz
2.6.跳转到解压目录
cd redis-5.0.7
2.7.编译安装
make && make install
2.8创建一个存放redis实例的文件夹
mkdir /myRedis
2.9复制配置文件到新建立的文件夹
cp redis.conf /myRedis
三、主从配置
//三台虚拟机相同的地方
3.1.跳转到myRedis文件夹
cd /myRedis
3.2.编辑配置文件
//没有vim安装一下,不安装用vi也行
vim redis.conf
//三台虚拟机不同的地方
主机192.168.96.240 :redis.conf
#注释这一行,表示Redis可以接受任意ip的连接
#bind 127.0.0.1
#关闭保护模式
protected-mode no
#让redis服务后台运行
daemonize yes
#配置日志路径,为了便于排查问题,指定redis的日志文件目录
logfile "redis.log"
从机192.168.96.241 :redis.conf
#注释这一行,表示Redis可以接受任意ip的连接
#bind 127.0.0.1
#关闭保护模式
protected-mode no
#让redis服务后台运行
daemonize yes
#配置日志路径,为了便于排查问题,指定redis的日志文件目录
logfile "redis.log"
#设定master的IP和端口号,redis配置文件中的默认端口号是6379
#将192.168.96.240做为主,其余两台机器做从。ip和端口号按照机器和配置做相应修改。
replicaof 192.168.96.240 6379
从机192.168.96.242 :redis.conf
与从机192.168.96.241相同
3.3启动redis服务
//启动服务前关闭防火墙或者在防火墙开放相应端口
redis-server redis.conf
3.4添加哨兵并修改配置文件
//三台虚拟机一样
wget http://download.redis.io/redis-stable/sentinel.conf
vim sentinel.conf
#让sentinel服务后台运行
daemonize yes
#修改日志文件的路径
logfile "sentinel.log"
#修改监控的主redis服务器
#最后一个2表示,两台机器判定主被动下线后,就进行failover(故障转移)
sentinel monitor mymaster 192.168.96.240 6379 2
3.5.运行哨兵服务
//三台虚拟机一样
redis-sentienl sentinel.conf