【redis】——集羣搭建

        本篇博客只是自己實踐過程中的一個記錄


1   redis-cluster架構圖


 

架構細節:       

        1、上圖中每一個藍色的圈都代表着一個redis的服務器節點。它們任何兩個節點之間都是相互連通的。

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

             (2)客戶端與redis節點直連,不需要中間proxy層。客戶端可以與任何一個服務器節點相連接,然後就可以訪問 

             羣中的任何一個節點,對其進行存取和其他操作。


        2、槽的概念

           Redis Cluster中有一個16384長度的槽的概念,他們的編號爲0、1、2、3……16382、16383。這個槽是一個

           虛擬的槽,並不是真正存在的。正常工作的時候,Redis Cluster中的每個Master節點都會負責一部分的槽,當 

           有某個key被映射到某個Master負責的槽,那麼這個Master負責爲這個key提供服務,至於哪個Master節點負

           個槽,這是可以由用戶指定的,也可以在初始化的時候自動生成(redis-trib.rb腳本)。這裏值得一提的

           是,在Redis Cluster中,只有Master才擁有槽的所有權,如果是某個Master的slave,這個slave只負責槽的使

           用,是沒有所有權。



        3、集羣要保證高可用行,所以理論上就應該給集羣中的每個節點至少一個備用的redis服務。這個備用的redis稱爲從節點(slave)。


        4、心跳檢測所有的redis節點彼此互聯,通過PING-PONG機制判斷節點是否可以連接上。

           (1)如果有一半以上的節點去ping一個節點的時候沒有迴應,集羣就認爲這個節點宕機了,然後去連接它的備

    用節點。如果某個節點和所有從節點全部掛掉,我們集羣就進入faill狀態。

    (2)如果有一半以上的主節點宕機,那麼我們集羣同樣進入fail狀態。

 

2   集羣搭建


        集羣中應該至少有三個節點,每個節點有一備份節點(三主三從)。需要6臺服務器。

        自己目前在學習階段,所有在虛擬機上搭建一僞分佈式的集羣,需要6個redis實例。可以創建一個文件夾redis-cluster,其下創建redis01、redis02。。redis06目錄,存放六個實例。

 

搭建集羣的步驟:

        第一步:將redis安裝目錄bin下的文件拷貝到每個redis0X目錄內。

        第二步:修改每個實例中的redis.conf,解注Cluster-enable yes前面的註釋,修改端口號。

                       以上兩步過程類似單機版安裝,安裝好一個後其他5個可通過拷貝完成,注意要修改端口號。

        第三步:需要一個ruby腳本。將redis源碼目錄src下的redis-trib.rb拷貝到redis-cluster目錄下。

        第四步:執行ruby腳本之前,需要安裝ruby環境。

                1、yum installruby

                2、yum installrubygems

                3、安裝redis-trib.rb運行依賴的ruby的包。將包redis-3.0.0.gem傳到Linux上執行# gem install redis-3.0.0.gem

        第五步:啓動所有的redis實例,啓動完畢沒有形成集羣,需要用redis-trb.rb管理腳本建立起集羣

                分別進入redis01、redis02。。redis06目錄,執行:./redis-server ./redis.conf

               或編寫腳本:vim start-all.sh如下圖;並賦予它管理員權限執行:chmod +xstart-all.sh

 

        第七步:使用redis-trib.rb創建集羣,redis-trib默認用前3個實例作爲Master,後3個作爲Slave

./redis-trib.rb create --replicas 1 192.168.169.30:7001 192.168.169.30:7002 192.168.169.30:7003 192.168.169.30:7004 192.168.169.30:7005 192.168.169.30:7006

 

使用客戶端連接集羣(連接集羣中的任意一個節點即可): redis01/redis-cli -p 7001-c 其中-c表示以集羣方式連接redis


掃盲

Ruby腳本——redis-trib.rb

        Redis作者應該是個Ruby愛好者,Ruby客戶端就是他開發的。這次集羣的管理功能沒有嵌入到Redis代碼中,於是作者又順手寫了個叫做redis-trib的管理腳本。redis-trib依賴Ruby和RubyGems,以及redis擴展。可以先用which命令查看是否已安裝ruby和rubygems,用gem list –local查看本地是否已安裝redis擴展。


小結


       redis單機版和集羣版搭建好後我們就可以在java程序中進行使用了,redis在java應用程序中的使用需要redis。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章