目錄
一. 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 | 取消 主從配置 |