redis安裝集群的2種方式


redis主從只是數據的備份,當主宕機后不會自動切換從為主,需要手動切換從為主。

哨兵就可以自動切換從為主,

當主數據庫遇到異常中斷服務后,開發者可以通過手動的方式選擇一個從數據庫來升格為主數據庫,以使得系統能夠繼續提供服務。然而整個過程相對麻煩且需要人工介入,難以實現自動化。 為此,Redis 2.8中提供了哨兵工具來實現自動化的系統監控和故障恢復功能。
哨兵的作用就是監控redis主、從數據庫是否正常運行,主出現故障自動將從數據庫轉換為主數據庫。

顧名思義,哨兵的作用就是監控Redis系統的運行狀況。它的功能包括以下兩個。

    (1)監控主數據庫和從數據庫是否正常運行。 
    (2)主數據庫出現故障時自動將從數據庫轉換為主數據庫。

集群

即使使用哨兵,redis每個實例也是全量存儲,每個redis存儲的內容都是完整的數據,浪費內存且有木桶效應。為了最大化利用內存,可以采用集群,就是分布式存儲。即每台redis存儲不同的內容,
共有16384個slot。每個redis分得一些slot,hash_slot = crc16(key) mod 16384 找到對應slot,鍵是可用鍵,如果有{}則取{}內的作為可用鍵,否則整個鍵是可用鍵
集群至少需要3主3從,且每個實例使用不同的配置文件,主從不用配置,集群會自己選。

修改每個實例的配置文件:

    cluster-enabled yes  --開啟集群

    cluster-config-file nodes-6382.conf --集群配置文件名,每個實例配置的要不同,redis會根據文件名自動新建
用集群工具創建集群:

我們可以用集群工具進行集群,該工具是redis源碼包中,用ruby編寫,所以需要先安裝ruby。

1、安裝rubygems

    yum install ruby 
    yum install rubygems  
    gem install redis

 

2、把6個redis實例都起來,每個實例的集群都打開。

3、redis安裝目錄的src執行./redis-trib.rb create --replicas 1 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385

提示信息如下
輸入yes,這樣集群就建立了。

登錄任一台redis,執行 info cluster,提示cluster_enabled:1

集群過程:

首先redis-trib.rb會以客戶端的形式嘗試連接所有的節點,並發送PING命令以確定節點能夠正常服務。如果有任何節點無法連接,則創建失敗。同時發送 INFO 命令獲取每個節點的運行ID以及是否開啟了集群功能(即cluster_enabled為1)。 准備就緒后集群會向每個節點發送 CLUSTER MEET命令,格式為 CLUSTER MEET ip port,這個命令用來告訴當前節點指定ip和port上在運行的節點也是集群的一部分,從而使得6個節點最終可以歸入一個集群。

然后redis-trib.rb會分配主從數據庫節點,分配的原則是盡量保證每個主數據庫運行在不同的IP地址上,同時每個從數據庫和主數據庫均不運行在同一IP地址上,以保證系統的容災能力

3主3從,當1個主故障,大家會給對應的從投票,把從立為主,若沒有從數據庫可以恢復則redis集群就down了。

客戶端連接:

使用redis-cli -c -p 任意一個端口

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM