redis哨兵搭建_主从复制高可用解决方案
Redis哨兵-实现Redis高可用
Redis Sentinel为Redis提供了高可用解决方案。实际上这意味着使用Sentinel可以部署一套Redis,在没有人为干预的情况下去应付各种各样的失败事件。
Redis Sentinel同时提供了一些其他的功能,例如:监控、通知、并为client提供配置。
下面是Sentinel的功能列表:
-
监控(Monitoring):Sentinel不断的去检查你的主从实例是否按照预期在工作。
-
通知(Notification):Sentinel可以通过一个api来通知系统管理员或者另外的应用程序,被监控的Redis实例有一些问题。
-
自动故障转移(Automatic failover):如果一个主节点没有按照预期工作,Sentinel会开始故障转移过程,把一个从节点提升为主节点,并重新配置其他的从节点使用新的主节点,使用Redis服务的应用程序在连接的时候也被通知新的地址。
-
配置提供者(Configuration provider):Sentinel给客户端的服务发现提供来源:对于一个给定的服务,客户端连接到Sentinels来寻找当前主节点的地址。当故障转移发生的时候,Sentinels将报告新的地址。
linux下安装redis
mkdir -pv /data/software
cd /data/software/
wget http://download.redis.io/releases/redis-5.0.3.tar.gz
tar -zxvf redis-5.0.3.tar.gz
mkdir -pv /data/apps
mv redis-5.0.3 /data/apps
cd /data/apps/redis-5.0.3
make
src/redis-server #启动redis服务
src/redis-cli 连接redis 和 操作
redis> set foo bar
OK
redis> get foo
"bar"
哨兵搭建 1主2从
主节点master 8000配置如下
mkdir 8000
cp redis.conf 8000/redis.conf
#修改配置
vim 8000/redis.conf
#bind 127.0.0.1 #可以远程访问
protected-mode no #保护模式关闭
daemonize yes #后台启动
port 8000
pidfile /var/run/redis_8000.pid
logfile "/data/redis-cluster/8000/8000.log"
dbfilename dump.rdb
dir /data/redis-cluster/8000/
appendonly yes #aof日志开启 有需要就开启,它会每次写操作都记录一条日志
appendfilename "appendonly8000.aof"
masterauth abcd_123
requirepass abcd_123
打开redis的key过期监听提醒
notify-keyspace-events Ex
注释
#notify-keyspace-events ""
-----------------------------------------------
从节点8001配置如下
mkdir 8001
cp redis.conf 8001/redis.conf
#修改配置
vim 8001/redis.conf
#bind 127.0.0.1 #可以远程访问
protected-mode no #保护模式关闭
daemonize yes #后台启动
port 8001
pidfile /var/run/redis_8001.pid
logfile "/data/redis-cluster/8001/8001.log"
dbfilename dump.rdb
dir /data/redis-cluster/8001/
appendonly yes #aof日志开启 有需要就开启,它会每次写操作都记录一条日志
appendfilename "appendonly8001.aof"
replicaof 192.168.1.179 8000 # 主服务这句话注释,从服务配置的两台需要开启。配置主服务的ip的port 用外网ip或内网,不要用127.0.0.1
#redis5.0以后 将配置指令也从 slaveof 更改为 replicaof
#为 SLAVEOF 提供别名 REPLICAOF,所以仍然可以使用 SLAVEOF,但多了一个选项
masterauth abcd_123
requirepass abcd_123
打开redis的key过期监听提醒
notify-keyspace-events Ex
注释
#notify-keyspace-events ""
---------------------------------------------------
从节点8002配置 和8001节点配置差不多
启动redis
#分别启动三台redis
redis-5.0.5/src/redis-server 8000/redis.conf
redis-5.0.5/src/redis-server 8001/redis.conf
redis-5.0.5/src/redis-server 8002/redis.conf
https://www.cnblogs.com/web369/articles/8662036.html
查看主从状态信息
./redis-cli -h 192.168.1.179 -p 8000 -a abcd_123
./redis-cli -h 192.168.1.179 -p 8001 -a abcd_123
info replication
哨兵配置
哨兵配置 sentinel.conf 文件
cp redis-5.0.5/sentinel.conf 8000/
vim 8000/sentinel.conf
protected-mode no
port 28000
daemonize yes
pidfile /var/run/redis-sentinel28000.pid
logfile "/data/redis-cluster/8000/28000.log"
dir /data/redis-cluster/8000
sentinel monitor mymaster 192.168.1.179 8000 2 #程序需要配置,用程序能访问的ip和端口,不要用127.0.0.1
sentinel auth-pass mymaster abcd_123
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes
cp 8000/sentinel.conf 8001/
cp 8000/sentinel.conf 8002/
修改对应端口和配置
启动redis-sentinel进程
redis-5.0.5/src/redis-sentinel 8000/sentinel.conf
redis-5.0.5/src/redis-sentinel 8001/sentinel.conf
redis-5.0.5/src/redis-sentinel 8002/sentinel.conf
查看主从状态信息
./redis-cli -h 192.168.1.179 -p 8000 -a abcd_123
info replication
参考链接:
https://www.cnblogs.com/ibethfy/p/9965902.html
https://www.jianshu.com/p/e586137c5a19