離線安裝
centos的鏡像地址
http://mirrors.aliyun.com/centos/7/os/x86_64/Packages/
redis 集羣中需要的安裝包
-
下載依賴包, ruby和zlib
http://www.ruby-lang.org/zh_cn/downloads/ http://zlib.net/
-
解壓文件
tar -zxvf ruby-2.6.3.tar.gz
-
編譯安裝
./configure make make install
-
查看 gem 鏡像
gem sources -l gem sources -a http://gems.ruby-china.org/
-
解壓zlib
tar -zxvd zlib-1.2.11.tar.gz ./configure --prefix=/usr/local/zlib make make install
-
進入到ruby中的 zlib目錄下
cd /opt/redis/server01/ruby-2.6.3/ext/zlib ruby ./extconf.rb make make install
-
修改gem鏡像地址安裝redis接口
gem sources -a http://gems.ruby-china.org/ 查看鏡像 gem source -l
-
安裝 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
集羣
-
創建如圖目錄。 兩臺服務器可以都這麼配置
-
將redis.conf拷貝到這三個目錄中去:(redis.conf在安裝目錄下)
cp redis.conf ../server01/ cp redis.conf ../server02/ cp redis.conf ../server03/
-
修改每個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日誌開啓,有需要就開啓,每一次寫操作都會記錄一條日誌。
-
修改完成之後啓動服務, 依次啓動每個服務
./redis-server ../../server01/redis.conf ./redis-server ../../server02/redis.conf ./redis-server ../../server03/redis.conf
-
創建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
-
測試連接
./redis-cli -h 172.25.67.32 -p 7006 查看各個節點的狀態 cluster nodes 查看本節點在集羣中的狀態 cluster info
-
停止一個節點
./redis-cli -c -h 172.25.67.32 -p 7006 shutdown
再次啓動後直接進入集羣中。
-
添加一個新的節點
在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
-
添加從節點
./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