redis分佈式集羣搭建(詳細)

首先,先說下redis單機版的搭建過程

1.下載redis的安裝包,然後解壓,我這裏下載的是 redis-5.0.7.tar.gz;

2.進入到解壓縮後的redis文件目錄(此時可以看到Makefile文件),用編譯安裝redis源文件;

  make PREFIX=/usr/local/redis install   此時,編譯完成。

3.然後目錄下回出現一個bin文件夾,

4.進入/opt/redis/bin目錄,直接./redis-server啓動redis(此時爲前端啓動redis);
5.將redis啓動方式改爲後端啓動,具體做法:把解壓縮的redis文件下的redis.conf文件複製到/opt/redis/bin目錄下,然後修改該redis.conf文件->daemonize:no 改爲daemonize:yes;
5.在目錄下通過./redis-server redis.conf 啓動redis(此時爲後臺啓動)。
  綜上redis單機版安裝啓動完成。


進入正題,搭建redis集羣

一、Redis Cluster(Redis集羣)簡介

1.1  redis是一個開源的key value存儲系統,受到了廣大互聯網公司的青睞。redis3.0版本之前只支持單例模式,在3.0版本及以後才支持集羣;
1.2  redis集羣採用P2P模式,是完全去中心化的,不存在中心節點或者代理節點;
1.3  redis集羣是沒有統一的入口的,客戶端(client)連接集羣的時候連接集羣中的任意節點(node)即可,集羣內部的節點是相互通信的(PING-PONG機制),每個節點都是一個redis實例;
1.4  爲了實現集羣的高可用,即判斷節點是否健康(能否正常使用),redis-cluster有這麼一個投票容錯機制:如果集羣中超過半數的節點投票認爲某個節點掛了,那麼這個節點就掛了(fail)。這是判斷節點是否掛了的方法;
1.5  那麼如何判斷集羣是否掛了呢? -> 如果集羣中任意一個節點掛了,而且該節點沒有從節點(備份節點),那麼這個集羣就掛了。這是判斷集羣是否掛了的方法;
1.6  那麼爲什麼任意一個節點掛了(沒有從節點)這個集羣就掛了呢? -> 因爲集羣內置了16384個slot(哈希槽),並且把所有的物理節點映射到了這16384[0-16383]個slot上,或者說把這些slot均等的分配給了各個節點。當需要在Redis集羣存放一個數據(key-value)時,redis會先對這個key進行crc16算法,然後得到一個結果。再把這個結果對16384進行求餘,這個餘數會對應[0-16383]其中一個槽,進而決定key-value存儲到哪個節點中。所以一旦某個節點掛了,該節點對應的slot就無法使用,那麼就會導致集羣無法正常工作。
1.7  綜上所述,每個Redis集羣理論上最多可以有16384個節點。

二、集羣搭建需要的環境

2.1 Redis集羣至少需要3個節點,因爲投票容錯機制要求超過半數節點認爲某個節點掛了該節點纔是掛了,所以2個節點無法構成集羣。
2.2 要保證集羣的高可用,需要每個節點都有從節點,也就是備份節點,所以Redis集羣至少需要6臺服務器。因爲我沒有那麼多服務器,也啓動不了那麼多虛擬機,所在這裏搭建的是僞分佈式集羣,即一臺服務器虛擬運行6個redis實例,修改端口號爲(9001-9006),當然實際生產環境的Redis集羣搭建和這裏是一樣的。
2.3 安裝ruby。

三、集羣搭建具體步驟如下(注意要關閉防火牆)

3.1 在/opt目錄下新建redis-cluster目錄,用於存放集羣節點;

3.2 把redis目錄下的bin目錄下的所有文件複製到/opt/redis-cluster/redis01目錄下;

3.3 修改該目錄下的redis.conf文件,具體修改三處地方:一是修改bind 自己的IP,二是端口號修改爲9001(默認是6379),三是開啓集羣創建模式,打開註釋即可。分別如下圖所示:

3.4 將redis-cluster/redis01文件複製5份到redis-cluster目錄下(redis02-redis06),創建6個redis實例,模擬Redis集羣的6個節點。然後將其餘5個文件下的redis.conf裏面的端口號分別修改爲9002-9006。分別如下圖所示:
創建redis02-06目錄

3.5 分別修改redis02-redis06的redis.conf文件的port端口號

3.6 接着啓動所有redis節點,由於一個一個啓動太麻煩了,所以在這裏創建一個批量啓動redis節點的腳本文件,命令爲start-all.sh,文件內容如下:

3.7 執行start-all.sh 啓動全部redis,並查看進程

3.8 至此6個redis節點啓動成功,接下來正式開啓搭建集羣,以上都是準備條件。

要搭建集羣的話,需要使用一個工具(腳本文件),這個工具在redis解壓文件的源代碼裏。因爲這個工具是一個ruby腳本文件,所以這個工具的運行需要ruby的運行環境,就相當於java語言的運行需要在jvm上。所以需要安裝ruby,指令如下:

3.9 下載redis-3.5.5.gem ,並安裝。

3.10 然後搭建redis集羣,中間需手動yes。如下:

redis-cli --cluster create 192.168.26.11:9001 192.168.26.11:9002 192.168.26.11:9003 192.168.26.11:9004 192.168.26.11:9005 192.168.26.11:9006 --cluster-replicas 1

    至此,Redi集羣搭建成功!大家注意最後一段文字,顯示了每個節點所分配的slots(哈希槽),這裏總共6個節點,其中3個是從節點,所以3個主節點分別映射了0-5460、5461-10922、10933-16383solts。

3.11 最後測試集羣連接節點。

最後終於搭建完成!!!有不足之處,多指教!!!!!!

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