目录
一. redis的主从复制
二. 哨兵模式
2.1 定义
2.2 作用
2.3 配置实例
三. Redis cluster
3.1 定义
3.2 作用
3.3 配置实例
1. 新建集群文件目录
2. 准备可执行文件到每个文件夹
3. 开启群集功能
4. 启动redis节点
5. 查看是否启动成功
6. 启动集群
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 2sentinel 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.confsentinel monitor mymaster 192.168.52.105 6379 2sentinel 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.confscp 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
eofsystemctl daemon-reload
systemctl start redis-sentinel.servicetail 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 redisfor 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 | 取消 主从配置 |