下载redis 下载版本

下载地址:https://download.redis.io/release/

安装redis 之前把 gcc tcl等依赖环境安装好

集群配置

3台哨兵,1主,2从

服务器

部署应用

10.100.101.111

哨兵,主节点

10.100.101.112

哨兵,从1

10.100.101.113

哨兵,从2

下载/解压

tar -zxvf redis-6.0.6.tar.gz

cd redis-6.0.6

##6.X以上版本需要升级gcc

yum install -y gcc

yum -y install centos-release-scl

yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils

# 临时将此时的gcc版本改为9

scl enable devtoolset-9 bash

#如果要长期使用gcc 9.1的话执行下面的命令即可:

echo -e "\nsource /opt/rh/devtoolset-9/enable" >>/etc/profile

#安装

make

修改112,113 的 redis.conf 配置:

daemonize yes

replicaof 10.100.101.111 6379

masterauth      ******

# 确保有1个从节点写入,延时不超过10s,不然主节点会停止写入请求

min-replicas-to-write 1

min-replicas-max-lag 10 requirepass 123456 appendonly yes

修改111 的 redis.conf 配置

daemonize yes

masterauth   ******

# 确保有1个从节点写入,延时不超过10s,不然主节点会停止写入请求

min-replicas-to-write 1

min-replicas-max-lag 10

#节点加密

requirepass   ******

#AOF持久化,是否记录更新操作日志,默认redis是异步(快照)把数据写入本地磁盘

appendonly yes

#redis日志

logfile "/var/log/redis/redis.log"

#注意需要创建路径,不然会有报错

slave配置文件

112以及113的redis配置多一行

同master区别在与需要多配置:

slaveof <MASTER IP> <MASTER PORT>

#这里改成对应master的IP和端口

#redis日志

logfile "/var/log/redis/redis.log"

#注意需要创建路径,不然会有报错

查看主从状态

#启动

src/redis-server redis.conf

#登录

src/redis-cli -p 6379

#查看节点角色及主从状态

info replication

#注,如果报错,考虑授权登录客户端(auth   *******)

搭建redis集群No route to host redis6.0集群搭建_缓存

修改 111,112,113 的sentinel.conf

daemonize yes

sentinel monitor mymaster 10.100.101.111 6379 2

sentinel auth-pass mymaster   ******

#配置日志:

logfile "/var/log/redis/sentinel.log"

#注:需要创建路径

启动redis哨兵并查看监控状态

src/redis-sentinel sentinel.conf

src/redis-cli -p 26379

#注意别进错,进的是26379

# 查看主节点状态

sentinel master mymaster

搭建redis集群No route to host redis6.0集群搭建_数据库_02

# 副本状态

SENTINEL replicas mymaster

搭建redis集群No route to host redis6.0集群搭建_centos_03

#分成两次截图 

搭建redis集群No route to host redis6.0集群搭建_centos_04

# 哨兵状态

SENTINEL sentinels mymaster

搭建redis集群No route to host redis6.0集群搭建_centos_05

演示故障转移

方式:停掉当前哨兵节点redis后,再次查看哨兵状态。

1.关停111 redis

通过杀掉redis6379进程,查看三个哨兵日志sentinel.log

搭建redis集群No route to host redis6.0集群搭建_数据库_06

master已切换至113

查看节点角色进行确认

搭建redis集群No route to host redis6.0集群搭建_redis_07

节点飘逸成功,至此,哨兵集群搭建完成,验证有效。

过程报错:

1.启动哨兵服务时出现报错:Duplicated  master  name

原因:sentinel.conf 配置文件多余重复配置

解决办法:删掉原本的无效配置,只留下我们需要的配置。

2.认证问题

10.100.101.111:6379> (error) NOAUTH Authentication required.

(error) ERR unknown command '(error)'

10.100.101.111:6379> auth "root"

OK

3.漂移失败

服务节点飘移验证环节中,手动杀掉主节点的服务后,哨兵可裁决主节点down了,但是并未发生服务节点向从节点漂移。

搭建redis集群No route to host redis6.0集群搭建_缓存_08

 原因:未注意从节点与master节点redis.conf的配置区别,从节点需要增加配置:

slaveof <masterip> <masterport>

#主从复制使用,用于本机redis作为slave去连接主redis