redis哨兵集群搭建

前言:

redis sentinel 优势:

1.monitor:sentinel监控master,slave是否想预期正常工作
2.notification: 如果其中一个被监控的redis实例,sentinel 能通过API通知系统管理员,以及其他计算机程序 
3.automatic failover: 如果redis master不像预期正常工作,sentinel能启动一个故障转移进程把其中一个redis slave提升为redis master ,剩余的所有redsi slave 根据新的redis master重新配置,并且使用redis server的应用也能在连接redis  时被通知到,重新连接新的redis master
4.configuration provider: sentinel 扮演一个 redis client 服务发现的原始授权,redis client 连接sentinel进程是为了请求redis 集群当前正常工作master地址 进行业务处理。如果故障转移发生,sentinel将会将新地址报告给新连接的redis client,让其动态修改地址,访问故障转移后的redis master 地址。

 

1.下载,解压

下载redis版本,解压到目标目录(确保是否读写该目录的权限),编译:
wget http://download.redis.io/releases/redis-4.0.0.tar.gz


tar  xzvf redis-4.0.0.tar.gz -C 目标目录

 

cd   path/to/redis 
执行编译命令:
make

 


2.配置文件:


cd redis-4.0.0/

 

master

redis 配置文件 master.conf


#redis绑定ip,一般为本机ip,不建议为localhost/127.0.0.1
bind 192.168.1.186

#redis绑定端口
port 6379

#redis日志文件
logfile "/server/app/redis/log/redis.log"


#redis数据文件目录
dir "/server/app/redis/data"


#开启后端启动,启动命令是不加 &
daemonize yes

#开启保护模式,需要sentinel.conf 开启该模式
protected-mode yes

#开启密码
requirepass "root123"
masterauth "root123

#减少高并发情况主突然不可用,造成的数据写丢失
min-slaves-to-write 1
min-slaves-max-lag 10


master 对应的哨兵配置文件  sentinel186.conf


#redis绑定ip,一般为本机ip,不建议为localhost/127.0.0.1
bind 192.168.1.186

#哨兵端口
port 26379

#后台启动,启动命令是不加 &
daemonize yes

#开启保护模式 
protected-mode yes

#sentinel 数据文件目录
dir "/server/app/redis/sentinel"

#sentinel 日志文件目录
logfile "/server/app/redis/log/sentinel_63791.log"

#最后一个2:是需要2个哨兵确认是否可以进行主从切换,    redis clustername 即为mymaster
#该配置要配置到 sentinel auth-pass 参数的前面
sentinel monitor mymaster 192.168.1.186 6379 2


#哨兵监控,主从切换超时时间
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 18000

#开启密码需要如下配置
sentinel auth-pass mymaster root123

 

 

 

 

 

slave0 


redis189.conf


#redis绑定ip,一般为本机ip,不建议为localhost/127.0.0.1
bind 192.168.1.189

#redis端口
port 6379

#redis 日志文件
logfile "/server/app/redis/log/redis.log"

#redis 数据文件
dir "/server/app/redis/data"

#后台启动,无需 在启动命令添加 &
daemonize yes

#开启保护模式,需要sentinel.conf 开启该模式
protected-mode yes

#保证数据一致性,从库只支持写
slave-read-only yes

#主库所在地址
slaveof 192.168.1.186 6379

#开启密码
requirepass "root123"
masterauth "root123"

#减少高并发情况主突然不可用,造成的数据写丢失
min-slaves-to-write 1
min-slaves-max-lag 10

 

 

 


slave0  对应的哨兵文件

sentinel189.conf


#redis绑定ip,一般为本机ip,不建议为localhost/127.0.0.1
bind 192.168.1.189

#哨兵端口
port 26379

#后台启动,启动命令是不加 &
daemonize yes

#保护模式开启要同时和bind参数使用
protected-mode yes

#sentinel 数据文件目录
dir "/server/app/redis/sentinel"

#sentinel 日志文件目录
logfile "/server/app/redis/log/sentinel_63791.log"

#最后一个2:是需要2个哨兵确认是否可以进行主从切换,    redis clustername 即为mymaster
#该配置要配置到 sentinel auth-pass 参数的前面
sentinel monitor mymaster 192.168.1.186 6379 2

#哨兵监控,主从切换超时时间
sentinel down-after-milliseconds mymaster 5000


sentinel failover-timeout mymaster 18000
#开启密码需要如下配置
sentinel auth-pass mymaster root123

 

 

 

slave1

reids184.conf


#redis绑定ip,一般为本机ip,不建议为localhost/127.0.0.1
bind 192.168.1.184

#redis进程所在端口
port 6379

#redis日志文件
logfile "/server/app/redis/log/redis.log"

#redis数据文件目录
dir "/server/app/redis/data"


#后台启动,无需 在启动命令添加 &
daemonize yes


#开启保护模式,需要sentinel.conf 开启该模式
protected-mode yes


#保证数据一致性,从库只支持写
slave-read-only yes

#主库所在地址
slaveof 192.168.1.186 6379

#开启密码解注下面两个参数
requirepass root123
masterauth root123
    
#减少高并发情况主突然不可用,造成的数据写丢失
min-slaves-to-write 1
min-slaves-max-lag 10


slave1    对应的哨兵配置文件   

sentinel184.conf

#redis绑定ip,一般为本机ip,不建议为localhost/127.0.0.1
bind 192.168.1.184

#哨兵端口
port 26379

#后台启动,启动命令是不加 &
daemonize yes

#保护模式开启要同时和bind参数使用
protected-mode yes

#sentinel 数据文件目录
dir "/server/app/redis/sentinel"

#sentinel 日志文件目录
logfile "/server/app/redis/log/sentinel_63791.log"

#最后一个2:是需要2个哨兵确认是否可以进行主从切换,    redis clustername 即为mymaster
#该配置要配置到 sentinel auth-pass 参数的前面
sentinel monitor mymaster 192.168.1.186 6379 2

#哨兵监控,主从切换超时时间
sentinel down-after-milliseconds mymaster 5000

sentinel failover-timeout mymaster 18000

#开启密码需要如下配置
sentinel auth-pass mymaster root123

 

注:其他参数:如redis多久,多少数据量进行快照,dump文件,根据需要进行配置,或者使用默认值(无需配置)

关于 password,protected-mode的设置 ,redis.conf,sentinel.conf要同时设置.

 

 

三.错误总结:

1.Error condition on socket for SYNC: Connection refused

解决  :

         查看 redis.conf ,sentinel.conf中的bind是否配置正确,是否 根据自身机器hostname,ip配置

2.主从切换报错:failover-abort-not-elected 

原因:redis.conf  和  sentinel.conf 的参数protected-mode 未保持一致

解决:将这redis.conf  和  sentinel.con文件 的参数protected-mode 保持一致

1)如果redis.conf配置如下连个参数:

protected-mode no
bind 192.168.98.136

如未配置:则在sentinel 配置文件加上

protected-mode no 

 

2)如果redis.conf有配置如下两个参数

protected-mode yes
bind 192.168.1.186

则在sentinel 配置文件加上

protected-mode yes
bind 192.168.1.186
 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值