1 . 哨兵模式拓扑 与 简介
2. 搭建过程--主从服务器
2.1 首先要在各个服务器上装上redis服务器
2.2 节点规划
6301:主
6302:从
6303:从
26301:哨兵模式节点一
mkdir redis-group
cp redis.conf ./redis-group/redis-6301.conf
cp redis.conf ./redis-group/redis-6302.conf
cp redis.conf ./redis-group/redis-6303.conf
vi redis-6301.conf
将参数的值改为以下
daemonize yes
pidfile /var/run/redis6301.pid
port 6301
logfile "/logs/6301.log"
dbfilename dump6301.rdb
requirepass pp123
再修改从服务器 ,redis-6302.conf和redis-6303.conf , 这些选项一般都有, 只需去掉前面的 ‘#’ 即可 。 日志要配置好,这样能使自己更快发现问题
vi redis-6302.conf
daemonize yes
pidfile /var/run/redis6302.pid
port 6302
logfile "/logs/6302.log"
dbfilename dump6302.rdb
slaveof 47.98.0.1 6301
==========================
vi redis-6303.conf
daemonize yes
pidfile /var/run/redis6303.pid
port 6303
logfile "/logs/6303.log"
dbfilename dump6303.rdb
slaveof 47.98.0.1 6301
masterauth 123456(主服务器的密码)
./redis-server ../redis-group/redis-6301.conf
./redis-server ../redis-group/redis-6302.conf
./redis-server ../redis-group/redis-6303.conf
redis-cli -p 6301
redis-cli -p 6302
redis-cli -p 6303

> ./redis-cli -p 6301
127.0.0.1:6301> set monkey 123
OK
> ./redis-cli -p 6302
127.0.0.1:6302> get monkey
"123"
> ./redis-cli -p 6303
127.0.0.1:6303> get monkey
"123"
3. 哨兵模式
cp sentinel.conf ./redis-group
3.2 修改和调整以下设置
port 26301
#工作路径,注意路径不要和主重复
dir "/usr/local/redis-6379"
daemonize yes
#关闭保护模式
protected-mode no
# 指明日志文件名
logfile "/logs/sentinel.log"
#哨兵监控的master,主从配置一样,这里只用输入redis主节点的ip/port和法定人数。
sentinel monitor mymaster 47.98.0.1 6301 1
#设置master和slaves验证密码
sentinel auth-pass mymaster 123 (如果redis没设置密码,则不用设置)
#这个配置项指定了需要多少失效时间,一个master才会被这个sentinel主观地认为是不可用的。 单位是毫秒,默认为30秒 ,这里设置为5秒
sentinel down-after-milliseconds mymaster 5000
cd src
./redis-sentinel ../redis-group/sentinel.conf

4 . 可能会遇到的一些问题

slaveof x.x.x.x 6301
masterauth 123456
#save
ok
如果我们需要把down掉的master 重新恢复成master 就需要 复制 当前master的 dump.rdb 和 appendonly.aof , 覆盖 down掉的 master 的 dump.rdb 和 appendonly.aof
cp dump.rdb appendonly.aof ../master_redis
然后再重新启动 。
启动请先检查配置文件 ,因为哨兵模式下 ,故障切换过程中,哨兵进程会自动修改配置文件 。
比如 down掉的master 重新启动后 会在配置文件下加上
slaveof x.x.x.x 6302
所以当配置好哨兵模式后最好先备份一下,可以参考这个文章
https://www.cnblogs.com/xiao-xue-di/p/11102315.html
4.3 从机挂了怎么办
直接重启动后 自动数据同步
4.4 从机日志 出现Unable to AUTH to MASTER: -ERR Client sent AUTH, but no password is set , master_link_status: down 怎么办
由于安全模式 protected-mode yes
所以redis规定 主从之间通讯需要设置密码
所以必须在master设置一个密码
requirepass 123456
masterauth 123456
5. 例子使用 tp6 如何调用
$redis = new \Redis();
$redis->connect(Config::get('redisset','host'),Config::get('redisset','port'));
$redis->auth('pp123');
$res = $redis->ping();
if($res == '+PONG'){
$redis->set('testname','sanshang');
$redis->close();
}else{
//查询哨兵
$redis->connect(Config::get('redisset','soshost'),Config::get('redisset','port'));
$result = $redis->rawCommand('SENTINEL', 'master', 'mymaster');
$redis->connect($result['3'],$result['5']);
$redis->set('testname','sanshang');
$redis->close();
}