redis哨兵v1
redis哨兵集群搭建
重点:
主从复制:主从复制是高可用redis的基础,主从复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复。
哨兵和集群都是在主从复制基础上实现高可用的。
缺点:故障恢复无法自动化,写操作无法负载均衡,存储能力受到单机的限制。
哨兵:在主从复制的基础上,哨兵实现了自动化的故障恢复。
缺点:写操作无法负载均衡,存储能力受到单机的限制,哨兵无法对从节点进行自动故障转移,在读写分离的场景下,从节点故障会导致读服务不可用,需要对从节点做额外的监控切换操作。
集群:通过集群,redis解决了写操作无法负载均衡,以及存储能力受到单机限制的问题,实现了较为完善的高可用方案。
环境:一主两从
主:192.168.0.81
从:192.168.0.82,192.168.0.83
主:81 | 从1:82 | 从2:83 | |
---|---|---|---|
服务 | master、sentinel | slave | slave |
路径 | /data/redis-6.0.6 | /data/redis-6.0.6 | /data/redis-6.0.6 |
端口 | 6379 | 6379 | 6379 |
数据存储 | /data/redis-6.0.6 | /data/redis-6.0.6 | /data/redis-6.0.6 |
日志路径 | /var/log/redis/redis.log | /var/log/redis/redis.log | /var/log/redis/redis.log |
安装依赖
yum install -y gcc gcc-c++
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
echo “source /opt/rh/devtoolset-9/enable” >>/etc/profile --使永久生效
yum install tcl -y
编译安装redis
mv redis-6.0.6.tar.gz /data/
cd /data
tar -zxvf redis-6.0.6.tar.gz
cd redis-6.0.6
make
修改redis.conf
vim redis.conf
bind 0.0.0.0
protected-mode no
port 6379
daemonize yes
pidfile /var/run/redis_6379.pid
logfile "/var/log/redis/redis.log"
dir ./
主从
修改从节点
vim redis.conf
replicaof 192.168.0.81 6379
依次启动主从
redis-server redis.conf
redis-cli info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.0.83,port=6379,state=online,offset=1344,lag=0
slave1:ip=192.168.0.82,port=6379,state=online,offset=1344,lag=0
哨兵
修改哨兵配置
vim sentinel.conf
port 26379
daemonize yes
pidfile "/var/run/redis-sentinel.pid"
logfile "/var/log/redis/sentinel.log"
sentinel monitor mymaster 192.168.0.82 6379 2
依次启动主从
redis-sentinel sentinel.conf
测试
redis-cli -p 26379 info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=192.168.0.81:6379,slaves=2,sentinels=3
杀死主节点redis
主
pkill redis-server
redis-cli -p 26379 info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=192.168.0.82:6379,slaves=2,sentinels=3