redis-cluster研究和使用(轉)

來源:互聯網
上載者:User
redis-cluster研究和使用 部落格分類:  redis redis cluster 分布式儲存  最近研究redis-cluster,正好搭建了一個環境,遇到了很多坑,系統的總結下,等到redis3 release出來後,換掉memCache 叢集. 轉載請註明出處哈:http://hot66hot.iteye.com/admin/blogs/2050676 一:關於redis cluster 1:redis cluster的現狀

reids-cluster計劃在redis3.0中推出,可以看作者antirez的聲明:http://antirez.com/news/49 (ps:跳票了好久,今年貌似加快速度了),目前的最新版本見:https://raw.githubusercontent.com/antirez/redis/3.0/00-RELEASENOTES

作者的目標:Redis Cluster will support up to ~1000 nodes. 贊...

目前redis支援的cluster特性(已測試):

1):節點自動探索

2):slave->master 選舉,叢集容錯

3):Hot resharding:線上分區

4):叢集管理:cluster xxx

5):基於配置(nodes-port.conf)的叢集管理

6):ASK 轉向/MOVED 轉向機制. 2:redis cluster 架構 1)redis-cluster架構圖

 

架構細節:

(1)所有的redis節點彼此互聯(PING-PONG機制),內部使用二進位協議最佳化傳輸速度和頻寬.

(2)節點的fail是通過叢集中超過半數的節點檢測失效時才生效.

(3)用戶端與redis節點直連,不需要中間proxy層.用戶端不需要串連叢集所有節點,串連叢集中任何一個可用節點即可

(4)redis-cluster把所有的物理節點映射到[0-16383]slot上,cluster 負責維護node<->slot<->value 2) redis-cluster選舉:容錯

 

(1)領著選舉過程是叢集中所有master參與,如果半數以上master節點與master節點通訊超過(cluster-node-timeout),認為當前master節點掛掉.

(2):什麼時候整個叢集不可用(cluster_state:fail)? 

    a:如果叢集任意master掛掉,且當前master沒有slave.叢集進入fail狀態,也可以理解成叢集的slot映射[0-16383]不完成時進入fail狀態. ps : redis-3.0.0.rc1加入cluster-require-full-coverage參數,預設關閉,開啟叢集相容部分失敗.

    b:如果叢集超過半數以上master掛掉,無論是否有slave叢集進入fail狀態.

  ps:當叢集不可用時,所有對叢集的操作做都不可用,收到((error) CLUSTERDOWN The cluster is down)錯誤 二:redis cluster的使用 1:安裝redis cluster

1):安裝redis-cluster依賴:redis-cluster的依賴庫在使用時有相容問題,在reshard時會遇到各種錯誤,請按指定版本安裝. (1)確保系統安裝zlib,否則gem install會報(no such file to load -- zlib) Java代碼   #download:zlib-1.2.6.tar   ./configure   make   make install    (2)安裝ruby:version(1.9.2) Java代碼   # ruby1.9.2    cd /path/ruby   ./configure -prefix=/usr/local/ruby   make   make install   sudo cp ruby /usr/local/bin   (3)安裝rubygem:version(1.8.16) Java代碼   # rubygems-1.8.16.tgz   cd /path/gem   sudo ruby setup.rb   sudo cp bin/gem /usr/local/bin   (4)安裝gem-redis:version(3.0.0) Java代碼   gem install redis --version 3.0.0   #由於源的原因,可能下載失敗,就手動下載下來安裝   #download地址:http://rubygems.org/gems/redis/versions/3.0.0   gem install -l /data/soft/redis-3.0.0.gem   (5)安裝redis-cluster Java代碼   cd /path/redis   make   sudo cp /opt/redis/src/redis-server /usr/local/bin   sudo cp /opt/redis/src/redis-cli /usr/local/bin   sudo cp /opt/redis/src/redis-trib.rb /usr/local/bin  

  2:配置redis cluster 1)redis設定檔結構:


 使用包含(include)把通用配置和特殊配置分離,方便維護. 2)redis通用配置. Java代碼   #GENERAL   daemonize no   tcp-backlog 511   timeout 0   tcp-keepalive 0   loglevel notice   databases 16   dir /opt/redis/data   slave-serve-stale-data yes   #slave唯讀   slave-read-only yes   #not use default   repl-disable-tcp-nodelay yes   slave-priority 100   #開啟aof持久化   appendonly yes   #每秒一次aof寫   appendfsync everysec   #關閉在aof rewrite的時候對新的寫操作進行fsync   no-appendfsync-on-rewrite yes   auto-aof-rewrite-min-size 64mb   lua-time-limit 5000   #開啟redis叢集   cluster-enabled yes   #節點互連逾時的閥值   cluster-node-timeout 15000   cluster-migration-barrier 1   slowlog-log-slower-than 10000   slowlog-max-len 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.