redis-cluster 配置
最近在複習redis的叢集配置, 因為之前用的都是redis主從複製然後加3 個sentinel節點,沒用過redis-cluster, 今天心血來潮 搞一下。
話不多說開始
1、 當然是安裝redis,這個網上教程一堆,請自行查閱
2、最重要的配置檔案 redis.conf。
預設redis-cluster至少3個節點(加上主從,總共6個節點),所以直接複製3 份 重新命名,7000.conf, 7001.conf, 7002.conf
因置的是叢集,所以修改下里面的引數
2.1、修改conf檔案中埠為7000,7001,7002
2.2、
修改redis.conf檔案的cluster-config-file引數為
nodes-7000.conf
nodes-7001.conf
nodes-7002.conf
開啟叢集相關引數
daemonize yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
3、分別 啟動3個例項, redis-server 7000.conf , redis-server 7001.conf , redis-server 7002.conf
4、 通過客戶端登入檢視啟動情況
redis-cli -p 7000(本機可以這樣操作) , 如果是不同機器,redis-cli -h ip -p 7000
到目前3各服務端已經啟動成功,但並沒有自動構建叢集,因為三者還處於“我不認識你,你不屬於我”的狀態,它們每個都是孤零零的Redis節點,或者是隻包含了一個節點的叢集 ,通過cluster meet 命令來完成叢集的構建
5、
127.0.0.1:7000> cluster meet 127.0.0.1 7001
OK
127.0.0.1:7000> cluster meet 127.0.0.1 7002
OK
這一步的 意思是讓7000這個埠去相遇其他節點,這樣就構成了一個叢集
6、輸入命令cluster nodes
結果如下:
XXXXXXXXXXXXXXXXXXXXXXXXX(節點的名字) 127.0.0.1:7000 myself,master - 0 0 0 connected
YYYYYYYYYYYYYYYYYYYYYYYYY 127.0.0.1:7001 master - 0 1469926275334 1 connected
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ 127.0.0.1:7002 master - 0 1469926276376 2 connected
通過cluster nodes 檢視叢集構建成功,是否叢集搭建工作就完成了呢?非也,我們通過cluster info命令來檢視叢集的狀態
7、輸入cluster nodes
主要看這個引數 cluster_state:fail
為啥是個fail? 因為還沒有分配槽
8、槽的分配
8.1、命令 cluster addslots,這個命令比較操蛋,我網上搜了一大圈,好像只有一個個節點新增,或者1 2 3 這樣寫明的批量新增
8.2、另外一種方法 就是修改配置 檔案。我們之前在配置 檔案中 指定了nodes-7000.conf這個檔案, 回到redis目錄下,會發現 這個檔案自動 生成了, 然後手動去修改 裡面帶有myself的那行,表示自己,然後最後加上分配的槽
XXXXXXXXXXXXXXXXXXXXXX 127.0.0.1:7000 myself,master - 0 0 0 connected 0-5000
YYYYYYYYYYYYYYYYYYYYYY 127.0.0.1:7001 master - 0 1469925269256 1 connected 5001-10000
ZZZZZZZZZZZZZZZZZZZZZZZZ 127.0.0.1:7002 master - 0 1469925270085 2 connected 10001-16383
之後重啟 一下就OK了