Linux下Redis集羣的搭建

1.1        集羣介紹

爲了保證在部分節點故障時集羣依然能正常工作,集羣使用主從模型,爲每一個主節點創建一個或多個從節點,來提高redis集羣的高可用性。

本次配置的redis集羣由6個節點(3個主節點,3個從節點)組成,準備三臺服務器,假設ip地址分別爲192.168.1.200、192.168.1.201、192.168.1.202,在每臺服務器上分別部署兩個節點,其中一個master和一個slave。節點及其客戶端端口分配如下:

192.168.1.200 7000    192.168.1.200 7001

192.168.1.201 7000    192.168.1.201 7001

192.168.1.202 7000    192.168.1.202 7001

1.2        集羣安裝

1.2.1安裝Redis

將redis.tar.gz安裝包上傳至3臺服務器的任一目錄,例如上傳至/home/redis/目錄(可自選)下,執行tar -zxvf redis.tar.gz進行解壓。

解壓完成後進入redis目錄,執行make命令編譯源碼,編譯完成後在src目錄下會增加redis-serverredis-benchmarkredis-cli等文件。

1.2.2安裝Ruby環境

下載ruby安裝包,利用tar命令解壓之後,進入ruby目錄,執行如下命令配置並編譯源代碼:

 ./configure
 make&&make install

除了源碼安裝方式外,根據操作系統的不同,可以直接用軟件包管理工具進行安裝,以Centos系統爲例,執行sudo yum install ruby命令安裝ruby。

安裝完成之後執行如下命令安裝redis gem以及redis接口:

 yum install rubygems

 gem install redis

1.2.3創建集羣所需目錄及文件

  • 在200、201、202服務器的/home/redis/目錄下執行如下命令創建集羣文件夾:

mkdir redis-cluster

cd redis-cluster

mkdir 7000

mkdir 7001

cp /home/redis/redis/src/redis-server/home/redis/redis-cluster/

cp/home/redis/redis/src/redis-trib.rb /home/redis/redis-cluster/

cp /home/redis/redis/src/redis-benchmark /home/redis/redis-cluster/

cp /home/redis/redis/src/redis-cli/home/redis/redis-cluster/

  • 將/home/redis目錄下的redis.conf配置文件分別在 /home/redis/redis-cluster/7000和/home/redis/redis-cluster/7001兩個目錄下各拷貝一份,並修改如下幾個參數:

bind 192.168.1.200

port 7000

cluster-enabled yes

cluster-config-file nodes.conf

cluster-node-timeout 5000

appendonly yes

daemonize yes

其中,7000目錄下配置文件的port設爲7000,7001目錄下配置文件的port設爲7001;bind值修改爲服務器的ip地址。

最終得到的集羣目錄結構如下圖所示:

 

1.2.4創建並啓動實例

分別在200、201、202三臺服務器上進入redis-cluster目錄,執行如下命令啓動redis實例:

./redis-server ./7000/redis.conf

./redis-server ./7001/redis.conf

1.2.5啓動集羣

選擇任一節點執行如下命令啓動redis集羣:

./redis-trib.rb create --replicas 1 192.168.1.200:7000192.168.1.201:7000 192.168.1.202:7000 192.168.1.200:7001 192.168.1.201:7001 192.168.1.202:7001

其中,--replicas 1表示爲每一個主節點創建一個從節點。

看到[OK] All 16384 slots covered字樣則表示集羣啓動成功。

需要注意的是,redis集羣中的每個節點都需要建立2個tcp連接,監聽2個端口,分別是客戶端端口和集羣總線端口,且必須確保防火牆允許打開這兩個端口。

客戶端端口用於接受客戶端指令,與客戶端交互,比如這裏的7000和7001端口;集羣總線端口,是在客戶端的端口號上加10000,即17000和17001端口,用於集羣中各節點之間的通信。

 

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