redi集群测试

原文:http://blog.sina.com.cn/s/blog_53b45c4d0102wg10.html

1、测试存取值

客户端连接集群redis-cli需要带上 -c ,redis-cli -c -p 端口号

  1. [[email protected] redis01]# ./redis-cli -c -p 7001
  2. 127.0.0.1:7001> set name andy
  3. -> Redirected to slot [5798] located at 127.0.0.1:7002
  4. OK
  5. 127.0.0.1:7002> get name
  6. "andy"
  7. 127.0.0.1:7002>

根据redis-cluster的key值分配,name应该分配到节点7002[5461-10922]上,上面显示redis cluster自动从7001跳转到了7002节点。

我们可以测试一下7006从节点获取name值

[plain] view plain copy  

  1. [[email protected] redis06]# ./redis-cli -c -p 7006
  2. 127.0.0.1:7006> get name
  3. -> Redirected to slot [5798] located at 127.0.0.1:7002
  4. "andy"
  5. 127.0.0.1:7002>

7006位7003的从节点,从上面也是自动跳转至7002获取值,这也是redis cluster的特点,它是去中心化,每个节点都是对等的,连接哪个节点都可以获取和设置数据。

四、集群节点选举

现在模拟将7002节点挂掉,按照redis-cluster原理会选举会将 7002的从节点7005选举为主节点。

[plain] view plain copy  

  1. [[email protected] redis-cluster]# ps -ef | grep redis
  2. root       7950      1  0 12:50 ?        00:00:28 ./redis-server 127.0.0.1:7001 [cluster]
  3. root       7952      1  0 12:50 ?        00:00:29 ./redis-server 127.0.0.1:7002 [cluster]
  4. root       7956      1  0 12:50 ?        00:00:29 ./redis-server 127.0.0.1:7003 [cluster]
  5. root       7960      1  0 12:50 ?        00:00:29 ./redis-server 127.0.0.1:7004 [cluster]
  6. root       7964      1  0 12:50 ?        00:00:29 ./redis-server 127.0.0.1:7005 [cluster]
  7. root       7966      1  0 12:50 ?        00:00:29 ./redis-server 127.0.0.1:7006 [cluster]
  8. root      11346  10581  0 14:57 pts/2    00:00:00 grep --color=auto redis
  9. [[email protected] redis-cluster]# kill 7952

在查看集群中的7002节点

[plain] view plain copy  

  1. [[email protected] redis-cluster]#
  2. [[email protected] redis-cluster]# ./redis-trib.rb check 127.0.0.1:7002
  3. [ERR] Sorry, can‘t connect to node 127.0.0.1:7002
  4. [[email protected] redis-cluster]# ./redis-trib.rb check 127.0.0.1:7005
  5. >>> Performing Cluster Check (using node 127.0.0.1:7005)
  6. M: a5db243087d8bd423b9285fa8513eddee9bb59a6 127.0.0.1:7005
  7. slots:5461-10922 (5462 slots) master
  8. 0 additional replica(s)
  9. S: 50ce1ea59106b4c2c6bc502593a6a7a7dabf5041 127.0.0.1:7004
  10. slots: (0 slots) slave
  11. replicates dd19221c404fb2fc4da37229de56bab755c76f2b
  12. M: f9886c71e98a53270f7fda961e1c5f730382d48f 127.0.0.1:7003
  13. slots:10923-16383 (5461 slots) master
  14. 1 additional replica(s)
  15. M: dd19221c404fb2fc4da37229de56bab755c76f2b 127.0.0.1:7001
  16. slots:0-5460 (5461 slots) master
  17. 1 additional replica(s)
  18. S: 8bb3ede48319b46d0015440a91ab277da9353c8b 127.0.0.1:7006
  19. slots: (0 slots) slave
  20. replicates f9886c71e98a53270f7fda961e1c5f730382d48f
  21. [OK] All nodes agree about slots configuration.
  22. >>> Check for open slots...
  23. >>> Check slots coverage...
  24. [OK] All 16384 slots covered.
  25. [[email protected] redis-cluster]#

可以看到集群连接不了7002节点,而7005有原来的S转换为M节点,代替了原来的7002节点。我们可以获取name值:

[plain] view plain copy  

  1. [[email protected] redis01]# ./redis-cli -c -p 7001
  2. 127.0.0.1:7001> get name
  3. -> Redirected to slot [5798] located at 127.0.0.1:7005
  4. "andy"
  5. 127.0.0.1:7005>
  6. 127.0.0.1:7005>

从7001节点连入,自动跳转到7005节点,并且获取name值。

现在我们将7002节点恢复,看是否会自动加入集群中以及充当的M还是S节点。

[plain] view plain copy  

  1. [[email protected] redis-cluster]# cd redis02
  2. [[email protected] redis02]# ./redis-server redis.conf
  3. [[email protected] redis02]#

在check一下7002节点

[plain] view plain copy  

  1. [[email protected] redis-cluster]# ./redis-trib.rb check 127.0.0.1:7002
  2. >>> Performing Cluster Check (using node 127.0.0.1:7002)
  3. S: 1f07d76585bfab35f91ec711ac53ab4bc00f2d3a 127.0.0.1:7002
  4. slots: (0 slots) slave
  5. replicates a5db243087d8bd423b9285fa8513eddee9bb59a6
  6. M: f9886c71e98a53270f7fda961e1c5f730382d48f 127.0.0.1:7003
  7. slots:10923-16383 (5461 slots) master
  8. 1 additional replica(s)
  9. M: a5db243087d8bd423b9285fa8513eddee9bb59a6 127.0.0.1:7005
  10. slots:5461-10922 (5462 slots) master
  11. 1 additional replica(s)
  12. S: 50ce1ea59106b4c2c6bc502593a6a7a7dabf5041 127.0.0.1:7004
  13. slots: (0 slots) slave
  14. replicates dd19221c404fb2fc4da37229de56bab755c76f2b
  15. S: 8bb3ede48319b46d0015440a91ab277da9353c8b 127.0.0.1:7006
  16. slots: (0 slots) slave
  17. replicates f9886c71e98a53270f7fda961e1c5f730382d48f
  18. M: dd19221c404fb2fc4da37229de56bab755c76f2b 127.0.0.1:7001
  19. slots:0-5460 (5461 slots) master
  20. 1 additional replica(s)
  21. [OK] All nodes agree about slots configuration.
  22. >>> Check for open slots...
  23. >>> Check slots coverage...
  24. [OK] All 16384 slots covered.
  25. [[email protected] redis-cluster]#

可以看到7002节点变成了a5db243087d8bd423b9285fa8513eddee9bb59a6 7005的从节点。

原文地址:https://www.cnblogs.com/php-linux/p/10101113.html

时间: 2024-11-10 15:27:53

redi集群测试的相关文章

zookeeper在单机上伪集群测试时,出现Unable to start AdminServer, exiting abnormally

出现该问题的原因大家都知道因为启动完一个zookeeper server后,默认的zkServer.cmd中,没有将对应的不启动AdminServer屏蔽. AdminServerFactory.java中代码如下 public static AdminServer createAdminServer() { if (!"false".equals(System.getProperty("zookeeper.admin.enableServer"))) { try

VMware 虚拟环境下微软的故障转移集群测试

VMware 虚拟环境下微软的故障转移集群测试 主机配置 两台win2008 R2企业版服务器 test01 public10.10.1.146  private 172.16.0.1 test02 public10.10.1.147  private 172.16.0.2 存储 在EMC存储中划分两个LUN,一个用于集群仲裁盘,一个用于存储数据. 在EMC存储中创建两个LUN 把新建的LUN加入的存储组中: 安装上述步骤再建一个LUN. 2.把两个LUN分别挂载到两台服务器中 Test01 挂

jmeter分布式集群测试

Jmeter分布式集群测试 我们在使用Jmeter进行性能测试的时候,如果并发数较大(比如项目需要支持1000个并发),单台电脑的配置(内存.CPU)可能无法支持,这种情况下我们可以使用Jmeter提供的分布式测试的功能.下面就介绍一下分布式原理.配置流程. 1.  分布式原理 Jmeter分布式测试时,选择一台机器作为控制机,其他机器作为执行机.执行时,控制机会把脚本发到执行机上,执行机开始执行,执行完毕后,会把结果回传到控制机. 2.  配置流程 2.1执行机配置 第一步:在执行机上安装Jm

Dubbo 入门实例 本地伪集群测试Demo

1.   概述 Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案 Dubbo是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点: 那么,Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案. 其核心部分包含: 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种

Dubbo入门实例 本地伪集群测试Demo

1.   概述 Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案 Dubbo是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点: 那么,Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案. 其核心部分包含: 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种

erlang集群测试

一.启动四个cmd -erl -sname a -setcookie abc -erl -sname b -setcookie abc -erl -sname c -setcookie abc -erl -sname d -setcookie efg 二.节点互联 1 nodes/0 %获得和当前node连接的所有node 2 net_adm:ping(Node) %ping一个node 成功后就返回pong,表示当前节点连接上了Node节点,加入了Node所在的集群,失败返回pang(也许还有

Spark集群测试

1. Spark Shell测试 Spark Shell是一个特别适合快速开发Spark原型程序的工具,可以帮助我们熟悉Scala语言.即使你对Scala不熟悉,仍然可以使用这一工具.Spark Shell使得用户可以和Spark集群进行交互,提交查询,这便于调试,也便于初学者使用Spark. 测试案例1: [[email protected] spark]$ MASTER=spark://Master:7077 bin/spark-shell //连接到集群 Spark assembly ha

30_MHA集群概述 、 部署MHA集群 测试配置

版本:5.7.28 1.准备MHA集群环境准备6台虚拟机,并按照本节规划配置好IP参数在这些虚拟机之间实现SSH免密登录在相应节点上安装好MHA相关的软件包 使用6台RHEL 7虚拟机,如图-1所示.准备集群环境,安装依赖包,授权用户,配置ssh密钥对认证登陆,所有节点之间互相以root秘钥对认证登录,管理主机以root密钥对认证登录所有数据节点主机,配置mha集群. 1.1 修改主机名,配置IPmsyql{50..57}192.168.4.{50..57} 1.2 安装包(51-55)]# t

ceph分布式存储实战(1)——ceph集群测试主机规划

主机规划 节点 磁盘(4块) 网卡(2块) mem/cpu OS HostName 节点1 os-ceph-node1/10G 私Eth0:dhcp 1G/1 CentOS Linux release   7.3.1611 (Core)_X64 ceph-node1 ceph-node1-osd1/10G 外Eth1:192.168.89.101 ceph-node1-osd2/10G ceph-node1-osd3/10G 节点2 os-ceph-node2/10G 私Eth0:dhcp 1G