1.首先检查当前集群节点的状态
192.168.1.56(192.168.1.56:6579)>cluster nodes "db73aebc13f801f3e7682f3020dda9a2de78a2de 192.168.1.56:6679@16679 master - 0 1657246502566 94 connected 10923-16383 42a9149f798f415ef1b240075600d9897805ada1 192.168.1.56:6680@16680 slave 58318a93a1f87019af06fa96ab9692e182c9184d 0 1657246502000 88 connected 6b8eec08fdf24c9a72a55fcbe4a9405458b703e8 192.168.1.56:6480@16480 slave db73aebc13f801f3e7682f3020dda9a2de78a2de 0 1657246502364 94 connected 58318a93a1f87019af06fa96ab9692e182c9184d 192.168.1.56:6579@16579 myself,master - 0 1657246501000 88 connected 5461-10922 e18554b6ad8a8d78e41e8e2c225d8aaba6c8ea5c 192.168.1.56:6580@16580 slave bd77823c2ebe3fdeea7ce9f58fa0a814024492ec 0 1657246502566 93 connected bd77823c2ebe3fdeea7ce9f58fa0a814024492ec 192.168.1.56:6479@16479 master - 0 1657246501358 93 connected 0-5460
翻译是: 192.168.1.56:6679 主节点 192.168.1.56:6680 从节点来看,对应的主要是192.168.1.56:6579 192.168.1.56:6480 从节点,对应的主是192.168.1.56:6679 192.168.1.56:6579 主节点 192.168.1.56:6580 从节点来看,对应的主要是192.168.1.56:6479 192.168.1.56:6479 主节点
2、创建Redis压测接口
@GetMapping("/test/redis") public String test() throws InterruptedException {
////模拟业务处理耗时 Thread.sleep(10); if(!RedisUtils.hasKey("test")){
RedisUtils.setStrWithTime("test","test",100); } return RedisUtils.getStr("test"); }
3、现在使用Jmeter压测Redis集群,正常。 4、现在手动down掉 192.18.1.56:6479 节点
docker stop redis_m6479
5、查看当前集群状态
"db73aebc13f801f3e7682f3020dda9a2de78a2de 192.168.1.56:6679@16679 master - 0 1657251138156 94 connected 10923-16383
42a9149f798f415ef1b240075600d9897805ada1 192.168.1.56:6680@16680 slave 58318a93a1f87019af06fa96ab9692e182c9184d 0 1657251140169 88 connected
6b8eec08fdf24c9a72a55fcbe4a9405458b703e8 192.168.1.56:6480@16480 slave db73aebc13f801f3e7682f3020dda9a2de78a2de 0 1657251140571 94 connected
58318a93a1f87019af06fa96ab9692e182c9184d 192.168.1.56:6579@16579 myself,master - 0 1657251140000 88 connected 5461-10922
e18554b6ad8a8d78e41e8e2c225d8aaba6c8ea5c 192.168.1.56:6580@16580 master - 0 1657251140000 95 connected 0-5460
bd77823c2ebe3fdeea7ce9f58fa0a814024492ec 192.168.1.56:6479@16479 master,fail - 1657251082816 1657251080501
发现192.168.1.56:6479 显示fail,192.168.1.56:6580自动故障切换为主节点。 同时 Redission自动感知拓扑刷新,控制台打印如下日志:
2022-07-08 11:33:15,748 | INFO | o.r.c.MasterSlaveEntry - master 192.168.1.56/192.168.1.56:6479 used as slave
2022-07-08 11:33:15,748 | INFO | o.r.c.ClusterConnectionManager - slave redis://192.168.1.56:6580 removed for slot ranges: [[0-5460]]
2022-07-08 11:33:16,078 | INFO | o.r.c.p.MasterPubSubConnectionPool - 1 connections initialized for 192.168.1.56/192.168.1.56:6580
2022-07-08 11:33:16,862 | INFO | o.r.c.ClusterConnectionManager - 192.168.1.56/192.168.1.56:6479 master and related slaves: [addr=redis://192.168.1.56:6580] removed
2022-07-08 11:33:16,862 | INFO | o.r.c.p.MasterConnectionPool - 24 connections initialized for 192.168.1.56/192.168.1.56:6580
2022-07-08 11:33:17,051 | INFO | o.r.c.p.PubSubConnectionPool - 1 connections initialized for 192.168.1.56/192.168.1.56:6580
2022-07-08 11:33:17,741 | INFO | o.r.c.ClusterConnectionManager - master: redis://192.168.1.56:6580 added for slot ranges: [[0-5460]]
2022-07-08 11:33:17,741 | INFO | o.r.c.p.SlaveConnectionPool - 24 connections initialized for 192.168.1.56/192.168.1.56:6580
再次压测Redis集群,集群正常。