目录
一、主从复制
1.1主从复制的概念
1.2Redis主从复制作用
1.2.1数据冗余
1.2.2故障恢复
1.2.3负载均衡
1.2.4高可用基石
1.3Redis主从复制流程
1.4部署Redis 主从复制
1.4.1.环境部署
1.4.2.所有服务器都先关闭防火墙
1.4.3.所有服务器都安装Redis
1.4.4修改Master主节点Redis的配置文件
1.6验证主从效果(192.168.40.17)
1.6.1在Master节点上面验证从节点
二.Redis 哨兵模式
2.1哨兵模式的原理
2.2哨兵模式的作用
2.3哨兵模式的结构
2.4故障转移机制
2.4.1由哨兵节点定期监控发现主节点是否出现了故障
2.4.2当主节点出现故障
2.4.3由leader哨兵节点执行故障转移,过程如下:
2.5主节点的选举
2.7环境准备
2.8修改Redis配置文件(所有节点操作)
2.9启动哨兵模式并查看信息
2.10故障模拟
编辑 三.Redis集群模式
3.1redis群集的概念
3.2集群的作用
3.2.1数据分区
3.2.2高可用
3.3集群模式的数据分片
3.4集群模式的主从复制模型
3.5Redis集群部署
3.5.1环境准备
3.6准备操作
3.7开启群集功能
3.8启动redis节点
3.9启动集群
3.10测试群集
四.总结
主从复制,是指将一台 Redis 服务器的数据,复制到其他的 Redis 服务器。前者称为主节点(Master),后者称为从节点(Slave);数据的复制是单向的,只能由主节点到从节点。
默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。
Master节点 192.168.40.172 redis-5.0.7.tar.gz
Slave1节点 192.168.40.170 redis-5.0.7.tar.gz
Slave2节点 192.168.40.17 redis-5.0.7.tar.gz
systemctl stop firewalld
setenforce 0
systemctl disable firewalld
systemctl stop firewalld
setenforce 0
yum install -y gcc gcc-c++ make
tar zxvf redis-5.0.7.tar.gz -C /opt/
cd /opt/redis-5.0.7/
make
make PREFIX=/usr/local/redis install
cd /opt/redis-5.0.7/utils
./install_server.sh
回车四次,下一步需要手动输入
Please select the redis executable path [] /usr/local/redis/bin/redis-server
ln -s /usr/local/redis/bin/* /usr/local/bin/
vim /etc/redis/6379.conf
#70行,修改bind 项,0.0.0.0监听所有网段
bind 0.0.0.0
#137行,开启守护进程
daemonize yes
#172行,指定日志文件目录
logfile /var/log/redis_6379.log
#264行,指定工作目录
dir /var/lib/redis/6379
#700行,开启AOF持久化功能
appendonly yes
/etc/init.d/redis_6379 restart
netstat -natp | grep redis
首先在Master上节点上查看日志
tail -f /var/log/redis_6379.log
redis-cli info replication
哨兵的核心功能:在主从复制的基础上,哨兵引入了主节点的自动故障转移。
哨兵结构由两部分组成,哨兵节点和数据节点:
哨兵的启动依赖于主从模式,所以须把主从模式安装好的情况下再去做哨兵模式,所有节点上都需要部署哨兵模式,哨兵模式会监控所有的Redis 工作节点是否正常,当Master 出现问题的时候,因为其他节点与主节点失去联系,因此会投票,投票过半就认为这个 Master 的确出现问题,然后会通知哨兵间,然后从Slaves中选取一个作为新的 Master。
需要特别注意的是:客观下线是主节点才有的概念;如果从节点和哨兵节点发生故障,被哨兵主观下线后,不会再有后续的客观下线和故障转移操作。
哨兵的启动依赖于主从模式,所以须把主从模式安装好的情况下再去做哨兵模式
Master:192.168.40.17
Slave1:192.168.40.170
Slave2:192.168.40.172
vim /opt/redis-5.0.7/sentinel.conf
protected-mode no #17行,关闭保护模式
port 26379 #21行,Redis哨兵默认的监听端口
daemonize yes #26行,指定sentinel为后台启动
logfile "/var/log/sentinel.log" #36行,指定日志存放路径
dir "/var/lib/redis/6379" #65行,指定数据库存放路径
sentinel monitor mymaster 192.168.40.17 6379 2 #84行, 修改
指定该哨兵节点监控192.168.40.17:6379这个主节点,该主节点的名称是mymaster,最后的2的含义与主节点的故障判定有关:至少需要2个哨兵节点同意,才能判定主节点故障并进行故障转移
sentinel down-after-milliseconds mymaster 30000 #113行,判定服务器down掉的时间周期,默认30000毫秒(30秒)
sentinel failover-timeout mymaster 180000 #146行,故障节点的最大超时时间为180000 (180秒 )
cd /opt/redis-5.0.7/
redis-sentinel sentinel.conf &
注意!先启动主服务器,再启动从服务器
redis-cli -p 26379 info Sentinel
#在Master 上查看redis-server进程号:
ps -elf | grep redis
#杀死 Master 节点上redis-server的进程号
kill -9 redis进程号 #Master节点上redis-server的进程号
#验证master是转换至从服务器
tail -f /var/log/sentinel.log
#在Slave上查看是否转换成功
redis-cli -p 26379 INFO Sentinel
<- - -以3个节点组成的集群为例- - ->
节点A 包含0到5460号哈希槽
节点B 包含5461到10922号哈希槽
节点C 包含10923到16383号哈希槽
192.168.40.16 master
这里为了方便所有的节点都在同一台服务器上模拟
cd /etc/redis
mkdir -p redis-cluster/redis600{1..6}
for i in {1..6}
do
cp /opt/redis-5.0.7/redis.conf /etc/redis/redis-cluster/redis600$i
cp /opt/redis-5.0.7/src/redis-cli /opt/redis-5.0.7/src/redis-server /etc/redis/redis-cluster/redis600$i
done
cd /etc/redis/redis-cluster/redis6001
vim redis.conf
#bind 127.0.0.1 #69行,注释掉bind项,默认监听所有网卡
protected-mode no #88行,修改,关闭保护模式
port 6001 #92行,修改,redis监听端口,
daemonize yes #136行,开启守护进程,以独立进程启动
cluster-enabled yes #832行,取消注释,开启群集功能
cluster-config-file nodes-6001.conf #840行,取消注释,群集名称文件设置
cluster-node-timeout 15000 #846行,取消注释群集超时时间设置
appendonly yes #700行,修改,开启AOF持久化
分别进入那六个文件夹,执行命令: redis-server redis.conf ,来启动redis节点
cd /etc/redis/redis-cluster/redis6001
redis-server redis.conf
for i in {1..6}
do
cd /etc/redis/redis-cluster/redis600$i
redis-server redis.conf
done
ps -ef | grep redis
redis-cli --cluster create 127.0.0.1:6001 127.0.0.1:6002 127.0.0.1:6003 127.0.0.1:6004 127.0.0.1:6005 127.0.0.1:6006 --cluster-replicas 1
yes
redis-cli -p 6001 -c #加-c参数,节点之间就可以互相跳转
cluster slots #查看节点的哈希槽编号范围
set test lisi
cluster keyslot test #查看name键的槽编号
1.主从复制适用于数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复。
2.哨兵模式基于主从复制,部署哨兵模式必须先部署主从复制,其在主从复制基础上提供了自动化的故障恢复。但是其写操作无法负载均衡,存储能力受到单机的限制。
3.Redis集群提供了分布式存储方案解决了写操作无法负载均衡,以及存储能力受到单机限制的问题,实现了较为完善的高可用方案,其集群最低需要6个节点,三主三从,实现Redis高可用