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

附一张多客户端测试图

猜你喜欢

转载自www.cnblogs.com/zhaocaim/p/10112989.html