redis主从模式与哨兵模式搭建

安装redis

https://redis.io/download

cd /opt

wget http://download.redis.io/releases/redis-6.2.3.tar.gz

yum install gcc-c++

tar xzf redis-6.2.3.tar.gz

mv /opt/redis-6.2.3 /usr/local/redis

cd /usr/local/redis
make
make PREFIX=/usr/local/redis install

主从redis模式搭建

在这里插入图片描述

cd /opt
mkdir redis-sentinel
cd redis-sentinel
mkdir {redis-6380,redis-6381,redis-6382}

cp /usr/local/redis/redis.conf redis-6380
cp /usr/local/redis/redis.conf redis-6381
cp /usr/local/redis/redis.conf redis-6382

更改redis.conf配置文件

redis-6381,redis-6382的配置和redis-6380类似,以下是 redis-6380的redis.conf配置修改:

cd  /opt/redis-sentinel/redis-6380/
vi redis.conf


daemonize yes
pidfile /var/run/redis_6380.pid
port 6380
bind 127.0.0.1  #可选,默认就处理所有请求。
logfile "./redis-6380.log"
redis配置密码的话,需要以下配置
masterauth "123456"
requirepass "123456"
appendonly yes
 

注意:

重点(容易出错)
1、protected-mode no
是否开启保护模式,默认开启。要是配置里没有指定bind和密码。开启该参数后,redis只会本地进行访问,拒绝外部访问。要是开启了密码和bind,可以设为yes。否则最好关闭,设置为no。

2、bind
网上很多解释是错误的,并不是允许哪些ip可以访问redis服务的意思!!!
通俗易懂的理解:bind配置了什么ip,别人就得访问bind里面配置的ip才访问到redis服务

启动redis

/usr/local/redis/bin/redis-server /opt/redis-sentinel/redis-6380/redis.conf
/usr/local/redis/bin/redis-server /opt/redis-sentinel/redis-6381/redis.conf
/usr/local/redis/bin/redis-server /opt/redis-sentinel/redis-6382/redis.conf

查看是否启动

ps -aux | grep redis
/usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6380  -a 123456

slave加入master

# redis-6381作为slave加入redis-6380
/usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6381  -a 123456
SLAVEOF 127.0.0.1 6380
exit

# redis-6382作为slave加入redis-6380
/usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6382  -a 123456
SLAVEOF 127.0.0.1 6380
exit

验证主从

/usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6380  -a 123456
info  replication

在这里插入图片描述

/usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6380  -a 123456
set  name  zhangsan

/usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6381  -a 123456
get name

在这里插入图片描述

哨兵模式搭建

在这里插入图片描述

Redis的哨兵机制是官方推荐的一种高可用(HA)方案,我们在使用Redis的主从结构时,如果主节点挂掉,这时是不能自动进行主备切换和通知客户端主节点下线的。

Redis-Sentinel机制主要用三个功能:
(1)监控:不停监控Redis主从节点是否安装预期运行
(2)提醒:如果Redis运行出现问题可以 按照配置文件中的配置项 通知客户端或者集群管理员
(3)自动故障转移:当主节点下线之后,哨兵可以从主节点的多个从节点中选出一个为主节点,并更新配置文件和其他从节点的主节点信息。

cd /opt/redis-sentinel
mkdir {sentinel-7380/workdir,sentinel-7381/workdir,sentinel-7382/workdir}

cp /usr/local/redis/sentinel.conf /opt/redis-sentinel/sentinel-7380
cp /usr/local/redis/sentinel.conf /opt/redis-sentinel/sentinel-7381
cp /usr/local/redis/sentinel.conf /opt/redis-sentinel/sentinel-7382

更改sentinel.conf配置文件

sentinel-7381,sentinel-7382的配置和sentinel-7380类似,以下是 sentinel-7380的sentinel.conf配置修改:

cd /opt/redis-sentinel/sentinel-7380
vim sentinel.conf
 
daemonize yes 
port 7380
#指定工作目录
dir /opt/redis-sentinel/sentinel-7380/workdir
logfile "./sentinel.log" 
 
#指定别名  主节点地址  端口  哨兵个数(有几个哨兵监控到主节点宕机执行转移)
sentinel monitor mymaster 127.0.0.1 6380 2
 
#如果哨兵10s内没有收到主节点的心跳,哨兵就认为主节点宕机了,默认是30秒  
sentinel down-after-milliseconds mymaster 10000
 
#选举出新的主节点之后,可以同时连接从节点的个数
sentinel parallel-syncs mymaster 1
 
#如果30秒后,master仍没活过来,则启动failover,默认180s  
sentinel failover-timeout mymaster 30000 
 
#配置连接redis主节点密码  
sentinel auth-pass mymaster 123456  

mymaster 后跟的是master的ip和端口,最后一个’2’代表我要启动只要有2个sentinel认为master下线,就认为该master客观下线,启动failover并选举产生新的master。通常最后一个参数不能多于启动的sentinel实例数。建议至少启动三台sentinel实例。

启动哨兵

/usr/local/redis/bin/redis-sentinel /opt/redis-sentinel/sentinel-7380/sentinel.conf
/usr/local/redis/bin/redis-sentinel /opt/redis-sentinel/sentinel-7381/sentinel.conf
/usr/local/redis/bin/redis-sentinel /opt/redis-sentinel/sentinel-7382/sentinel.conf

在这里插入图片描述

验证哨兵

ps -aux | grep redis
kill -9 14896
ps -aux | grep redis

在这里插入图片描述

/usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6381  -a 123456
info  replication
exit


/usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6382  -a 123456
info  replication
exit

在这里插入图片描述

再看sentinel.conf里面的配置,master也已经变成了6382

在这里插入图片描述

总结

本文主要介绍了 Redis 两种集群模式,总结一下

主从模式 可以实现读写分离,数据备份。但是并不是「高可用」的

哨兵模式 可以看做是主从模式的「高可用」版本,其引入了 Sentinel 对整个 Redis 服务集群进行监控。但是由于只有一个主节点,因此仍然有写入瓶颈。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值