1. 程式人生 > >Redis叢集Redis-cluster搭建及測試

Redis叢集Redis-cluster搭建及測試

一、Redis叢集部署

三臺物理機:172.20.0.17、172.20.0.18、172.20.0.19

二、安裝Redis

下載安裝redis壓縮包

解壓壓縮包,進入redis-5.0.2資料夾,執行命令./make install安裝redis

mv redis-5.0.2 /usr/local/redis/

三、修改配置檔案

node1--17伺服器:

1、建立redis_cluster/700X的目錄

mkdir -p /usr/local/redis/redis_cluster/7001

mkdir -p /usr/local/redis/redis_cluster/7002

 

2、修改Redis.conf的埠

cp redis.conf /usr/local/redis/redis_cluster/7001

修改埠為7001

cp  redis.conf /usr/local/redis/redis_cluster/7002

修改埠為7002

 

3、同時將修改後的Redis.conf複製到另外兩個節點(18、19)

4、將redis-server複製到節點目錄下,方便操作

cp  /usr/local/bin/redis-server   /usr/local/redis/redis-5.0.2/redis_cluster/7001/

5、開啟redis-cluster配置,配置做以下改造

#配置yes開啟redis-cluster
cluster-enabled yes
#配置節點之間超時時間
cluster-node-timeout 15000
#這個配置很重要,cluster開啟必須重新命名指定cluster-config-file,不能與別的節點相同,否則會啟動失敗,最好按主機+埠命名
cluster-config-file nodes-17-7001.conf

四、啟動各節點17、18、19Redis

cd  /usr/local/redis/redis-5.0.2/redis_cluster/7001

./redis-server redis.conf

cd  /usr/local/redis/redis-5.0.2/redis_cluster/7002

./redis-server redis.conf

五、建立叢集命令

cd  /usr/local/bin

./redis-cli  --cluster  create 172.20.0.17:7001 172.20.0.18:7001 172.20.0.19:7001 172.20.0.17:7002 172.20.0.18:7002 172.20.0.19:7002 --cluster-replicas 1

(replicas 1 表示我們希望為叢集中的每個主節點建立一個從節點。

如圖即建立成功

後面有嘗試做三組   一主兩從   即:

./redis-cli  --cluster  create 172.20.0.17:7001 172.20.0.18:7001 172.20.0.19:7001 172.20.0.17:7002 172.20.0.18:7002 172.20.0.19:7002 172.20.0.17:7003 172.20.0.18:7003 172.20.0.19:7003 --cluster-replicas 2

 

自動分配主從屬性:

redis-cli  -h 172.20.0.17 -p 7001 cluster nodes檢視節點情況

master的node_id有對應的一個slave對應

 

 

六、測試Redis cluster

1、嘗試給master 172.20.0.18:7001新增資料

 

可見資料儲存在19:7001埠中,則19:7001的從節點18:7002也有資料

 

七、測試故障轉移

在此測試期間,為了觸發故障轉移,我們可以做的最簡單的事情(也就是在分散式系統中可能出現的語義上最簡單的故障)是使單個程序崩潰

 

我們嘗試將master 17:7001擊潰

 

 檢視此時17:7001為master fail狀態,而他的子節點19:7002從slave競選為新的master;

重新啟動17:7001節點,它才成為了slave節點

 

八、叢集效能測試

因嘗試使用官方推薦的bench-Mark 測試時,檢視CPU佔用只在對應槽片的哪臺伺服器上,此處引用Redis & Redis Cluster benchmark Tool

前往Git下載安裝

 https://github.com/panjiang/redisbench

-a string
    	Redis instance address or Cluster addresses. IP:PORT[,IP:PORT]
  -c int
    	Clients number for concurrence (default 1)
  -cluster
    	true: cluster mode, false: instance mode
  -d int
    	Data size in bytes (default 1000)
  -ma string
    	addresses for run multiple testers at the same time
  -mo int
    	the order current tester is in multiple testers
  -n int
    	Testing times at every client (default 1)

 

Redis&Redis Cluster基準工具

  • 寫在Golang
  • 可以測試redis單例項
  • 可以測試redis叢集
  • 可以利用多核
  • 支援同時在多臺機器上執行,用於測試大型redis叢集(需要相同的機器硬體)

救命

./redisbench -h

測試單個例項

./redisbench -a 127.0.0.1:6379 -c 500 -n 2000 -d 3

測試叢集

./redisbench -cluster=true -a 192.168.10.11:7000,192.168.10.11:7001 -c 500 -n 2000 -d 3

使用多個測試節點

./redisbench -cluster=true -a 192.168.10.11:7000,192.168.10.11:7001 -c 500 -n 2000 -d 3 -ma 192.168.10.11:9001,192.168.10.11:9002 -mo 1&
./redisbench -cluster=true -a 192.168.10.11:7000,192.168.10.11:7001 -c 500 -n 2000 -d 3 -ma 192.168.10.11:9001,192.168.10.11:9002 -mo 2
./redisbench -cluster=true -a 192.168.10.11:7000,192.168.10.11:7001 -c 500 -n 2000 -d 3 -ma 192.168.10.11:9001,192.168.10.11:9002,192.168.10.11:9003 -mo 1 &
./redisbench -cluster=true -a 192.168.10.11:7000,192.168.10.11:7001 -c 500 -n 2000 -d 3 -ma 192.168.10.11:9001,192.168.10.11:9002,192.168.10.11:9003 -mo 2 &
./redisbench -cluster=true -a 192.168.10.11:7000,192.168.10.11:7001 -c 500 -n 2000 -d 3 -ma 192.168.10.11:9001,192.168.10.11:9002,192.168.10.11:9003 -mo 3

 

測試結果會自動打印出:請求值,請求時間,TPS

附一張多客戶端測試圖