centos6.5下redis集群配置(多機多節點)


可參考官網文檔:redis集群配置

需要注意的是,集群中的每個節點都會涉及到兩個端口,一個是用於處理客戶端操作的(如下介紹到的6379/6380),另一個是10000+{監聽端口},用於集群各個節點間通信。

第一步 :環境准備

  此處我准備了三台服務器(也可安裝三台虛擬機),其內網IP分別為:192.168.103.54  192.168.103.56  192.168.103.57,我們約定把192.168.103.54作為集群控制端。

 

第二步:安裝redis

  可參考redis安裝與配置

 

第三步:修改配置、創建節點(此處我每台機器運行兩個redis節點)

  次處我的redis安裝目錄為:/usr/data/redis-4.0.8


  1、跳轉到redis安裝目錄

cd /usr/data/redis-4.0.8

   2、創建一個新目錄:cluster  (該目錄名稱、位置任意,此處我是建在了redis安裝目錄下)

mkdir cluster

  3、在cluster目錄下,創建兩個目錄,分別是6379  6380(用於存儲redis配置文件)

  備注:此處新建的目錄名必須與redis節點對應的端口號對應

cd cluster
mkdir 6379 6380

  4、添加redis節點對應的配置文件,此處我直接拷貝redis安裝目錄下的配置文件redis.conf再加以修改

cp redis.conf cluster/6379
cp redis.conf cluster/6380

  5、修改redis配置文件(目錄6379、6380下的redis.conf),主要修改如下配置,

#綁定局域網ip,使得三台服務器可相互訪問
bind 192.168.103.54
protected-mode yes
#redis節點監聽端口
port 6380
#以守護進程啟動
daemonize yes
pidfile /var/run/redis_6380.pid
dbfilename dump_6380.rdb
#如下為集群配置
cluster-enabled yes  #啟用集群
cluster-config-file nodes-6380.conf  #集群配置文件,由redis自動更新,不需要手動配置
cluster-node-timeout 5000  #集群節點超時時間,即集群中主從節點斷開連接時間閾值,超過該值則認為主節點不可以,從節點將有可能轉為master
cluster-slave-validity-factor 10 #在進行故障轉移的時候全部slave都會請求申請為master,但是有些slave可能與master斷開連接一段時間了導致數據過於陳舊,不應該被提升為master。該參數就是用來判斷slave節點與master斷線的時間是否過長
(計算方法為:cluster-node-timeout * cluster-slave-validity-factor,此處為:5000 * 10 毫秒
#cluster-migration-barrier 1
cluster-require-full-coverage yes #集群中的所有slot(16384個)全部覆蓋
,才能提供服務

 

第四步:啟動三台機器上的6個節點

cd /usr/data/redis-4.0.8/src
./redis-server ../cluster/6379/redis.conf 
./redis-server ../cluster/6380/redis.conf 

 

第五步:創建集群

  因為此處我是以192.168.103.54作為集群控制端,所有一下操作都在改機器上完成

gem install redis
./redis-trib.rb create --replicas 1 192.168.103.54:6379 192.168.103.54:6380 192.168.103.56:6379 192.168.103.56:6380 192.168.103.57:6379 192.168.103.57:6380

備注:執行gem install redis前,需先安裝ruby環境,如下通過yum安裝ruby:

yum -y install ruby rubygems

安裝完后再次執行gem還是會報錯:“redis requires Ruby version >= 2.2.2

解決辦法為重裝高版本的ruby,此處我這里是以修改ruby  yum源的方式重裝ruby

yum install centos-release-scl-rh    //會在/etc/yum.repos.d/目錄下多出一個CentOS-SCLo-scl-rh.repo源
yum install rh-ruby23  -y    //直接yum安裝即可  
scl  enable  rh-ruby23 bash    //必要一步
ruby -v    //查看安裝版本

再次執行:gem install redis  成功

 

第六步:查看集群狀態

可連接集群中的任一節點,此處連接了集群中的節點192.168.103.54:6379

 

第七步:總結

  redis集群實際上是通過hash slots 的方式實現負載均衡(總共16384個slot),采用了非一致hash,使得集群節點可動態增加或減少,通過key計算slot,然后將值存儲到對應的slot關聯的機器上。

 

擴展:

  添加一個新的master

Adding a new node is basically the process of adding an empty node and then moving some data into it, in case it is a new master, or telling it to setup as a replica of a known node, in case it is a slave.
./redis-trib.rb add-node 192.168.103.58:6379 192.168.103.54:6379

  當添加新的master后,需要從新分片redis,不然新的master由於沒有slot,所以不能提供服務

./redis-trib.rb reshard 192.168.103.54:6379

 

  添加一個新的slave

./redis-trib.rb add-node --slave 192.168.103.58:6380 192.168.103.54:6379

  移除集群中的一個節點

./redis-trib del-node 192.168.103.54:6379 `<node-id>`

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM