Redis集群搭建-多服務器


條件

  l 基於redis5.0.*版本進行集群的搭建

  l 集群要求至少六個節點,即每個主節點配置1個從節點,本集群是使用了3個主節點並每個下面掛一個從節點,三個主節點分布在3台服務器上

  l 集群配置信息如下:

 

服務器

Master

Slave

172.16.114.52

7001

7002

172.16.239.95

7003

7004

172.16.239.89

7005

7006

 

 

集群配置

  在第一台服務器(172.16.114.52)上操作

1. 下載redis源碼包並解壓

  

wget  -c  http://download.redis.io/releases/redis-5.0.7.tar.gz

tar  -zxvf  redis-5.0.7.tar.gz

 

  

2. 新建集群配置目錄

mkdir  -p  /usr/local/redis-cluster/7001   /usr/local/redis-cluster/7002

 

 

3. 將解壓后的文件中的redis.conf配置文件拷貝到集群目錄之下 並執行redis安裝命令

cd  redis-5.0.7

cp redis.conf  /usr/local/redis-cluster

make  install  PREFIX=/usr/local/redis2  # 注意 這里PREFIX一定是大寫

 

  4. 進入/usr/local/redis2,復制bin文件到7001,7002目錄下

cd  /usr/local/redis2

cp  -r  bin  /usr/local/redis-cluster/7001

cp  -r  bin  /usr/local/redis-cluster/7002

 

 

  5.  進入redis-cluster目錄,修改redis.conf並分別拷貝到7001,7002

     修改配置文件內容如下:

   1) 屏蔽限制本地訪問, bind 127.0.0.1 修改為 bind  0.0.0.0

 

 

 

  2) protected-mode保護模式從yes改為no

 

 

 

 

  3) daemonize后的no改為yes

 

 

 

 

  4) 去掉cluster-enabled yes 前面的注釋

 

 

 

 

  5) 去掉cluster-node-timeout 前面的注釋

 

 

 

 

  6) port后的端口改為7001, redis.conf文件,復制到對應的目錄下.

 

 

 

cp  redis.conf  7001

 

 

  7)  再次編輯redis.conf  port參數修改 7001 ==> 7002,復制到對應目錄下.

sed  -i  's/7001/7002/g'  redis.conf

cp  redis.conf  7002

  8)修改pidfile參數

pidfile /var/run/redis_7001.pid

 

  9)修改node

cluster-config-file nodes-7001.conf

# 修改為對應的節點ID

 

 

    6. 啟動redis服務

/usr/local/redis-cluster/7001/bin/redis-server /usr/local/redis-cluster/7001/redis.conf

 /usr/local/redis-cluster/7002/bin/redis-server /usr/local/redis-cluster/7002/redis.conf

注意點: 在啟動服務之前要修改配置文件中對應的dump dir目錄,否則默認目錄是  ./  需要改成對應的絕對路徑,否則會造成路徑沖突,導致啟動失敗 

 

 

查看啟動的服務:

 

 

  7.  在另外兩台機器上重復以上的操作,需要注意的是,需要設置對應的端口與目錄

效果:

第一台(172.16.114.52)

 

 

 

第二台(172.16.239.95):

 

 

 

 

第三台(172.16.239.89):

 

 

 

 

 

集群搭建

使用Redis客戶端執行命令:

/usr/local/redis-cluster/7001/bin/redis-cli --cluster create --cluster-replicas 1 172.16.114.52:7001 172.16.114.52:7002 172.16.239.95:7003 172.16.239.95:7004 172.16.239.89:7005 172.16.239.89:7006

 

 

參數說明:

--cluster  集群管理命令 后面可以執行集群相關的命令

--cluster-replicas 1 代表每個Master攜帶一個Slave

create  創建集群命令

 

 

 

 

 

 至此已經配置成功

 

 

客戶端測試

  開啟客戶端 鏈接任意一個Master節點

/usr/local/redis2/bin/redis-cli -h 172.16.114.52 -c -a 密碼 -p 端口

 

 

參數:

-c: 連接到集群

 

 

我們可以看到,當我們set一個鍵值對的時候,Redis會自動為我們的key計算CRC16值,然后對16384取模,獲取key對應的hash slot,然后通過判斷該槽被那個Master所占用,幫我們重定向到那個Master節點,將鍵值對存入。

 

  查看集群信息:

cluster  nodes

 

 

常見問題:

  

  1. 出現節點的狀態為handshake並且無法使用cluster  forget 刪除掉該節點,節點的唯一ID一直發生變化

解決這是因為集群所有的節點都持有該節點的信息,不停的再發起重新連接操作,需要在所有節點上(包括從節點)執行 cluster  forget  xxx操作才能徹底移除掉無效節點

  1. 集群中出現無用節點

例如:76e6fb6341fd43aaa1be5b2f8bb68a8c8a0572ae :0@0 slave,fail,noaddr - 1585662914903 1585662914903 6 disconnected

可以將其移除  cluster  forget  76e6fb6341fd43aaa1be5b2f8bb68a8c8a0572ae 

 


免責聲明!

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



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