Redis Cluster 基本說明
首先,Redis Cluster 必須有三個以上 master 才能建立出來。
我們先設定三組 master服務。
配置步驟
伺服器 | 埠 | 角色 |
---|---|---|
192.168.1.220 | 6379 | master |
192.168.1.220 | 7379 | slave |
192.168.1.221 | 6379 | master |
192.168.1.221 | 7379 | slave |
192.168.1.222 | 6379 | master |
192.168.1.222 | 7379 | slave |
配置方面
master 的
port 6379
cluster-enabled yes #要開啟叢集開關
cluster-config-file nodes-cluster.conf #配置配置檔案 無需維護
cluster-node-timeout 5000
appendonly yes
daemonize no
protected-mode no
pidfile /var/run/redis-cluster.pid
cluster-announce-ip 192.168.1.220 #對外ip。【你可以理解為選擇哪個網路】
slave 的
port 7379
cluster-enabled no #這裡關閉
appendonly yes
daemonize no
protected-mode no
pidfile /var/run/redis.pid
slaveof 192.168.1.220 6379
docker-compose
version: '3.7'
x-image:
&default-image
image: redis:5.0.7
services:
redis-master-cluster:
<<: *default-image
container_name: redis-master-cluster
command:
["redis-server", "/home/redis/cluster/redis.conf"]
volumes:
- ./master-cluster.conf:/home/redis/cluster/redis.conf
- ./master-data:/data
ports:
- 6379:6379
- 16379:16379 #cluster 預設通訊埠是 redis埠 + 10000,所以這個介面也要開啟
redis-slave-cluster:
<<: *default-image
container_name: redis-slave-cluster
command:
["redis-server", "/home/redis/cluster/redis.conf"]
volumes:
- ./slave.conf:/home/redis/cluster/redis.conf
- ./slave-data:/data
ports:
- 7001:7379
然後 使用 docker-compose 開啟容器
docker compose up -d
最後開啟 cluster
我們要使用 redis-cli 來配置 cluster。
1、先進入一個主節點
docker exec -it your_master_container_name /bin/bash
-i 表示互動式輸入【interactive】,作用是保持標準輸入開啟,使得使用者可以透過終端向容器內部程序傳送訊息
-t 表示分配偽終端,可以讓容器內的程序在一個類似終端的環境中執行有了偽終端,容器內的命令列介面會更加友好,例如可以支援彩色輸出、正確處理終端控制字元(如退格# 鍵、箭頭鍵等)。如果沒有-t選項,在容器內執行一些需要終端支援的命令可能會出現問題。
2、連線三臺伺服器
redis-cli --cluster create 192.168.1.220:6379 192.168.1.221:6379 192.168.1.222:6379 --cluster-replicas 0
--cluster-replicas 0 最後的 0 表示 一個主master 建立的 副本節點數量。我們這裡做測試所以不需要。
測試
用客戶端連線測試
> set k1 hahaha
MOVED 12706 192.168.1.222:6379
> set k2 heiheihei
OK
> set k3 wuwuwu
OK
> set k4 haohaohao
MOVED 8455 192.168.1.221:6379
這裡發現 第一次輸入的被移到 222 伺服器上了。
而 k2, k3 則正常。