安裝了一下 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. 淘淘商城文檔