Linux系統安裝配置Redis叢集

1. 概述

為達到 Web 叢集極致高可用的目標,本文將提供 Redis 叢集的部署和配置方案。Redis 叢集的原理如下:

1)Redis 叢集結構:N 個平權主節點(master),每個主節點對應 M 個從節點(slave)。

注:因為投票機制,N 須為奇數。必須要 3 個或以上的主節點,否則在建立叢集時會失敗,並且當存活的節點數小於總節點數的一半時,整個叢集就無法提供服務了。

2)Redis 叢集投票機制:伺服器之間透過互相的 ping-pong 判斷是否節點可以連結上。如果有一半以上的節點去 ping 一個節點的時候沒有迴應,叢集就認為這個節點當機了。此時該主節點對應的從節點上升為主節點。當沒有從節點可替補時,叢集當機。

2. 操作步驟

2.1 前期準備

部署 Redis 叢集至少需要 3 台伺服器,參考 環境準備,準備 3 台 Linux 伺服器,每台伺服器上部署 2 個節點,3 台伺服器運作 6 個 Redis 實體,組成一個經典的「三主三從」的 Redis 叢集。

注1:使用者若需要搭建 Web 叢集和 Redis 叢集,其中 Web 節點和 Redis 節點可以共存在一台機器上,不需要準備單獨的機器安裝 Redis 節點。

注2:需要部署更多節點的 Redis 叢集可以基於此方案類推。

注3:主節點必須在不同的伺服器上。例如本文範例中,7001/7003/7005為主節點,分佈在三台伺服器上。7002/7004/7006為從節點,分佈在三台伺服器上。

        同一槽位的主從也要分佈在不同節點。例如本文範例中,7004是7001的從節點,7006是7003的從節點,7002是7005的從節點,均不在同一台伺服器上。

伺服器伺服器IP地址(範例)
伺服器1192.168.5.2487001、7002
伺服器2192.168.5.2217003、7004
伺服器3192.168.5.102

7005、7006

2.2 伺服器上建立兩個 Redis 節點

2.2.1 編譯環境

安裝 Redis 時需對原始碼包編譯,此步驟依賴 gcc 編譯器,如果沒有 gcc 環境,則需要自行安裝,網路連結安裝命令 yum install gcc gcc-c++

gcc -v #檢查是否有 gcc 編譯器

2.2.2 下載原始碼包

要求使用 5.0.0 以上版本 Redis,部署和啟動 Redis 叢集時無須依賴 ruby。

1)下載:redis-5.0.4.tar.gz: redis-5.0.4.tar.gz

2)官網下載:http://download.redis.io/releases/

2.2.3 安裝 Redis

mkdir /usr/redis #建立Redis目錄
cd /usr/redis #進入目錄
#將redis-5.0.4.tar.gz傳輸到該目錄下#
tar zxvf redis-5.0.4.tar.gz #解壓安裝包
cd /usr/redis/redis-5.0.4 #進入解壓目錄
make && make install #安裝命令

安裝成功後可以看到:

2.2.4 建立節點

mkdir /usr/redis/redis-cluster #建立叢集目錄redis-cluster
cd /usr/redis/redis-cluster #進入redis-cluster目錄
mkdir 7001 7002 #建立兩個redis節點的目錄

2.2.5 修改配置

下載配置檔案:redis.conf:redis.zip,手動put 命令放置到 7001 和 7002 兩個資料夾。

本文提供的配置檔案相比預設 redis.conf 已經修改內容如下:

注:redis 相關密碼本文範例設定的較簡單,使用者實際操作時請修改為更安全的密碼。

#bind 127.0.0.1 # 取消僅限本地存取的限制
daemonize yes # 設定redis預設後台運作
protected-mode no # 關閉保護模式
maxmemory 2147483648 # 最大記憶體2G
maxmemory-policy noeviction # 代表Redis記憶體達到最大限制時,Redis不會自動清理或刪除任何鍵來釋放記憶體,新的寫入請求將會被拒絕
pidfile /var/run/redis_7001.pid # pidfile檔案對應7001
port 7001 # 埠7001
requirepass admin123456 # redis登入密碼,預設admin123456
masterauth admin123456 # redis認證密碼,預設admin123456
cluster-enabled yes # 開啟叢集
cluster-config-file nodes-7001.conf # 叢集的配置,配置檔案首次啟動自動生成7001
dbfilename 7001dump.rdb   #redis dump落盤檔案
logfile "7001.log"    #redis日誌檔案
appendfilename "7001appendonly.aof"    #redis aof落盤檔案

7001 資料夾的 redis.conf 無須再修改,7002 資料夾的 redis.conf 需將配置裏的 7001 更換為 7002,操作如下:

cd /usr/redis/redis-cluster/7002/ #進入7002目錄
vi redis.conf #編輯redis.conf檔案
:%s/7001/7002/g  # 將7002的conf檔案中所有7001更換為7002,一共三處
:wq # 儲存配置

2.2.6 啟動節點

cd /usr/redis/redis-5.0.4/src/ #進入啟動目錄
./redis-server /usr/redis/redis-cluster/7001/redis.conf  # 指定7001的配置檔案,啟動該節點
./redis-server /usr/redis/redis-cluster/7002/redis.conf  # 指定7002的配置檔案,啟動該節點

在啟動7001 和 7002 節點後,redis 節點之間會用到17001 和 17002 埠供叢集選舉通訊使用(CLUSTER MEET),即使用埠的大小加上 10000(埠是XXXX,那麼通訊埠是1XXXX),若節點間伺服器有防火牆,需要對這些埠進行開放。

2.3 建立其他四個節點

建立更多節點,重複操作本文 2.2.1-2.2.6 的步驟。在伺服器 2 和伺服器 3 上分別建立 7003、7004 和 7005、7006 節點並啟動。

2.4 建立Redis叢集

節點建立完畢後,各個節點實際上是獨立的,並沒有組成一個叢集,還需要下面的操作。

注:下面第二行程式碼中,前三個節點是主節點,後三個節點是從節點。

cd /usr/redis/redis-5.0.4/src/ #進入任一節點的啟動目錄
./redis-cli --cluster create 192.168.5.248:7001 192.168.5.221:7003 192.168.5.102:7005 192.168.5.248:7002 192.168.5.221:7004 192.168.5.102:7006 --cluster-replicas 1 -a admin123456 #建立叢集的命令,命令最後的admin123456是設定的認證密碼,-replicas 1的意思是每台redis伺服器有一個備份機,執行完此命令後,該腳本會自動為這6個redis實體分配主從和槽

當程式提示: Can I set the above configuration? (type 'yes' to accept) 時,鍵入 yes 回車:

至此叢集搭建完成!

3. 維運知識

cd /usr/redis/redis-5.0.4/src/ #進入啟動目錄
./redis-server /usr/redis/redis-cluster/7001/redis.conf  #指定7001的配置檔案,啟動該節點,其他節點啟動方式同理
redis-cli -h ip  -c -p 埠 -a 密碼 #用戶端遠端連結某個節點,要輸入對應的ip、埠、密碼
192.168.1.124:7001> cluster nodes  #進入任意一個節點,查詢叢集主從分佈及健康狀態

更多維運操作,詳情見:Linux 系統 Redis 維運手冊

注:Redis 叢集官方搭建指導請參見:Redis 叢集教程

4. 注意事項

4.1 平台修改 Redis 地址失敗

問題描述

Redis 叢集搭建立功後,想在平台修改 Redis 的地址,測試並連結顯示成功,但無法修改成功。

原因分析

Redis 叢集顯示的節點 ip 和埠都是 Redis 伺服器上執行 cluster nodes 讀取出來的 ip 地址,與手動填寫的 ip 可能是不一致的(可能伺服器存在多個 ip )。

解決方案

重新部署 Redis 叢集,建立叢集命令時使用需要的 ip 進行建立。


附件列表


主题: 部署整合
已经是第一篇
已经是最后一篇
  • 有帮助
  • 没帮助
  • 只是浏览
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉

獲取幫助
線上支援
獲取專業技術支援,快速幫助您解決問題
工作日9:00-12:00,13:30-17:30在线
頁面反饋
針對當前網頁的建議、問題反饋
售前咨詢
業務咨詢
電話:0933-790886或 0989-092892
郵箱:taiwan@fanruan.com
頁面反饋
*問題分類
不能為空
問題描述
0/1000
不能為空

反馈已提交

网络繁忙