天天看點

redis cluster配置檔案和叢集狀态詳解

叢集(cluster)  

cluster info       列印叢集的資訊

cluster nodes   列出叢集目前已知的所有節點(node),以及這些節點的相關資訊   

節點(node)  

cluster meet <ip> <port>       将ip和port所指定的節點添加到叢集當中,讓它成為叢集的一份子  

cluster forget <node_id>        從叢集中移除node_id指定的節點

cluster replicate <node_id>   将目前節點設定為node_id指定的節點的從節點

cluster saveconfig                   将節點的配置檔案儲存到硬碟裡面

cluster slaves <node_id>       列出該slave節點的master節點

cluster set-config-epoch        強制設定configEpoch 

槽(slot)  

cluster addslots <slot> [slot ...]                         将一個或多個槽(slot)指派(assign)給目前節點

cluster delslots <slot> [slot ...]                          移除一個或多個槽對目前節點的指派 

cluster flushslots                                                移除指派給目前節點的所有槽,讓目前節點變成一個沒有指派任何槽的節點 

cluster setslot <slot> node <node_id>            将槽slot指派給node_id指定的節點,如果槽已經指派給另一個節點,那麼先讓另一個節點删除該槽,然後再進行指派 

cluster setslot <slot> migrating <node_id>   将本節點的槽slot遷移到node_id指定的節點中  

cluster setslot <slot> importing <node_id>   從node_id 指定的節點中導入槽slot到本節點 

cluster setslot <slot> stable                             取消對槽slot的導入(import)或者遷移(migrate) 

鍵(key)  

cluster keyslot <key>                                       計算鍵key應該被放置在哪個槽上  

cluster countkeysinslot <slot>                         傳回槽slot目前包含的鍵值對數量 

cluster getkeysinslot <slot> <count>              傳回count個slot槽中的鍵

其它

cluster myid       傳回節點的ID

cluster slots       傳回節點負責的slot

cluster reset      重置叢集,慎用

redis cluster配置

cluster-enabled yes

如果配置yes則開啟叢集功能,此redis執行個體作為叢集的一個節點,否則,它是一個普通的單一的redis執行個體。

cluster-config-file nodes-6379.conf

雖然此配置的名字叫"叢集配置檔案",但是此配置檔案不能人工編輯,它是叢集節點自動維護的檔案,主要用于記錄叢集中有哪些節點、他們的狀态以及一些持久化參數等,友善在重新開機時恢複這些狀态。通常是在收到請求之後這個檔案就會被更新。

cluster-node-timeout 15000

這是叢集中的節點能夠失聯的最大時間,超過這個時間,該節點就會被認為故障。如果主節點超過這個時間還是不可達,則用它的從節點将啟動故障遷移,更新成主節點。注意,任何一個節點在這個時間之内如果還是沒有連上大部分的主節點,則此節點将停止接收任何請求。一般設定為15秒即可。

cluster-slave-validity-factor 10

如果設定成0,則無論從節點與主節點失聯多久,從節點都會嘗試更新成主節點。如果設定成正數,則cluster-node-timeout乘以cluster-slave-validity-factor得到的時間,是從節點與主節點失聯後,此從節點資料有效的最長時間,超過這個時間,從節點不會啟動故障遷移。假設cluster-node-timeout=5,cluster-slave-validity-factor=10,則如果從節點跟主節點失聯超過50秒,此從節點不能成為主節點。注意,如果此參數配置為非0,将可能出現由于某主節點失聯卻沒有從節點能頂上的情況,進而導緻叢集不能正常工作,在這種情況下,隻有等到原來的主節點重新回歸到叢集,叢集才恢複運作。

cluster-migration-barrier 1

主節點需要的最小從節點數,隻有達到這個數,主節點失敗時,它從節點才會進行遷移。更詳細介紹可以看本教程後面關于副本遷移到部分。

cluster-require-full-coverage yes

在部分key所在的節點不可用時,如果此參數設定為"yes"(預設值), 則整個叢集停止接受操作;如果此參數設定為”no”,則叢集依然為可達節點上的key提供讀操作。

redis cluster狀态

127.0.0.1:8001> cluster info

cluster_state:ok             

如果目前redis發現有failed的slots,預設為把自己cluster_state從ok個性為fail, 寫入指令會失敗。如果設定cluster-require-full-coverage為no,則無此限制。

cluster_slots_assigned:16384   #已配置設定的槽

cluster_slots_ok:16384              #槽的狀态是ok的數目

cluster_slots_pfail:0                    #可能失效的槽的數目

cluster_slots_fail:0                      #已經失效的槽的數目

cluster_known_nodes:6             #叢集中節點個數

cluster_size:3                              #叢集中設定的分片個數

cluster_current_epoch:15          #叢集中的currentEpoch總是一緻的,currentEpoch越高,代表節點的配置或者操作越新,叢集中最大的那個node epoch

cluster_my_epoch:12                 #目前節點的config epoch,每個主節點都不同,一直遞增, 其表示某節點最後一次變成主節點或擷取新slot所有權的邏輯時間.

cluster_stats_messages_sent:270782059

cluster_stats_messages_received:270732696

127.0.0.1:8001> cluster nodes

25e8c9379c3db621da6ff8152684dc95dbe2e163 192.168.64.102:8002 master - 0 1490696025496 15 connected 5461-10922

d777a98ff16901dffca53e509b78b65dd1394ce2 192.168.64.156:8001 slave 0b1f3dd6e53ba76b8664294af2b7f492dbf914ec 0 1490696027498 12 connected

8e082ea9fe9d4c4fcca4fbe75ba3b77512b695ef 192.168.64.108:8000 master - 0 1490696025997 14 connected 0-5460

0b1f3dd6e53ba76b8664294af2b7f492dbf914ec 192.168.64.170:8001 myself,master - 0 0 12 connected 10923-16383

eb8adb8c0c5715525997bdb3c2d5345e688d943f 192.168.64.101:8002 slave 25e8c9379c3db621da6ff8152684dc95dbe2e163 0 1490696027498 15 connected

4000155a787ddab1e7f12584dabeab48a617fc46 192.168.67.54:8000 slave 8e082ea9fe9d4c4fcca4fbe75ba3b77512b695ef 0 1490696026497 14 connected

#說明

節點ID:例如25e8c9379c3db621da6ff8152684dc95dbe2e163

ip:port:節點的ip位址和端口号,例如192.168.64.102:8002

flags:節點的角色(master,slave,myself)以及狀态(pfail,fail)

如果節點是一個從節點的話,那麼跟在flags之後的将是主節點的節點ID,例如192.168.64.156:8001主節點的ID就是0b1f3dd6e53ba76b8664294af2b7f492dbf914ec

叢集最近一次向節點發送ping指令之後,過了多長時間還沒接到回複

節點最近一次傳回pong回複的時間

節點的配置紀元(config epoch)

本節點的網絡連接配接情況

節點目前包含的槽,例如192.168.64.102:8002目前包含的槽為5461-10922

     本文轉自yzy121403725 51CTO部落格,原文連結:http://blog.51cto.com/lookingdream/1933049,如需轉載請自行聯系原作者

繼續閱讀