在實際的生產過程當中,單服的redis存在單點的問題,redis一般須要集羣的環境。相比單服的redis,集羣有如下些好處:node
1.容錯性redis
解決在單服redis的單點問題。在一個或多個節點出現宕機的狀況下,集羣內部經過投票的機制可以快速的進行選舉和不停機的狀況下進行服務持續提供。算法
2.擴展性緩存
相比單服在升級性能過程當中,集羣也可以很好的實現緩存的性能升級【多節點的熱部署】。ruby
3.性能提高服務器
性能的提高其實在擴展過程當中,就可以隨之的體現出來。工具
全部的redis節點彼此互聯(PING-PONG機制),內部使用二進制協議優化傳輸速度和帶寬.性能
節點的fail是經過集羣中超過半數的節點檢測失效時才生效.優化
客戶端與redis節點直連,不須要中間proxy層.客戶端不須要鏈接集羣全部節點,鏈接集羣中任何一個可用節點便可ui
redis集羣管理工具redis-trib.rb依賴ruby環境,首先須要安裝ruby環境:
安裝ruby
yum install ruby(安裝ruby環境) yum install rubygems(安裝包管理器)
安裝ruby和redis的接口程序
拷貝redis-3.0.0.gem至/usr/local下
執行:
gem install /usr/local/redis-3.0.0.gem gem install redis --version 3.0.5(在線安裝)
2.2.1配置節點
在同一臺服務器用不一樣的端口表示不一樣的redis服務器,以下:
主節點:192.168.101.3:7001 192.168.101.3:7002 192.168.101.3:7003
從節點:192.168.101.3:7004 192.168.101.3:7005 192.168.101.3:7006
在/usr/local下建立redis-cluster目錄,其下建立700一、7002。。7006目錄,以下:
將redis安裝目錄bin下的文件拷貝到每一個700X目錄內,同時將redis源碼目錄src下的redis-trib.rb拷貝到redis-cluster目錄下。
修改每一個700X目錄下的redis.conf配置文件:
port cluster-enabled yes
日誌文件的一個進程的文件位置(爲了使進程文件不共用一個)
pidfile /var/run/redis-7001.pid
分別進入700一、700二、…7006目錄,執行:
./redis-server ./redis.conf
在啓動每一個節點以後,每一個節點都是獨立的服務。節點之間並無相互造成集羣這樣一個緩存環境,須要將這些節點鏈接到一塊兒。
./redis-trib.rb create --replicas 1 192.168.101.3:7001 192.168.101.3:7002 192.168.101.3:7003 192.168.101.3:7004 192.168.101.3:7005 192.168.101.3:7006
須要注意的是,每一個集羣至少須要6個節點,三主三從。箇中參數:replicas 1 含義就是每一個主節點須要一個從節點。
在執行這個命令以後,每一個node文件夾內會出現node.conf文件。在node.conf中會寫入節點和主節點之間的配置信息。表名主、從關係。以下
進入到任意一個節點的bin文件夾內,執行命令
./redis-cli -c -h 192.168.101.3 -p 7000 //以端口7000鏈接redis客戶端
cluster nodes //查詢集羣信息
此處一樣能看到node.conf內的配置信息。
cluster info //查詢集羣狀態信息
//添加主節點 ./redis-trib.rb add-node 192.168.101.3:7007 192.168.101.3:7001 //添加從節點 ./redis-trib.rb add-node --slave --master-id 主節點id 添加節點的ip和端口 集羣中已存在節點ip和端口 這個相對繁瑣點,須要查看一下master節點的id,這個經過直接node.conf或者clouster nodes 命令均可以看到。 例如: ./redis-trib.rb add-node --slave --master-id cad9f7413ec6842c971dbcc2c48b4ca959eb5db4【主節點】 192.168.101.3:7008 192.168.101.3:7001 //刪除節點 ./redis-trib.rb del-node 127.0.0.1:7005 4b45eb75c8b428fbd77ab979b85080146a9bc017 ps:這時候須要首先將該節點的存在的數據,也就是槽點進行刪除纔可以進行移除節點操做
2.分配槽
槽:redis 內置有2的14次方個槽點,進行存儲時根據設置的key進行算法加密後的結果進行取餘,獲得的值則爲槽的編號,槽在那個節點就存儲在哪一個節點。
在新添加的主從節點,須要向主節點分配必定的槽。
//分配槽點 ./redis-trib.rb reshard 192.168.101.3:7001
根據提示輸入想分配的槽點的個數便可,接下來會提示是根據全部的槽做爲源點進行分配仍是從特色的node進行槽的從新分配。