redis集羣搭建遇到的坑

離線安裝

centos的鏡像地址

 http://mirrors.aliyun.com/centos/7/os/x86_64/Packages/

 

redis 集羣中需要的安裝包

  1. 下載依賴包, rubyzlib

 http://www.ruby-lang.org/zh_cn/downloads/
 ​
 http://zlib.net/   
  1. 解壓文件

 tar -zxvf ruby-2.6.3.tar.gz
  1. 編譯安裝

 ./configure
 ​
 make
 ​
 make install
  1. 查看 gem 鏡像

 gem sources -l
 gem sources -a  http://gems.ruby-china.org/  
  1. 解壓zlib

 tar -zxvd zlib-1.2.11.tar.gz
 ​
 ./configure --prefix=/usr/local/zlib
 make
 make install
  1. 進入到ruby中的 zlib目錄下

 cd /opt/redis/server01/ruby-2.6.3/ext/zlib
 ​
 ruby ./extconf.rb
 ​
 make 
 ​
 make install
  1. 修改gem鏡像地址安裝redis接口

 gem sources -a  http://gems.ruby-china.org/
 查看鏡像
 gem source -l
  1. 安裝 redis-***.gem

 gem install -l /usr/local/redis-4.1.2.gem #安裝本地的redis接口

 

redis的安裝

單機

 解壓redis壓縮包   tar -zxvf redis-4.0.14.tar.gz
 編譯             make
 安裝             make install
 啓動redis        cd redis-4.0.14/src
                 ./redis-server
 客戶端測試        ./redis-cli                 

集羣

  1. 創建如圖目錄。 兩臺服務器可以都這麼配置

  1. 將redis.conf拷貝到這三個目錄中去:(redis.conf在安裝目錄下)

 cp redis.conf ../server01/
 cp redis.conf ../server02/
 cp redis.conf ../server03/
  1. 修改每個redis.conf的配置,需要修改的內容如下:

 port 7000    //配置集羣的端口,分別是7000、7001、7002
 bind 本機的IP    //這裏的默認配置是127.0.0.1改爲內網ip。
 daemonsize yes   //允許redis在後臺運行
 pidfile  /var/run/redis_7000.pid  //改成和端口一致
 cluster-enabled  yes   // 開啓集羣 把註釋去掉
 cluster-config-file node_7000.conf  //集羣的配置,和端口一致
 cluster-node-timeout  15000  // 請求超時,默認爲15秒
 appendonly  yes // aof日誌開啓,有需要就開啓,每一次寫操作都會記錄一條日誌。
  1. 修改完成之後啓動服務, 依次啓動每個服務

 ./redis-server ../../server01/redis.conf
 ./redis-server ../../server02/redis.conf
 ./redis-server ../../server03/redis.conf
  1. 創建redis集羣

 cd redis-4.0.14/src/
 ​
 ./redis-trib.rb create --replicas 1 172.25.67.52:7001 172.25.67.52:7002 172.25.67.52:7003 172.25.67.32:7004 172.25.67.32:7005 172.25.67.32:7006
  1. 測試連接

 ./redis-cli -h 172.25.67.32 -p 7006
 查看各個節點的狀態    cluster nodes
 查看本節點在集羣中的狀態 cluster info

 

  1. 停止一個節點

 ./redis-cli -c -h 172.25.67.32 -p 7006 shutdown

再次啓動後直接進入集羣中。

 

  1. 添加一個新的節點

 在server4中複製一個redis.conf     ./redis-server ../../server04/redis.conf

然後連接進集羣,如果該節點之前不在集羣中,連接集羣輸入cluster meet 命令就可以指定某個節點加入集羣。

 ./redis-trib.rb add-node 172.25.67.32:7007 172.25.67.32:7006
 ​
 1)add-node就是添加節點, 默認是添加主節點
 3)172.25.67.32:7007是需要添加節點
 4)172.25.67.32:7006:參數節點,把節點添加到7006所在集羣。

給新加的主節點分配 Hash槽

 ./redis-trib.rb reshard 172.25.67.52:7001
  1. 添加從節點

 ./redis-trib.rb add-node --slave --master-id d53b66fdce3cf65fab87f6dbbfb4703f702d4931  172.25.67.32:7008 172.25.67.52:7001
 ​
 1)  add-node:添加節點
 2)  --slave:添加從節點
 3)  --master-Id xx :表示給此主節點添加從節點。
 4) 172.25.67.32:7008:需要添加從節點
 5) 172.25.67.52:7001:表示需要添加到7001所在集羣。

 

 

 

報錯說明

[ERR] Node 172.25.67.52:7002 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.

解決:

登錄每一個redis

 用redis-cli 登錄到每個節點執行  flushall  和 cluster reset  就可以了。

 

 

 

命令

 redis-trib.rb   Redis Cluster的管理工具

 

知識點

redis 中總共有 16384 的槽節點 (0-16383)。

 

參考

 https://www.cnblogs.com/hello-daocaoren/p/8431902.html
 ​
 https://www.cnblogs.com/qlqwjy/p/8858520.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章