目录
[一. redis的主从复制](#一. redis的主从复制)
[二. 哨兵模式](#二. 哨兵模式)
[2.1 定义](#2.1 定义)
[2.2 作用](#2.2 作用)
[2.3 配置实例](#2.3 配置实例)
[三. Redis cluster](#三. Redis cluster)
[3.1 定义](#3.1 定义)
[3.2 作用](#3.2 作用)
[3.3 配置实例](#3.3 配置实例)
[1. 新建集群文件目录](#1. 新建集群文件目录)
[2. 准备可执行文件到每个文件夹](#2. 准备可执行文件到每个文件夹)
[3. 开启群集功能](#3. 开启群集功能)
[4. 启动redis节点](#4. 启动redis节点)
[5. 查看是否启动成功](#5. 查看是否启动成功)
[6. 启动集群](#6. 启动集群)
[7. 测试集群](#7. 测试集群)
[四. 命令行配置](#四. 命令行配置)
一. redis的主从复制
#主服务器
vim /apps/redis/etc/redis.conf
requirepass 123456
#从服务器
vim /apps/redis/etc/redis.conf
replicaof 192.168.52.105 6379
masterauth 123456
systemctl restart redis
#主服务器
redis-cli -a 123456 info replication
二. 哨兵模式
2.1 定义
Redis 哨兵模式主要用于实现 Redis 的高可用性。
2.2 作用
-
主从切换:当主节点(Master)出现故障时,哨兵会自动将一个从节点(Slave)提升为新的主节点,确保服务不中断。
-
监控:哨兵持续监控 Redis 主节点和从节点的健康状态,检测节点是否在线或出现故障。
-
通知:当检测到故障或主从切换时,哨兵可以通过配置的方式通知管理员或其他系统。
-
配置管理:哨兵会自动更新客户端的主节点地址,确保客户端始终连接到正确的主节点。
2.3 配置实例
实验设备
Ubuntu---192.168.52.105(主服务器)
Ubuntu1---192.168.52.31和Ubuntu2---192.168.52.107(从服务器)
#主服务器
vim /data/redis-6.2.6/sentinel.conf
bind 0.0.0.0
logfile "/apps/redis/log/sentinel.log"
#修改sentinel monitor mymaster 127.0.0.1 6379 2为
sentinel monitor mymaster 192.168.52.105 6379 2
sentinel auth-pass 123456
sentinel down-after-milliseconds mymaster 3000
#从服务器
vim /apps/redis/etc/redis.conf
masterauth 123456
replicaof 192.168.52.105 6379
#查看
redis-cli
info

#主服务器
vim /data/redis-6.2.6/sentinel.conf
sentinel monitor mymaster 192.168.52.105 6379 2
sentinel auth-pass mymaster 123456
#从服务器
echo "requirepass 123456" >> /apps/redis/etc/redis.conf
systemctl restart redis
在主
cd /data/redis-6.2.6/
cp sentinel.conf /apps/redis/etc/
cd /apps/redis/etc/
chown redis:redis sentinel.conf
scp sentinel.conf 192.168.52.31:/apps/redis/etc/
scp sentinel.conf 192.168.52.107:/apps/redis/etc/
在从
cd /apps/redis/etc/
chown redis:redis sentinel.conf
#必须先从主服务器开始,然后再是从服务器
cat >> /lib/systemd/system/redis-sentinel.service <<eof
[Unit]
Description=Redis Sentinel
After=network.target
[Service]
ExecStart=/apps/redis/bin/redis-sentinel /apps/redis/etc/sentinel.conf --supervised systemd
ExecStop=/bin/kill -s QUIT $MAINPID
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755
[Install]
WantedBy=multi-user.target
eof
systemctl daemon-reload
systemctl start redis-sentinel.service
tail sentinel.conf


三. Redis cluster
3.1 定义
Redis Cluster 是 Redis 官方提供的分布式解决方案,主要用于实现 Redis 的高可用性和数据分片。
3.2 作用
-
数据分片:Redis Cluster 将数据自动分片到多个节点上,每个节点只存储部分数据,从而支持更大规模的数据集。
-
高可用性:每个分片(Shard)都有主节点和从节点,当主节点出现故障时,从节点会自动提升为主节点,确保服务不中断。
-
自动故障转移:Redis Cluster 会自动检测节点故障,并进行主从切换,无需人工干预。
-
数据一致性:Redis Cluster 使用异步复制来保证数据的一致性,同时支持部分同步(Partial Resynchronization)以减少数据丢失。
-
客户端透明访问:客户端可以连接到任意节点,Redis Cluster 会自动将请求路由到正确的节点。
3.3 配置实例
1. 新建集群文件目录
cd /apps/redis/
mkdir -p redis-cluster/redis600{1..6}

2. 准备可执行文件到每个文件夹
cd redis-cluster/
for i in {1..6}
do
cp /data/redis-6.2.6/redis.conf /apps/redis/redis-cluster/redis600$i
cp /data/redis-6.2.6/src/redis-cli /data/redis-6.2.6/src/redis-server /apps/redis/redis-cluster/redis600$i
done
#查看
tree

3. 开启群集功能
cd /apps/redis/redis-cluster/redis6001/
vim redis.conf
bind 0.0.0.0 #默认监听所有网卡
protected-mode no #修改,关闭保护模式
port 6001 #修改,redis监听端口,
daemonize yes #开启守护进程,以独立进程启动 如果是 systemd 启动不需要修改
cluster-enabled yes #取消注释,开启群集功能
cluster-config-file nodes-6001.conf #取消注释,群集名称文件设置
cluster-node-timeout 15000 #取消注释群集超时时间设置
appendonly yes #修改,开启AOF持久化
daemonize yes #开启后台启动
#将 redis6001 目录下的 redis.conf 配置文件复制到 redis6002 到 redis6006 目录中。
cd /apps/redis/redis-cluster/redis6001
for i in {2..6}
do
\cp -f ./redis.conf /apps/redis/redis-cluster/redis600${i}
done
#修改端口号
sed -i 's/6001/6002/' /apps/redis/redis-cluster/redis6002/redis.conf
sed -i 's/6001/6003/' /apps/redis/redis-cluster/redis6003/redis.conf
sed -i 's/6001/6004/' /apps/redis/redis-cluster/redis6004/redis.conf
sed -i 's/6001/6005/' /apps/redis/redis-cluster/redis6005/redis.conf
sed -i 's/6001/6006/' /apps/redis/redis-cluster/redis6006/redis.conf

4. 启动redis节点
systemctl stop redis
for d in {1..6}
do
cd /apps/redis/redis-cluster/redis600$d
redis-server redis.conf
done

5. 查看是否启动成功
ps aux|grep redis

6. 启动集群
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



7. 测试集群
redis-cli -p 6001 -c
#查看节点的哈希槽编号范围
cluster slots

#生成数据测试
set name zhangsan
#查看name键的槽编号
cluster keyslot name

四. 命令行配置
命令 | 解释 |
---|---|
info replication | 查看主从状态 |
repliacaof 或者 ( slaveof ) | 添加主从配置 例子: repliacaof 192.168.91.100 6379 |
CONFIG SET masterauth 123456 | 临时设置密码 |
repliacaof masterip masterport | 临时添加主设置 |
REPLICAOF no one | 取消 主从配置 |