Linux 系統安裝配置 Redis 集羣
https://help.finereport.com/doc-view-2870.html
- 文檔創建者:DoraZhang
- 編輯次數:28次
- 最近更新:Wendy123456 於 2020-06-18
0. 前言
基礎方案中已經提供了 Linux 系統安裝配置單機 Redis 的方案,此方案部署和運維較爲簡單,且能實現集羣的基礎可用。爲了達到 web 集羣極致高可用的目標,本文將提供 Redis 集羣的部署和配置方案。本文將以兩臺服務器爲例,介紹部署一個包含3個主節點、3個從節點的 Redis 集羣的方法,需要部署更多節點的 Redis 集羣可以基於此方案類推。
學習視頻:【linux系統安裝配置redis集羣】
redis有三種集羣方式:主從複製,哨兵模式和Redis-Cluster集羣,推薦使用Redis-Cluster集羣(即主從模式),暫時不支持主從複製,哨兵模式。
1. Redis 集羣原理
1)Redis 集羣結構是:N個平權主節點(master),每個主節點對應M個從節點(slave)。
2)Redis 集羣投票機制:服務器之間通過互相的 ping-pong 判斷是否節點可以連接上。如果有一半以上的節點去 ping 一個節點的時候沒有迴應,集羣就認爲這個節點宕機了。此時該主節點對應的從節點上升爲主節點。當沒有從節點可替補時,集羣宕機。
因爲投票機制,N須爲奇數。必須要3個或以上的主節點,否則在創建集羣時會失敗,並且當存活的節點數小於總節點數的一半時,整個集羣就無法提供服務了。
部署redis集羣至少需要3臺服務器,參考 環境準備,準備3臺 Linux 服務器,每臺服務器上部署2個節點,3臺服務器運行6個 Redis 實例,組成一個經典的“三主三從”的 Redis 集羣。
端口 | |
---|---|
服務器1 | 7001、7002 |
服務器2 | 7003、7004 |
服務器3 |
7005、7006 |
3. 服務器上創建兩個 Redis 節點
3.1 編譯環境
安裝 Redis 時需對源碼包編譯,此步驟依賴 gcc 編譯器,如果沒有 gcc 環境,則需要自行安裝,聯網安裝命令 yum install gcc gcc-c++
gcc -v #檢查是否有 gcc 編譯器
3.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/
3.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 #安裝命令
安裝成功後可以看到:
3.4 創建節點
mkdir /usr/redis/redis-cluster #創建集羣目錄redis-cluster
cd /usr/redis/redis-cluster #進入redis-cluster目錄
mkdir 7001 7002 #創建兩個redis節點的目錄
3.5 修改配置
下載配置文件:redis.conf:redis.conf,手動放入放置到 7001 和 7002 兩個文件夾。
本文提供的配置文件相比默認的 redis.conf 已經修改內容如下:
#bind 127.0.0.1 # 取消僅限本地訪問的限制
daemonize yes # 設置redis默認後臺運行
protected-mode no # 關閉保護模式
maxmemory 2147483648 # 最大內存2G
maxmemory-policy volatile-lru # 過期清理策略
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
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 # 保存配置
3.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),若節點間服務器有防火牆,需要對這些端口進行開放。
4. 創建其他四個節點
創建更多節點,重複操作 3.1-3.6 的步驟。創建 7003、7004 和 7005、7006 節點並啓動。
5. 創建Redis集羣
節點創建完畢後,各個節點實際上是獨立的,並沒有組成一個集羣,還需要下面的操作。
cd /usr/redis/redis-5.0.4/src/ #進入任一節點的啓動目錄
./redis-cli --cluster create 192.168.61.250:7001 192.168.61.250:7002 192.168.61.250:7003 192.168.61.250:7004 192.168.61.250:7005 192.168.61.250:7006 --cluster-replicas 1 -a admin123456 #創建集羣的命令,命令最後的admin123456是設置的認證密碼,-replicas 1的
意思是每臺redis服務器有一個備份機,執行完此命令後,該腳本會自動爲這6個redis實例分配主從和槽。
當程序提示: Can I set the above configuration? (type 'yes' to accept) 時,鍵入 yes 回車:
至此集羣搭建完成!
6. 運維知識
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 集羣搭建官方指導—https://redis.io/topics/cluster-tutorial