最近陸陸續續有很多園友加我好友諮詢 redis 集羣搭建的問題,我以爲必定是以前寫的這篇 《基於Docker的Redis集羣搭建》 文章有問題了,因此我花了幾分鐘瀏覽以前的文章總結了下面幾個問題:html
基於以前的文章,我想快速的過一下這幾個問題,本文基於 Docker + Redis 5.0.5 版本,經過 cluster 方式建立一個 6 個 redis 實例的主從集羣,固然文章會指出相應的參數說明,這樣即使是建立 9 個實例的集羣方式也是同樣的。node
基於 Redis:5.0.5 版本,執行以下指令:web
docker pull redis:5.0.5
建立 6 個Redis 容器:redis
執行命令以下:docker
docker create --name redis-node1 --net host -v /data/redis-data/node1:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-1.conf --port 6379
docker create --name redis-node2 --net host -v /data/redis-data/node2:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-2.conf --port 6380
docker create --name redis-node3 --net host -v /data/redis-data/node3:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-3.conf --port 6381
docker create --name redis-node4 --net host -v /data/redis-data/node4:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-4.conf --port 6382
docker create --name redis-node5 --net host -v /data/redis-data/node5:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-5.conf --port 6383
docker create --name redis-node6 --net host -v /data/redis-data/node6:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-6.conf --port 6384
部分參數解釋:bash
執行命令截圖:app
執行命令以下:編輯器
docker start redis-node1 redis-node2 redis-node3 redis-node4 redis-node5 redis-node6
啓動截圖以下:ui
進入任意一個 Redis 實例:spa
# 這裏以 redis-node1 實例爲例
docker exec -it redis-node1 /bin/bash
執行組件集羣的命令:
# 組建集羣,10.211.55.4爲當前物理機的ip地址
redis-cli --cluster create 10.211.55.4:6379 10.211.55.4:6380 10.211.55.4:6381 10.211.55.4:6382 10.211.55.4:6383 10.211.55.4:6384 --cluster-replicas 1
執行命令截圖以下:
建立成功後,經過 redis-cli 查看一下集羣節點信息:
root@CentOS7:/data# redis-cli
127.0.0.1:6379> cluster nodes
執行命令截圖以下:
咱們再回到建立集羣的命令上:
redis-cli --cluster create 10.211.55.4:6379~6384 --cluster-replicas 1
你們着重看這個參數 --cluster-replicas 1,參數後面的數字表示的是主從比例,好比這裏的 1 表示的是主從比例是 1:1,什麼概念呢?
也就是 1 個主節點對應幾個從節點,現有 6 個實例,因此主從分配就是 3 個 master 主節點,3 個 slave 從節點。
主節點最少3個,3個才能保證集羣的健壯性。
若是 --cluster-replicas 2 呢?
那麼主從比例就是 1:2,也就是 1 個主節點對於應 2 個從節點。
即:3(master) + 6(slave) = 9個 Redis 實例。
若是不足 9個 Redis 實例,可是參數指定爲 2 會怎麼樣?
報錯信息以下:
提示已經很清楚了,Redis集羣至少須要3個主節點。那麼從節點就須要有6個,因此最後說:至少須要9個節點。
好的,至少3個主節點的要求我不繼續剛了,可是我想4個主節點,2個從節點,這總該能夠了吧?
4個主節點知足你:
# 進入一個啓動的 reids 實例,這裏以 redis-node1 實例爲例
docker exec -it redis-node1 /bin/bash
執行組建集羣的命令:
redis-cli --cluster create 10.211.55.4:6379 10.211.55.4:6380 10.211.55.4:6381 10.211.55.4:6382 --cluster-replicas 0
指定4個沒有從節點的主節點,這樣你就有4個主節點了:
剩下的兩個從節點怎麼辦呢?手動添加。
怎麼添加?手動添加!
看到這些 master 節點的 id 了嗎,只須要把 slave 指定給他們就能夠了。
繼續執行以下命令:
redis-cli --cluster add-node 10.211.55.4:6383 10.211.55.4:6379 --cluster-slave --cluster-master-id b0c32b1dae9e7b7f7f4b74354c59bdfcaa46f30a
redis-cli --cluster add-node 10.211.55.4:6384 10.211.55.4:6379 --cluster-slave --cluster-master-id 111de8bed5772585cef5280c4b5225ecb15a582e
將兩個 Redis 實例塞給其餘主節點了:
最後咱們進入 redis-cli,經過 cluster nodes 查看一下節點信息:
看到這,你學廢了嗎?再學不廢,下期我可要錄視頻了。。。