1. redis 下載
請使用命令 brew install redis 下載
2. 創建目錄 + 配置文件
我們準備創建 6 個節點,創建 6 個工作目錄。
cd ~
mkdir redisCluter
cd redisCluster
mkdir 7000 7001 7002 7003 7004 7005
目錄創建好了,目錄名就是端口號。
接下來,創建節點“配置文件”。
將你下載的 redis 目錄下的配置文件(通常在 /usr/local/etc/redis.conf)拷貝到每個目錄下,然後按如下配置逐一修改。
# 端口號,每個目錄都不同
port 700X
# 開啓集羣模式
cluster-enabled yes
#節點超時實際,單位毫秒
cluster-node-timeout 5000
#集羣內部配置文件(默認爲 nodes.conf)
cluster-config-file nodes.conf
# 啓動 AOF
appendonly yes
#配置工作目錄
dir /Users/XXX/java/redisCluter/7000/
#讓redis在後臺運行
daemonize yes
#當運行多個redis服務時,需要指定不同的pid文件和端口
pidfile /var/run/redis_7000.pid
然後,逐一進入各個目錄,執行命令:
redis-server redis.conf
看到如下結果說明執行成功
redis-server redis.conf
113:C 28 Oct 2019 00:15:18.628 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
113:C 28 Oct 2019 00:15:18.628 # Redis version=5.0.4, bits=64, commit=00000000, modified=0, pid=113, just started
通常會生成如下文件
appendonly.aof
dump.rdb nodes.conf
redis.conf
3. 關聯節點
首先隨便進入一個節點的redis-cli
redis-cli -p 7000
進行關聯(此時在節點7000的redis-cli中將7001節點關聯進集羣),依次完成所有節點關聯
127.0.0.1:7000> cluster meet 127.0.0.1 7001
OK
4. 分配 slot
redis Cluster 是由 16384 個 slot 組成的,
我們需要將這些槽分散到這其中 3 個節點裏(3 主 3 從)。
退出7000 redis-cli執行以下命令
redis-cli -p 7000 cluster addslots {0..5461}
redis-cli -p 7001 cluster addslots {5462..10922}
redis-cli -p 7002 cluster addslots {10923..16383}
5. 主從複製
主節點已經有了 slot,最後一步將主節點和從節點進行關聯,形成主從複製的關係。
執行如下命令:
redis-cli -p 7003 cluster replicate 7000的NodeID
redis-cli -p 7004 cluster replicate 7001的NodeID
redis-cli -p 7005 cluster replicate 7002的NodeID
這個 7000的NodeID 7001 可以通過命令 redis-cli -p 7000 cluster nodes 命令查看,最前面的 16 進制字符串。
大功告成
通過以下命令驗證:
redis-cli -p 7000 cluster nodes
079211025f711602a09da95e1e0e79807d030fa6 127.0.0.1:7006@17006 master,fail - 1572194105406 1572194104400 6 disconnected
50c623c01c67c7d08794c205f2c5c5b96f1628d8 127.0.0.1:7002@17002 master - 0 1572196869521 3 connected 10923-16383
0b44dc64c6c6749454a1727ecb3b11d099d785bf 127.0.0.1:7005@17005 slave 50c623c01c67c7d08794c205f2c5c5b96f1628d8 0 1572196868508 5 connected
173c7bb77530b95b29093d69889b135800c4e2b6 127.0.0.1:7004@17004 slave 38ae45133b81f6e03f28027408bd2e42bf325670 0 1572196869928 4 connected
4f90bec89541b34fafd2cd46532981bbefc297c9 127.0.0.1:7000@17000 myself,master - 0 1572196869000 2 connected 0-5461
cd4810453c328d6b8db56a6157bc08798c9285ef 127.0.0.1:7003@17003 slave 4f90bec89541b34fafd2cd46532981bbefc297c9 0 1572196868000 2 connected
38ae45133b81f6e03f28027408bd2e42bf325670 127.0.0.1:7001@17001 master - 0 1572196869000 1 connected 5462-10922
6.設置密碼
方式一:修改所有Redis集羣中的redis.conf文件加入:
masterauth passwd123
requirepass passwd123
說明:這種方式需要重新啓動各節點
方式二:進入各個實例進行設置強列推薦:
./redis-cli -c -p 7000
config set masterauth passwd123
config set requirepass passwd123
config rewrite
這種方式不需要重啓,之後使用命令將人集羣所有節點密碼更改,密碼需保持一致
如出現如下錯誤:
(error) NOAUTH Authentication required.
請使用命令解決
auth "yourpassword"