文章目錄
- 一、節點分布總覽
- 二、軟體配置初始化
- 三、叢集配置修改
- 3.1. redis-7002.conf
- 3.2. redis-7003.conf
- 3.3. redis-8001.conf
- 3.4. redis-8002.conf
- 3.5. redis-8003.conf
- 3.6. redis啟動
- 四、 節點握手
- 4.1. 節點握手
- 4.2. 記錄檔如下:
- 五、槽位配置設定和配置主從
- 5.1. 槽位配置設定
- 5.2. 主從複制配置設定
- 5.3. 叢集驗證
Redis 分布式叢集能解決的問題 | 叢集 概念 |
解決現有系統單節點并發壓力和實體上限問題 | 通過添加伺服器的數量,提供相同的服務,進而讓伺服器達到一個穩定、高效的狀态 |
一、節點分布總覽
示範案例
3主3從 橫向擴充
伺服器 | 端口 | 節點說明 |
192.168.0.114 | 7001 | master |
192.168.0.114 | 7002 | master |
192.168.0.114 | 7003 | master |
192.168.0.114 | 8001 | slave |
192.168.0.114 | 8002 | slave |
192.168.0.114 | 8003 | slave |
二、軟體配置初始化
- 下載下傳
wget
- 解壓
cd /app
tar
- 編譯安裝
cd redis-6.2.6/
make install
- 配置抽離
mkdir /app/redis-cluster/
cp
- 編輯配置
vim
-
修改配置7處:
bind
改為 bind 127.0.0.1
port 0.0.0.0
改為 port 6379
daemonize 7001
改為 daemonize no
pidfile /var/run/redis_yes
.pid 改為 pidfile /var/run/redis_6379
7001
.pid
注釋打開cluster-enabled yes
注釋打開 cluster-node-timeout 15000
注釋打開 nodes-
.conf 改為nodes-6379
.conf7001
- 叢集配置配置設定
将/app/redis-cluster/redis.conf複制6份并重命名
cd app/redis-cluster/
cp redis.conf redis-7001.conf
cp redis.conf redis-7002.conf
cp redis.conf redis-7003.conf
cp redis.conf redis-8001.conf
cp redis.conf redis-8002.conf
cp
三、叢集配置修改
分别修改redis-7002.conf、redis-7003.conf、redis-8001.conf、redis-8002.conf、redis-8003.conf
3.1. redis-7002.conf
vim
port 把
7001
修改為
7002
将
7001
.pid 修改為
7002
.pid
将nodes-
7001
.conf 修改為 nodes-
7002
.conf
3.2. redis-7003.conf
vim
port 把
7001
修改為
7003
将
7001
.pid 修改為 7003.pid
将nodes-
7001
.conf 修改為 nodes-
7003
.conf
3.3. redis-8001.conf
vim
port 把
7001
修改為
8001
将
7001
.pid 修改為
8001
.pid
将nodes-
7001
.conf 修改為 nodes-
8001
.conf
3.4. redis-8002.conf
vim
92行 port 把
7001
修改為
8002
将
7001
.pid 修改為
8002
.pid
将nodes-
7001
.conf 修改為 nodes-
8002
.conf
3.5. redis-8003.conf
vim
port 把
7001
修改為
8003
将
7001
.pid 修改為
8003
.pid
将nodes-
7001
.conf 修改為 nodes-
8003
.conf
3.6. redis啟動
/app/redis-6.2.6/src/redis-server /app/redis-cluster/redis-7001.conf
/app/redis-6.2.6/src/redis-server /app/redis-cluster/redis-7002.conf
/app/redis-6.2.6/src/redis-server /app/redis-cluster/redis-7003.conf
/app/redis-6.2.6/src/redis-server /app/redis-cluster/redis-8001.conf
/app/redis-6.2.6/src/redis-server /app/redis-cluster/redis-8002.conf
/app/redis-6.2.6/src/redis-server /app/redis-cluster/redis-8003.conf
檢視程序:
ps -ef |grep
記錄檔如下:
[root@localhost ~]# ps -ef |grep redis
root 7770 1 0 11:29 ? 00:00:00 /app/redis-6.2.6/src/redis-server 0.0.0.0:7001 [cluster]
root 7775 1 0 11:29 ? 00:00:00 /app/redis-6.2.6/src/redis-server 0.0.0.0:7002 [cluster]
root 7780 1 0 11:29 ? 00:00:00 /app/redis-6.2.6/src/redis-server 0.0.0.0:7003 [cluster]
root 7785 1 0 11:29 ? 00:00:00 /app/redis-6.2.6/src/redis-server 0.0.0.0:8001 [cluster]
root 7790 1 0 11:29 ? 00:00:00 /app/redis-6.2.6/src/redis-server 0.0.0.0:8002 [cluster]
root 7795 1 0 11:29 ? 00:00:00 /app/redis-6.2.6/src/redis-server 0.0.0.0:8003 [cluster]
root 7800 7404 0 11:29 pts/1 00:00:00 grep --color=auto redis
[root@localhost ~]#
四、 節點握手
上面僅僅是搭建了叢集,6個節點之間還沒有關系,下面通過 節點握手讓叢集各節點之間,發生關系。
4.1. 節點握手
7001節點,依次執行(一條一條複制粘貼)以下指令:
/app/redis-6.2.6/src/redis-cli -h localhost -p 7001
cluster meet 192.168.0.114 7002
cluster meet 192.168.0.114 7003
cluster meet 192.168.0.114 8001
cluster meet 192.168.0.114 8002
cluster meet 192.168.0.114 8003
4.2. 記錄檔如下:
[root@localhost ~]# /app/redis-6.2.6/src/redis-cli -h localhost -p 7001
localhost:7001> cluster meet 192.168.0.114 7002
OK
localhost:7001> cluster meet 192.168.0.114 7003
OK
localhost:7001> cluster meet 192.168.0.114 8001
OK
localhost:7001> cluster meet 192.168.0.114 8002
OK
localhost:7001> cluster meet 192.168.0.114 8003
OK
localhost:7001>
五、槽位配置設定和配置主從
5.1. 槽位配置設定
/app/redis-6.2.6/src/redis-cli -h localhost -p 7001 cluster addslots {0..5461}
/app/redis-6.2.6/src/redis-cli -h localhost -p 7002 cluster addslots {5462..10922}
/app/redis-6.2.6/src/redis-cli -h localhost -p 7003 cluster addslots {10923..16383}
記錄檔:
[root@localhost ~]# /app/redis-6.2.6/src/redis-cli -h localhost -p 7001 cluster addslots {0..5461}
OK
[root@localhost ~]# /app/redis-6.2.6/src/redis-cli -h localhost -p 7002 cluster addslots {5462..10922}
OK
[root@localhost ~]# /app/redis-6.2.6/src/redis-cli -h localhost -p 7003 cluster addslots {10923..16383}
OK
[root@localhost ~]#
登入7001節點
/app/redis-6.2.6/src/redis-cli -h localhost -p 7001
檢視叢集資訊:cluster info
檢視節點資訊:cluster nodes
記錄檔:
[root@localhost ~]# /app/redis-6.2.6/src/redis-cli -h localhost -p 7001
localhost:7001> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:5
cluster_my_epoch:0
cluster_stats_messages_ping_sent:278
cluster_stats_messages_pong_sent:298
cluster_stats_messages_meet_sent:5
cluster_stats_messages_sent:581
cluster_stats_messages_ping_received:298
cluster_stats_messages_pong_received:283
cluster_stats_messages_received:581
localhost:7001> cluster nodes
c1526c666b10d8e21858121be70ad74e391c9b7c 192.168.0.114:8002@18002 master - 0 1587267512220 4 connected
f990f845ed898dea7b7f8f39befd4f0dc247988a 192.168.0.114:8003@18003 master - 0 1587267510000 5 connected
fd35850bf465cb53b0ffc8f843078c171d14583d 192.168.0.114:7001@17001 myself,master - 0 1587267510000 0 connected 0-5461
3523d3510e7a551929729798f5ea0e9b65d85eea 192.168.0.114:7003@17003 master - 0 1587267511212 2 connected 10923-16383
faaa97d6fc1f163e9eb2549c77b4f6f3c68bc025 192.168.0.114:8001@18001 master - 0 1587267511000 3 connected
72e1d44ffa3b20f17ba6abb3aa8df3a9752e00cc 192.168.0.114:7002@17002 master - 0 1587267512000 1 connected 5462-10922
localhost:7001>
注:目前都是master,節點資訊等會要用,這個視窗先不要關閉,
在新開一個視窗,進行下一步操作
5.2. 主從複制配置設定
複制原則:8001複制7001、8001複制7001、8003複制7003
/app/redis-6.2.6/src/redis-cli -h localhost -p 8001 cluster replicate fd35850bf465cb53b0ffc8f843078c171d14583d
/app/redis-6.2.6/src/redis-cli -h localhost -p 8002 cluster replicate 72e1d44ffa3b20f17ba6abb3aa8df3a9752e00cc
/app/redis-6.2.6/src/redis-cli -h localhost -p 8003 cluster replicate 3523d3510e7a551929729798f5ea0e9b65d85eea
記錄檔如下:
[root@localhost ~]# /app/redis-6.2.6/src/redis-cli -h localhost -p 8001 cluster replicate fd35850bf465cb53b0ffc8f843078c171d14583d
localhost -p 8003 cluster replicate 3523d3510e7a551929729798f5ea0e9b65d85eeaOK
[root@localhost ~]# /app/redis-6.2.6/src/redis-cli -h localhost -p 8002 cluster replicate 72e1d44ffa3b20f17ba6abb3aa8df3a9752e00cc
OK
[root@localhost ~]# /app/redis-6.2.6/src/redis-cli -h localhost -p 8003 cluster replicate 3523d3510e7a551929729798f5ea0e9b65d85eea
OK
[root@localhost ~]#
5.3. 叢集驗證
登入7001節點
/app/redis-6.2.6/src/redis-cli -h localhost -p 7001
[root@localhost ~]# /app/redis-6.2.6/src/redis-cli -h localhost -p 7001
localhost:7001> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:5
cluster_my_epoch:0
cluster_stats_messages_ping_sent:692
cluster_stats_messages_pong_sent:734
cluster_stats_messages_meet_sent:5
cluster_stats_messages_sent:1431
cluster_stats_messages_ping_received:734
cluster_stats_messages_pong_received:697
cluster_stats_messages_received:1431
localhost:7001> cluster nodes
c1526c666b10d8e21858121be70ad74e391c9b7c 192.168.0.114:8002@18002 slave 72e1d44ffa3b20f17ba6abb3aa8df3a9752e00cc 0 1587267912538 4 connected
f990f845ed898dea7b7f8f39befd4f0dc247988a 192.168.0.114:8003@18003 slave 3523d3510e7a551929729798f5ea0e9b65d85eea 0 1587267911000 5 connected
fd35850bf465cb53b0ffc8f843078c171d14583d 192.168.0.114:7001@17001 myself,master - 0 1587267909000 0 connected 0-5461
3523d3510e7a551929729798f5ea0e9b65d85eea 192.168.0.114:7003@17003 master - 0 1587267913546 2 connected 10923-16383
faaa97d6fc1f163e9eb2549c77b4f6f3c68bc025 192.168.0.114:8001@18001 slave fd35850bf465cb53b0ffc8f843078c171d14583d 0 1587267910000 3 connected
72e1d44ffa3b20f17ba6abb3aa8df3a9752e00cc 192.168.0.114:7002@17002 master - 0 1587267912000 1 connected 5462-10922
localhost:7001>