Redis Cluster 的安裝和配置(2)

來源:互聯網
上載者:User

標籤:redis cluster

51的內容長度限制,這裡繼續 redis cluster 的簡單使用和維護。

 

7,下面簡單測試一下 cluster
  
7.1 測試資料分布

 

使用 redis-cli 來測試 cluster shard,可以看到 foo->bar 被儲存到了 7002 節點上,並且自動跳轉到了 7002 上,然後 7002 上 hello-world 是儲存在 7000 上,再次重新導向到 7000 節點上了。
 

# -c 選項為進入 cluster mode$ redis-cli -c -p 7000127.0.0.1:7000> set foo bar-> Redirected to slot [12182] located at 127.0.0.1:7002OK127.0.0.1:7002> set hello world-> Redirected to slot [866] located at 127.0.0.1:7000OK127.0.0.1:7000> get foo-> Redirected to slot [12182] located at 127.0.0.1:7002"bar"127.0.0.1:7002> get hello-> Redirected to slot [866] located at 127.0.0.1:7000"world"127.0.0.1:7000>

 
7.2 reshard

 

重新分配,這裡測試reshard 1000 個 slots 到 7000 節點的情形:
 

$ ./redis-trib.rb reshard 127.0.0.1:7000... ...# 需要遷移的 slots 數目How many slots do you want to move (from 1 to 16384)? 1000# 接收這 1000 個 slots 的節點,這裡必須填寫為 NodeIDWhat is the receiving node ID? 123ed65d59ff22370f2f09546f410d31207789f6# 這裡需要設定從哪些 源節點 中選擇 slots,這裡 all 表示從所有節點中選擇Please enter all the source node IDs.  Type ‘all‘ to use all the nodes as source nodes for the hash slots.  Type ‘done‘ once you entered all the source nodes IDs.Source node #1: all# 下面列出了 Source nodes 以及 Destination node(即 7000 節點)Ready to move 1000 slots.  Source nodes:    M: 82578e8ec9747e46cbb4b8cc2484c71b9b2c91f4 127.0.0.1:7001   slots:5962-10922 (4961 slots) master   1 additional replica(s)    M: f5bdda1518cd3826100a30f5953ed82a5861ed48 127.0.0.1:7002   slots:11422-16383 (4962 slots) master   1 additional replica(s)  Destination node:    M: 123ed65d59ff22370f2f09546f410d31207789f6 127.0.0.1:7000   slots:0-5961,10923-11421 (6461 slots) master   1 additional replica(s)   # 下面為 redis-trib 列出的 reshard 的 slot 規劃:  Resharding plan:    Moving slot 11422 from f5bdda1518cd3826100a30f5953ed82a5861ed48    Moving slot 11423 from f5bdda1518cd3826100a30f5953ed82a5861ed48    Moving slot 11424 from f5bdda1518cd3826100a30f5953ed82a5861ed48# 如果接收 redis-trib 的 slot reshard plan,則錄入 yesDo you want to proceed with the proposed reshard plan (yes/no) yes# 開始執行 reshardingMoving slot 11422 from 127.0.0.1:7002 to 127.0.0.1:7000: Moving slot 11423 from 127.0.0.1:7002 to 127.0.0.1:7000: Moving slot 11424 from 127.0.0.1:7002 to 127.0.0.1:7000:# 下面我們校正一下,確認 resharding OK$ ./redis-trib.rb check 127.0.0.1:7000>>> Performing Cluster Check (using node 127.0.0.1:7000)M: 123ed65d59ff22370f2f09546f410d31207789f6 127.0.0.1:7000   slots:0-6460,10923-11922 (7461 slots) master   1 additional replica(s)

   
7.3 failover 測試(這裡沒有做一致性檢查,只是看一下是否 master-slave 做了切換)

 
  首先通過 debug segfault 命令停止了 7002 節點(從上面的作業記錄中,可以看到該節點為 master 節點)

 

  $ redis-cli -p 7002 debug segfault  Error: Server closed the connection    # 下面為 7002 節點的日誌=== REDIS BUG REPORT END. Make sure to include from START to END. ===       Please report the crash opening an issue on github:           http://github.com/antirez/redis/issues  Suspect RAM error? Use redis-server --test-memory to verify it.Segmentation fault$

  
   然後從 cluster nodes 命令輸出可以看到 7002 節點 fail,同時它的 slave 7005 節點升級為了 master 節點

 

127.0.0.1:7000> cluster nodes35e0f6fdadbf81a00a1d6d1843698613e653867b 127.0.0.1:7003 slave 123ed65d59ff22370f2f09546f410d31207789f6 0 1410838367042 7 connected61dfb1055760d5dcf6519e35435d60dc5b207940 127.0.0.1:7004 slave 82578e8ec9747e46cbb4b8cc2484c71b9b2c91f4 0 1410838368047 5 connected82578e8ec9747e46cbb4b8cc2484c71b9b2c91f4 127.0.0.1:7001 master - 0 1410838368547 2 connected 6461-10922123ed65d59ff22370f2f09546f410d31207789f6 127.0.0.1:7000 myself,master - 0 0 7 connected 0-6460 10923-11922bfc910f924d772fe03d9fe6a19aabd73d5730d26 127.0.0.1:7005 master - 0 1410838366541 8 connected 11923-16383f5bdda1518cd3826100a30f5953ed82a5861ed48 127.0.0.1:7002 master,fail - 1410838288398 1410838286795 3 disconnected127.0.0.1:7000>

 
   把 7002 節點再次啟動後,7002 節點自動成為了 7005 節點的 slave 節點

 

127.0.0.1:7000> cluster nodes35e0f6fdadbf81a00a1d6d1843698613e653867b 127.0.0.1:7003 slave 123ed65d59ff22370f2f09546f410d31207789f6 0 1410838468336 7 connected61dfb1055760d5dcf6519e35435d60dc5b207940 127.0.0.1:7004 slave 82578e8ec9747e46cbb4b8cc2484c71b9b2c91f4 0 1410838468336 5 connected82578e8ec9747e46cbb4b8cc2484c71b9b2c91f4 127.0.0.1:7001 master - 0 1410838468837 2 connected 6461-10922123ed65d59ff22370f2f09546f410d31207789f6 127.0.0.1:7000 myself,master - 0 0 7 connected 0-6460 10923-11922bfc910f924d772fe03d9fe6a19aabd73d5730d26 127.0.0.1:7005 master - 0 1410838467334 8 connected 11923-16383f5bdda1518cd3826100a30f5953ed82a5861ed48 127.0.0.1:7002 slave bfc910f924d772fe03d9fe6a19aabd73d5730d26 0 1410838469337 8 connected127.0.0.1:7000>

 
7.4 新增節點
 
  7.4.1 新增 master 節點
 
  預設是新增一個 master 節點,同樣的,這裡測試是先新增 7006/ 目錄,再編輯 redis.conf 設定檔

 
  在 7006 目錄下啟動 7006 節點 redis-server redis.conf

 
  下面通過 redis-trib 工具在當前的 cluster 中新增 7006 節點
 

  $ ./redis-trib.rb add-node 127.0.0.1:7006 127.0.0.1:7000  >>> Adding node 127.0.0.1:7006 to cluster 127.0.0.1:7000  ...  >>> Performing Cluster Check (using node 127.0.0.1:7000)  ...  Connecting to node 127.0.0.1:7006: OK  // 這裡發送 CLUSTER MEET 命令給 7006 節點,要求其加入 cluster  >>> Send CLUSTER MEET to node 127.0.0.1:7006 to make it join the cluster.  [OK] New node added correctly.

 
  此時,7006 節點已經加入 cluster,可以接收用戶端的指令,並執行 redirection
 
  7.4.2 新增 slave 節點
 
  有兩種方式來添加 slave 節點:
 
  1) 通過 --slave 選項添加 slave 節點,這裡以新增的 7007 節點作為 7005(當前已經為master節點)的 slave 節點為例
    

$ ./redis-trib.rb add-node --slave --master-id bfc910f924d772fe03d9fe6a19aabd73d5730d26 127.0.0.1:7007 127.0.0.1:7000>>> Adding node 127.0.0.1:7007 to cluster 127.0.0.1:7000Connecting to node 127.0.0.1:7000: OK... ...>>> Performing Cluster Check (using node 127.0.0.1:7000)S: 35e0f6fdadbf81a00a1d6d1843698613e653867b 127.0.0.1:7003   slots: (0 slots) slave   replicates 123ed65d59ff22370f2f09546f410d31207789f6M: bfc910f924d772fe03d9fe6a19aabd73d5730d26 127.0.0.1:7005   slots:11923-16383 (4461 slots) master   1 additional replica(s)... ...[OK] All nodes agree about slots configuration.>>> Check for open slots...>>> Check slots coverage...[OK] All 16384 slots covered.// 將 7007 加入 cluster,並配置為 7005 的 slave 節點Connecting to node 127.0.0.1:7007: OK>>> Send CLUSTER MEET to node 127.0.0.1:7007 to make it join the cluster.Waiting for the cluster to join.>>> Configure node as replica of 127.0.0.1:7005.[OK] New node added correctly.[[email protected] redis-cluster]#     127.0.0.1:7000> cluster nodes8868592d98d84b7cf5752cc0b97af4ac807d1a12 127.0.0.1:7007 slave bfc910f924d772fe03d9fe6a19aabd73d5730d26 0 1410844154906 8 connected6d1ebedad33bb31ffbaa99bad095eef4a5920857 127.0.0.1:7006 master - 0 1410844155909 0 connected35e0f6fdadbf81a00a1d6d1843698613e653867b 127.0.0.1:7003 slave 123ed65d59ff22370f2f09546f410d31207789f6 0 1410844154405 7 connected61dfb1055760d5dcf6519e35435d60dc5b207940 127.0.0.1:7004 slave 82578e8ec9747e46cbb4b8cc2484c71b9b2c91f4 0 1410844153905 5 connected82578e8ec9747e46cbb4b8cc2484c71b9b2c91f4 127.0.0.1:7001 master - 0 1410844153905 2 connected 6461-10922123ed65d59ff22370f2f09546f410d31207789f6 127.0.0.1:7000 myself,master - 0 0 7 connected 0-6460 10923-11922bfc910f924d772fe03d9fe6a19aabd73d5730d26 127.0.0.1:7005 master - 0 1410844155408 8 connected 11923-16383f5bdda1518cd3826100a30f5953ed82a5861ed48 127.0.0.1:7002 slave bfc910f924d772fe03d9fe6a19aabd73d5730d26 0 1410844154406 8 connected127.0.0.1:7000>

    
  2) 通過 cluster replicate 命令來添加 slave 節點,如下:
 

# 將 7007 節點添加為 NodeID=bfc910f924d772fe03d9fe6a19aabd73d5730d26 的 slave 節點127.0.0.1:7007> cluster replicate bfc910f924d772fe03d9fe6a19aabd73d5730d26

---------

7.4 刪除節點

  7.4.1 刪除 slave 節點
 
  對於刪除 slave 節點,可以直接使用 redis-trib 的 del-node 命令來刪除,如:
 

./redis-trib del-node 127.0.0.1:7000 <node-id>

 
  node-id 為待刪除的slave節點的 NodeID。
 
  7.4.2 刪除 master 節點
 
  也可以使用 del-node 命令來刪除 master 節點,但是必須為空白,因此需要在刪除 master 節點之前先通過 reshard 將資料移轉至其他的 master 節點上。
  當然也可以使用上面的 CLUSTER FAILOVER 命令來刪除 master 節點,並選擇一個 slave 作為新的 master 節點。

本文出自 “安靜的瘋子” 部落格,請務必保留此出處http://quietmadman.blog.51cto.com/3269500/1553238

Redis Cluster 的安裝和配置(2)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.