Redis 三主三從高可用集群部署全過程詳解
一、環(huán)境規(guī)劃
準(zhǔn)備3 臺服務(wù)器,每臺部署兩個 Redis 實(shí)例:
IP地址 | 主機(jī)名 | 角色 | 端口 |
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 實(shí)例運(yùn)行在不同的端口上。
二、配置 Redis 實(shí)例
1. 在每臺主機(jī)上安裝 Redis
(1) 下載源碼包
下載地址:https://redis.io/downloads/
也可以在有網(wǎng)環(huán)境直接獲?。?/p>
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
編譯完成后,二進(jìn)制文件會生成在 src 目錄下:
- redis-server:Redis 服務(wù)端
- redis-cli:Redis 客戶端
(3) 分發(fā)到其他主機(jī)
將編譯好的 Redis 文件夾復(fù)制到其他兩臺主機(jī):
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 實(shí)例
在每臺主機(jī)上運(yùn)行兩個 Redis 實(shí)例,需要為每個實(shí)例創(chuàng)建獨(dú)立的配置文件和數(shù)據(jù)目錄。以主機(jī) 1 為例:
(1) 創(chuàng)建配置文件存放路徑
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 監(jiān)聽的 TCP 端口,默認(rèn)
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 服務(wù)綁定的 IP 地址,默認(rèn)127.0.0.1(僅本機(jī)訪問)
- protected-mode:是否啟用保護(hù)模式,默認(rèn)為yes,Redis 在未設(shè)置密碼且非本地訪問時,自動拒絕連接
- port:指定redis監(jiān)聽的TCP端口,默認(rèn)6379
- daemonize:指定redis是否以后臺守護(hù)進(jìn)程模式運(yùn)行,默認(rèn)為no
- logfile:指定日志輸出文件路徑
- pidfile:pid文件存放位置
- dir:數(shù)據(jù)文件目錄,Redis 將持久化文件(如 RDB 文件和 AOF 文件)存儲在此目錄
- cluster-enabled:啟用 Redis 集群模式,默認(rèn)為no
- cluster-config-file:指定 Redis 集群節(jié)點(diǎn)的配置文件
- cluster-node-timeout:Redis 集群中節(jié)點(diǎn)之間通信的超時時間,默認(rèn)15000 毫秒
(4) 配置環(huán)境變量
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) 配置主機(jī) 2 和主機(jī) 3
重復(fù)上述步驟,將每個節(jié)點(diǎn)的redis都啟動起來 查看結(jié)果:
ps -ef |grep redis
redis-server --version
每個節(jié)點(diǎn)都運(yùn)行兩個redis:
三、創(chuàng)建 Redis 集群
1. 啟用集群模式
在所有節(jié)點(diǎn)啟動完成后,可以通過 redis-cli 創(chuàng)建集群。任選一臺主機(jī),執(zhí)行以下命令:
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 表示每個主節(jié)點(diǎn)有一個從節(jié)點(diǎn)。
【溫馨提示】每個節(jié)點(diǎn)需要關(guān)閉防火墻或開通對應(yīng)的實(shí)例端口:
輸入yes,接受。
創(chuàng)建完成后,Redis 會自動分配主從角色:
2. 驗證集群狀態(tài)
通過以下命令查看集群狀態(tài):
redis-cli -p 6379 cluster nodes
你應(yīng)該看到輸出類似以下內(nèi)容:
至此,集群已經(jīng)部署完成!