Redis 三主三從高可用集群部署全過程詳解
一、環境規劃
準備3 臺服務器,每臺部署兩個 Redis 實例:
IP地址 | 主機名 | 角色 | 端口 |
10.0.0.41 | redis01 | master1,slave1 | 6379,6380 |
10.0.0.42 | redis02 | master2,slave2 | 6379,6380 |
10.0.0.43 | redis03 | master3,slave3 | 6379,6380 |
每個 Redis 實例運行在不同的端口上。
二、配置 Redis 實例
1. 在每臺主機上安裝 Redis
(1) 下載源碼包
下載地址:https://redis.io/downloads/
也可以在有網環境直接獲取:
wget https://download.redis.io/releases/redis-7.0.15.tar.gz
(2) 解壓并編譯
# 解壓到/data目錄下
tar -xvf redis-7.0.15.tar.gz -C /opt
# 編譯
[root@redis01 ~]# cd /opt
[root@redis01 opt]# cd redis-7.0.15/
[root@redis01 redis-7.0.15]# make
編譯完成后,二進制文件會生成在 src 目錄下:
- redis-server:Redis 服務端
- redis-cli:Redis 客戶端
(3) 分發到其他主機
將編譯好的 Redis 文件夾復制到其他兩臺主機:
scp -rp /opt/redis-7.0.15/ root@10.0.0.42:/opt
scp -rp /opt/redis-7.0.15/ root@10.0.0.43:/opt
2. 配置 Redis 實例
在每臺主機上運行兩個 Redis 實例,需要為每個實例創建獨立的配置文件和數據目錄。以主機 1 為例:
(1) 創建配置文件存放路徑
mkdir -p /opt/redis/{6379,6380}/{conf,data,logs,pid}
(2) master1-6379配置文件:
cat > /opt/redis/6379/conf/redis_6379.conf <<EOF
bind 0.0.0.0
protected-mode no
port 6379
daemonize yes
logfile /opt/redis/6379/logs/redis_6379.log
pidfile /opt/redis/6379/pid/redis_6379.pid
dbfilename "redis_6379.rdb"
dir /opt/redis/6379/data
cluster-enabled yes
cluster-config-file node_6379.conf
cluster-node-timeout 15000
EOF
(3) slave-7380配置文件:
cat > /opt/redis/6380/conf/redis_6380.conf << EOF
bind 0.0.0.0
protected-mode no
# 指定 Redis 監聽的 TCP 端口,默認
port 6380
daemonize yes
logfile /opt/redis/6380/logs/redis_6380.log
pidfile /opt/redis/6380/pid/redis_6380.pid
dbfilename "redis_6380.rdb"
dir /opt/redis/6380/data
cluster-enabled yes
cluster-config-file node_6380.conf
cluster-node-timeout 15000
EOF
配置文件常用字段:
- bind:指定 Redis 服務綁定的 IP 地址,默認127.0.0.1(僅本機訪問)
- protected-mode:是否啟用保護模式,默認為yes,Redis 在未設置密碼且非本地訪問時,自動拒絕連接
- port:指定redis監聽的TCP端口,默認6379
- daemonize:指定redis是否以后臺守護進程模式運行,默認為no
- logfile:指定日志輸出文件路徑
- pidfile:pid文件存放位置
- dir:數據文件目錄,Redis 將持久化文件(如 RDB 文件和 AOF 文件)存儲在此目錄
- cluster-enabled:啟用 Redis 集群模式,默認為no
- cluster-config-file:指定 Redis 集群節點的配置文件
- cluster-node-timeout:Redis 集群中節點之間通信的超時時間,默認15000 毫秒
(4) 配置環境變量
vi /etc/profile
export PATH=$PATH:/opt/redis-7.0.15/src
source /etc/profile
(5) 啟動redis
# 啟動6379
redis-server /opt/redis/6379/conf/redis_6379.conf
# 啟動7380
redis-server /opt/redis/6380/conf/redis_6380.conf
# 停止
redis-cli -c -h 10.0.0.41 -p 6379 shutdown
redis-cli -c -h 10.0.0.41 -p 6380 shutdown
(6) 配置主機 2 和主機 3
重復上述步驟,將每個節點的redis都啟動起來 查看結果:
ps -ef |grep redis
redis-server --version
每個節點都運行兩個redis:
三、創建 Redis 集群
1. 啟用集群模式
在所有節點啟動完成后,可以通過 redis-cli 創建集群。任選一臺主機,執行以下命令:
redis-cli --cluster create \
10.0.0.41:6379 10.0.0.42:6379 10.0.0.43:6379 \
10.0.0.41:6380 10.0.0.42:6380 10.0.0.43:6380 \
--cluster-replicas 1
--cluster-replicas 1 表示每個主節點有一個從節點。
【溫馨提示】每個節點需要關閉防火墻或開通對應的實例端口:
輸入yes,接受。
創建完成后,Redis 會自動分配主從角色:
2. 驗證集群狀態
通過以下命令查看集群狀態:
redis-cli -p 6379 cluster nodes
你應該看到輸出類似以下內容:
至此,集群已經部署完成!