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

附一張多客戶端測試圖

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM