首頁 > 軟體

redis複製叢集搭建的實現

2022-08-10 14:00:43

前言

redis 複製叢集是開發中一種比較常用的叢集模式,本篇演示如何在centos7上快速搭建一個redis複製叢集;

環境準備

1、基於centos7系統的伺服器(或者雲伺服器);

2、redis 安裝包;

搭建過程

由於資源限制,本篇將在一臺伺服器上搭建,通過不同的埠號進行區分;

1、上傳redis安裝包到指定目錄下(並解壓)

2、在當前目錄下,建立三個目錄

在當前目錄,分別建立 7001,7002,7003 三個檔案目錄

3、將redis解壓包下的redis.conf組態檔分別拷貝到三個目錄下

4、修改每個組態檔的預設埠號,資料儲存目錄

可以使用sed命令進行批次替換修改

sed -i -e 's/6379/7001/g' -e 's/dir .//dir /tmp/7001//g' 7001/redis.conf
sed -i -e 's/6379/7002/g' -e 's/dir .//dir /tmp/7002//g' 7002/redis.conf
sed -i -e 's/6379/7003/g' -e 's/dir .//dir /tmp/7003//g' 7003/redis.conf

 修改完畢後,我們不妨任意檢視一個組態檔,

5、修改每個範例的宣告IP

虛擬機器器本身存在多個IP,為了避免將來混亂,需要在redis.conf檔案中指定每一個範例的繫結ip資訊,格式如下:

replica-announce-ip 當前IP

仍然可以使用批次修改的方式進行編輯

sed -i '1a replica-announce-ip 當前IP' 7001/redis.conf
sed -i '1a replica-announce-ip 當前IP' 7002/redis.conf
sed -i '1a replica-announce-ip 當前IP' 7003/redis.conf

修改完畢,可以通過下面的命令確認下

以上組態檔的修改基本上就完成了

6、叢集啟動

分別啟動3個範例,啟動過程如下:

7001範例:

7002範例:

7003範例:

如果要一鍵停止,可以執行下面命令:

printf '%sn' 7001 7002 7003 | xargs -I{} -t redis-cli -p {} shutdown

7、設定3個範例之間的主從關係

上面啟動了3個範例,但是他們之間還並沒有形成主從關係,要設定主從可以使用replicaof 或者slaveof(5.0以前)命令。

有臨時和永久兩種模式:

  • 修改組態檔(永久生效),在redis.conf中新增一行設定: slaveof <masterip> <masterport>;
  • 使用redis-cli使用者端連線到redis服務,執行slaveof命令(重啟後失效): slaveof <masterip> <masterport>;

這裡為了演示看出效果,我們採用第二種方式進行說明,通過redis-cli命令連線7002,執行下面的命令:

redis-cli -p 7002

然後執行如下命令

SLAVEOF 127.0.0.1 7001

執行完成上面命令的瞬間可以看到7001和7002兩個範例控制檯的輸出資訊,看得出7002完成了對7001的連線以及資料同步 

使用同樣的方式連線7003使用者端,並執行上面的操作

連線7001使用者端,執行info命令檢視下叢集資訊,看到下面的資訊,說明叢集構建成功

8、叢集測試

在7001上面連線使用者端並設定一個key,然後在7002上面檢查

 但是如果在7002或7003上面set一個key的時候就會報錯,即從節點沒有寫許可權;

問題總結

很多同學在第一步上傳並解壓安裝包之後,也按照組態檔正確設定了,但是啟動報錯,這就犯了常識性錯誤,因為此時redis並沒有完成編譯安裝,因此需要進入到 redis的解壓包的src,目錄下,執行 : make install 命令;

到此這篇關於redis複製叢集搭建的實現的文章就介紹到這了,更多相關redis複製叢集搭建內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com