redis主从与哨兵模式

redis主从与哨兵模式

1、简述主从和哨兵的主要作用以及工作原理

1.1、Redis主从复制:
当用户往Master端写入数据时,通过Redis Sync机制将数据文件发送至Slave,Slave也会执行相同的操作确保数据一致。同时slave上还可以开启二级slave,三级slave从库。 Redis主从配置非常简单,只需要在Redis从库配置中指定slaveof ip port 即可,IP表示指定主库的ip,port表示redis监听端口

1.2、Redis哨兵模式:
redis主从虽然解决了单点导致的数据丢失问题,但是还是没有解决无缝的故障转移,也就是说在主库宕机后,从库无法自动切换为主库,需要手工去切换,在这一瞬间会对后端数据库造成极大的负载,可能直接导致后端数据宕机

环境:
master:192.168.146.131
slave: 192.168.146.132

2.1、搭建

#安装环境
yum install gcc-c++
#获取压缩包
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
#解压
tar xf redis-5.0.5.tar.gz 
#进入目录后开始安装
make PREFIX=/usr/local/redis install
#安装后的软件并没有自带配置文件,从源码包中获取一份拷贝至安装路径里并重命名进行分类:
mkdir /usr/local/reids/6379
cp redis-5.0.5/redis.conf /usr/local/redis/6379/6379.conf
#再用源码包里utils/install_server.sh的脚本定义端口及其相关文件路径

在这里插入图片描述

启动redis:/etc/init.d/redis_6379 start
停止redis:/etc/init.d/redis_6379 stop
重启redis:/etc/init.d/redis_6379 restart
进入redis:/usr/local/reids/bin/redis-cli

3.1、主从配置:

master配置:
###在配置文件中(/usr/local/redis/6379/6379.conf)修改守护进程是否在后台运行:
daemonize yes
##这里是设置当前系统所有的网卡都可以来访问redis服务,假设有两块网卡,就只能设置这两块网卡的IP地址,否则redis将无法启动
bind 0.0.0.0
#可选项:设置认证密码,从库需要指定master得密码才能完成同步,否则日志会有报错提示
requirepass "abc-123"
/etc/init.d/redis_6379 restart(重启redis服务)
slave配置:(配置文件)
###同master一样,配置守护进程后端运行与可连接redis的物理网卡IP地址
daemonize yes与bind	0.0.0.0
##假设master设置了认证密码,那么在配置文件中需要添加认证密码
masterauth "abc-123"

#在配置文件中写入隶属于master的主机IP地址及端口
slaveof 192.168.146.131 6379
或者
REPLICAOF 192.168.146.131 6379
#并重启redis服务
PS:也可在redis命令行中写入,直接生效,但服务重启后无效

在这里插入图片描述
再到redis的master中,用info replication查看,可以看出所连接到slave服务器的信息参数等
在这里插入图片描述
3.2、假设此时master中设置同步密码,而slave没有指定,则报以下错误:
在这里插入图片描述
3.3、日志分析
分析redis同步过程
在这里插入图片描述
4.1、哨兵模式:
master:192.168.146.131
slave: 192.168.146.132
slave: 192.168.146.133

4.1.1、配置主从

配置master,开启网卡监听,(可选设置密码):

vim /usr/local/redis/6379/6379.conf
bind 0.0.0.0
requirepass "abc-123" 

##配置slave1,指定master
bind 0.0.0.0 
replicaof 192.168.75.135 6379 
masterauth "	abc-123"

##配置slave2,指定master
bind 0.0.0.0 
replicaof 192.168.75.135 6379
masterauth "abc-123" 

#启动master和slave的redis服务:
/etc/init.d/redis_6379 restart

4.1.2、PS:此时做出启动、停止和重启操作将会出现下面情况
在这里插入图片描述
是因为redis启用安全认证,而配置了requirepass该配置后,对应也要修改启动和关闭的脚本,在脚本关闭处指定IP和密码参数,在修改redis配置文件服务脚本(vim etc/init.d/redis_6379)中,加入如下信息即可:(参数 -a 后是密码)
在这里插入图片描述
4.2、查看主从状态
详细:info replication
简略:role
输入密码后会出现一个警告,大致意思是在命令行界面上使用带有“-a”或“-u”选项的密码可能不安全,可以忽略,但有时候写脚本时,这串提醒会影响我们脚本的数据取值。这串告警,并不是普通的输出,通过head、tail、awk、sed等命令并不能过滤掉这行输出,问题原因:这串输出并不是普通输出,shell的标准输出包含两种,1(标准输出)2(标准错误)我们的命令,即包含1也包含2,2即是我们想要去除的提示。
解决办法:将标准错误去除,在尾部加入 2>/dev/null ,将标准错误丢弃即可
在这里插入图片描述

4.3、配置哨兵

master端配置sentinel: 
将源码包中的哨兵配置文件( sentinel.conf)复制一份到redis文件路径中
修改配置文件: 
vim /usr/local/redis/sentinel.conf 
#绑定监听IP
bind 0.0.0.0 
#监听端口
port 26379 
# 后台运行 
daemonize yes 
pidfile /var/run/redis-sentinel.pid 
# 哨兵得日志文件 
logfile "sentinel.log" 
# 日志文件存放路径 
dir /usr/local/redis/ 
# 设置初始master以及法定认为下线人数: 
sentinel monitor mymaster 192.168.75.135 6379 2 
# master主观下线时间,默认30秒,30秒内没有回复pong,则认为下线了 
sentinel down-after-milliseconds mymaster 30000 
# 指定在故障转移期间,多少个slave向新的master同步得数量,如果slave 
是提供查询服务,则应该设置小一点更好 
sentinel parallel-syncs mymaster 1 
# 指定故障转移超时时间,默认为3分钟 
sentinel failover-timeout mymaster 180000 
# 设置通知脚本,发生故障转移可以向管理员发送通知(可选) 
sentinel notification-script mymaster 
/usr/local/redis/notify.sh 
# 禁止修改脚本,避免脚本重置 
sentinel deny-scripts-reconfig yes 

PS/usr/local/redis/notify.sh(配置邮箱通知脚本)

在这里插入图片描述
4.4、master端配置sentinel
把配置好的sentinel配置文件直接复制过去,不要把启动后的配置文件发过去了:
在这里插入图片描述
启动哨兵:
/usr/local/redis/bin/redis-sentinel /usr/local/redis/sentinel.conf

4.5、登陆查看哨兵状态:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值