linux安裝redis集羣

安裝了一下 redis的相關集羣配置 發現問題還是挺多的。

注:本文中使用的服務器爲阿里雲centos7版本 

1.安裝redis 單機版 

//安裝redis 

yum -y install redis  啓動命令 redis-server &

2. redis集羣

    2.1. 集羣原理   

    2.1.1.   redis-cluster架構圖

    

    

架構細節:

(1)所有的redis節點彼此互聯(PING-PONG機制),內部使用二進制協議優化傳輸速度和帶寬.

(2)節點的fail是通過集羣中超過半數的節點檢測失效時才生效.

(3)客戶端與redis節點直連,不需要中間proxy.客戶端不需要連接集羣所有節點,連接集羣中任何一個可用節點即可

(4)redis-cluster把所有的物理節點映射到[0-16383]slot,cluster 負責維護node<->slot<->value

Redis 集羣中內置了 16384 個哈希槽,當需要在 Redis 集羣中放置一個 key-value 時,redis 先對 key 使用 crc16 算法算出一個結果,然後把結果對 16384 求餘數,這樣每個 key 都會對應一個編號在 0-16383 之間的哈希槽,redis 會根據節點數量大致均等的將哈希槽映射到不同的節點


2.1.2.   redis-cluster投票:容錯



3.1. ruby環境

redis集羣管理工具redis-trib.rb依賴ruby環境,首先需要安裝ruby環境:

 

安裝ruby

yum install ruby

yum install rubygems

 

安裝ruby和redis的接口程序 具體資料(鏈接:https://pan.baidu.com/s/1UthfYzctmKMkoeJephg1ZQ 密碼:kzjc)

拷貝redis-3.0.0.gem至/usr/local下(或者 /usr/local/develope/redisGem下)

執行:

gem install /usr/local/redis-3.0.0.gem(install後爲gem文件放置路徑)

redis 節點配置

同一臺服務器用不同端口表示不同的redis服務器

在/usr/local/develope/(個人習慣)下創建redis-cluster目錄,其下創建7001、7002。。7006目錄 如圖

·

將/etc目錄下 redis-cli redis-server redis.conf 分別複製到上圖所創建目錄中7001 7002.....7006

 

redis.conf 文件文件沒有可以使vim 創建一個 命令 vim redis.conf創建 

redis.conf常用配置

#端口配置
port 7001 
#啓動守護進程
appendonly yes 
#啓動集羣
cluster-enabled yes
cluster-config-file "nodes.conf"
#設置超時
cluster-node-timeout 5000
logfile "./out.log"
#指定訪問ip地址 

bind 0.0.0.0 

分別在7001.7002 ...7006 文件夾中 修改 redis.conf   修改port 爲7001 7002..7006

上述步驟完成後 進行啓動每個 redis 啓動命令 爲 ./redis-server ./redis.conf &(注意兩點1,分別在7001--7006文件夾進行啓動  2.啓動命令 一定要加上& 命令爲:./redis-server ./redis.conf &  配置後臺啓動 否則退出窗口 redis服務就停止了 )

啓動完成後可以使用 netstat -tnulp | grep redis和ps  aux | grep redis查看redis運行情況 


這樣的 就6個redis都啓動了  yeah 

實際上,Redis集羣的操作在後文你可以看到是通過Ruby腳本來完成的,因此我們需要安裝Ruby相關的RPM包,以及Redis和Ruby的接口包。我們要用到之前安裝的Ruby (同樣鏈接:https://pan.baidu.com/s/1UthfYzctmKMkoeJephg1ZQ 密碼:kzjc 這裏面可以下載到)


解壓redis-3.0.0.tar.gz目錄下的src中可以找到 


上傳到 redis-cluster目錄下 (7001---7006 文件夾都在這裏面)


redis-cluster 目錄下

執行redis-trib.rb,此腳本是ruby腳本,它依賴ruby環境。

./redis-trib.rb  create --replicas  1  127.0.0.1:7001  127.0.0.1:7002  127.0.0.1:7003  127.0.0.1:7004  127.0.0.1:7005  127.0.0.1:7006

說明:

redis集羣至少需要3個主節點,每個主節點有一個從節點總共6個節點

replicas指定爲1表示每個主節點有一個從節點

 

注意:

如果執行時報如下錯誤:

[ERR]Node XXXXXX is not empty. Either the node already knows other nodes (check withCLUSTER NODES) or contains some key in database 0

解決方法是刪除生成的配置文件nodes.conf,如果不行則說明現在創建的結點包括了舊集羣的結點信息,需要刪除redis的持久化文件後再重啓redis,比如:appendonly.aof、dump.rdb

啓動成功後的輸出 (由於已經啓動過 沒有保存相關日誌 所以借個圖用下 )

 


redis-cluster重新執行 

./redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006

輸出日誌 爲 ()


選擇yes節點配置更新後結果如下


集羣創建成功登陸任意redis結點查詢集羣中的節點情況。

客戶端以集羣方式登陸:

cluster info 查詢集羣狀態信息


完工後測試下 


大功告成  另外 redis桌面管理工具 上面網盤中已經有 

博文中參考文檔爲https://www.cnblogs.com/xuliangxing/p/7146868.html

2. 淘淘商城文檔

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