redis cluster集群搭建

news/2024/10/29 3:28:46/

集群搭建

启动6个redis实例

创建6份配置文件

mkdir redis-cluster
cd redis-cluster
mkdir 7001 7002 7003 8001 8002 8003

7001文件夹创建配置文件redis.conf

port 7001
cluster-enabled yes
cluster-config-file nodes-7001.conf
cluster-node-timeout 5000
appendonly yes

然后copy到其他文件夹,记得改端口号,还有cluster-config-file的值,这个值不能重,必须唯一,否则无法启动

➜  redis git:(unstable) ✗ tree redis-cluster
redis-cluster
├── 7001
│   └── redis.conf
├── 7002
│   └── redis.conf
├── 7003
│   └── redis.conf
├── 8001
│   └── redis.conf
├── 8002
│   └── redis.conf
└── 8003└── redis.conf7 directories, 6 files 

启动6个独立的redis实例

nohup ./src/redis-server ./redis-cluster/7001/redis.conf &
nohup ./src/redis-server ./redis-cluster/7002/redis.conf &
nohup ./src/redis-server ./redis-cluster/7003/redis.conf &
nohup ./src/redis-server ./redis-cluster/8001/redis.conf &
nohup ./src/redis-server ./redis-cluster/8002/redis.conf &
nohup ./src/redis-server ./redis-cluster/8003/redis.conf &

确认是否全部启动成功

➜  redis git:(unstable)ps -ef |grep redis502 54910 84839   0  4:04下午 ttys007    0:01.25 ./redis-server *:7001 [cluster]502 63857 84839   0  4:17下午 ttys007    0:00.13 ./src/redis-server *:7002 [cluster]502 64177 84839   0  4:18下午 ttys007    0:00.08 ./src/redis-server *:7003 [cluster]502 64551 84839   0  4:18下午 ttys007    0:00.06 ./src/redis-server *:8001 [cluster]502 64651 84839   0  4:18下午 ttys007    0:00.04 ./src/redis-server *:8002 [cluster]502 64721 84839   0  4:18下午 ttys007    0:00.04 ./src/redis-server *:8003 [cluster]

启动redis cluster

–cluster-replicas 1表示每个master一个slave

➜  redis git:(unstable) ✗ ./src/redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 \
127.0.0.1:7003 127.0.0.1:8001 127.0.0.1:8002 127.0.0.1:8003 \
--cluster-replicas 1
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 127.0.0.1:8002 to 127.0.0.1:7001
Adding replica 127.0.0.1:8003 to 127.0.0.1:7002
Adding replica 127.0.0.1:8001 to 127.0.0.1:7003
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: da719074003da0628451b51ea31b3dc33531df9d 127.0.0.1:7001slots:[0-5460] (5461 slots) master
M: 031ebc9d3abd215ae467d1e9ec801a1664e2aeca 127.0.0.1:7002slots:[5461-10922] (5462 slots) master
M: e92d35f68da0727360113754dca6000de8fb19bb 127.0.0.1:7003slots:[10923-16383] (5461 slots) master
S: a1b535c7207cfcf3556917a663020d1ad588e086 127.0.0.1:8001replicates e92d35f68da0727360113754dca6000de8fb19bb
S: fc3b476515919bc2d26651a3589098f6f7b2862c 127.0.0.1:8002replicates da719074003da0628451b51ea31b3dc33531df9d
S: b69892d37edd69069a0ba39a97adc3818e4d45a6 127.0.0.1:8003replicates 031ebc9d3abd215ae467d1e9ec801a1664e2aeca
Can I set the above configuration? (type 'yes' to accept): yes

测试集群的读写

 src git:(unstable) ✗ ./redis-cli -c -p 7001
127.0.0.1:7001> set foo bar
-> Redirected to slot [12182] located at 127.0.0.1:7003
OK
127.0.0.1:7003> get foo
"bar"
127.0.0.1:7003> set hello world
-> Redirected to slot [866] located at 127.0.0.1:7001
OK
127.0.0.1:7001> get foo
-> Redirected to slot [12182] located at 127.0.0.1:7003
"bar"
127.0.0.1:7003> get hello
-> Redirected to slot [866] located at 127.0.0.1:7001
"world"

测试failover功能

先停掉一个master 7001

src git:(unstable)ps -ef |grep redis502 77572 34733   0  4:38下午 ttys005    0:00.00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn --exclude-dir=.idea --exclude-dir=.tox redis502 54910 84839   0  4:04下午 ttys007    0:03.01 ./redis-server *:7001 [cluster]502 63857 84839   0  4:17下午 ttys007    0:01.92 ./src/redis-server *:7002 [cluster]502 64177 84839   0  4:18下午 ttys007    0:01.86 ./src/redis-server *:7003 [cluster]502 64551 84839   0  4:18下午 ttys007    0:01.75 ./src/redis-server *:8001 [cluster]502 64651 84839   0  4:18下午 ttys007    0:01.83 ./src/redis-server *:8002 [cluster]502 64721 84839   0  4:18下午 ttys007    0:01.86 ./src/redis-server *:8003 [cluster]
➜  src git:(unstable)kill -9 54910

观察节点信息

➜  src git:(unstable) ✗ ./redis-cli -c -p 7002
127.0.0.1:7002> set lvsheng  a
-> Redirected to slot [694] located at 127.0.0.1:8002
127.0.0.1:8002> cluster nodes
031ebc9d3abd215ae467d1e9ec801a1664e2aeca 127.0.0.1:7002@17002 master - 0 1694077364000 2 connected 5461-10922
a1b535c7207cfcf3556917a663020d1ad588e086 127.0.0.1:8001@18001 slave e92d35f68da0727360113754dca6000de8fb19bb 0 1694077364649 3 connected
b69892d37edd69069a0ba39a97adc3818e4d45a6 127.0.0.1:8003@18003 slave 031ebc9d3abd215ae467d1e9ec801a1664e2aeca 0 1694077364548 2 connected
fc3b476515919bc2d26651a3589098f6f7b2862c 127.0.0.1:8002@18002 myself,master - 0 1694077364000 7 connected 0-5460
da719074003da0628451b51ea31b3dc33531df9d 127.0.0.1:7001@17001 master,fail - 1694075900491 1694075898000 1 disconnected
e92d35f68da0727360113754dca6000de8fb19bb 127.0.0.1:7003@17003 master - 0 1694077364000 3 connected 10923-16383
127.0.0.1:8002> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:7
cluster_my_epoch:7
cluster_stats_messages_ping_sent:4100
cluster_stats_messages_pong_sent:4129
cluster_stats_messages_meet_sent:1
cluster_stats_messages_fail_sent:5
cluster_stats_messages_auth-req_sent:5
cluster_stats_messages_sent:8240
cluster_stats_messages_ping_received:4125
cluster_stats_messages_pong_received:4100
cluster_stats_messages_auth-ack_received:2
cluster_stats_messages_received:8227
total_cluster_links_buffer_limit_exceeded:0

依然是3个主节点,但是7001已经失联,8002从slave变成了master。


http://www.ppmy.cn/news/1094901.html

相关文章

记一次以太网连接失败修复

症状: 很久没用这个电脑了,开机以后,发现连不上校园网。 遂检查网线,发现网线连在自己笔记本是可以用的,说明网线没问题。 但是网线连在主机是红灯常亮黄灯闪烁,怀疑是网卡有问题(后证明不是&#xff0c…

阿里云云主机免费试用三个月

试用链接如下: 阿里云云产品免费试用 云主机 费用试用三个月,每月750小时 实例规格 1核(vCPU) 2 GiB S6 系列机型 适用搭建网站等场景 网络带宽 1M 公网固定网络带宽 云盘40 GiB 真香!!!!!&…

亚马逊鲲鹏AI智能养号好用吗?怎么使用的?

亚马逊鲲鹏AI智能一键养号可以根据AI功能页面的姓名、年龄、职业、爱好等生成一批不同的AI角色,账号绑定这些角色后就可以自动浏览进行养号了。 功能特点 1、自动生成AI姓名、随机选择角色性别、自由设置AI年龄 2、根据勾选的AI职业、AI爱好进行随机生成AI关键词进…

第一章:绪论

1.1 系统架构概述 架构是体现在组件中的一个系统的基本组织、它们彼此的关系与环境的关系以及指导它的设计和发展的原则。 系统是组织起来完成某一特定功能火一组功能的组件集。系统这个术语包括了单独的应用程序、传统意义上的系统、子系统、系统之系统、产品线、整个企业及…

Echarts 中国地图

直接展示效果图: 我们需要引入两个文件: echarts.js 官网地址下载:快速上手 - Handbook - Apache ECharts chain.js 这个官网已经找不到了,需要自行搜寻下载 也可以私信我(网上下载的China.js会导致省名称定为不准确&#xff0…

【新项目】

01 概述 新凝血四项,又称血栓前四项,分为:TAT、PIC、TM、tPAI.C四个检测项目。 生理性高凝状态会伴随着孕妈妈们的整个妊娠期,凝血和纤溶系统的异常状态导致孕产妇发生静脉血栓栓塞症(VTE)的风险比一般人群高。非妊娠妇女凝血项…

如何选择报修管理系统?报修工单管理系统有哪些功能和优势?

报修管理系统是一种能够帮助企业快速反应设备故障和异常情况,并将问题及时通知到相关人员,并对问题进行统计和分析的系统。它能够有效提高企业的工作效率,并减少人员成本的支出。那么,报修工单管理系统有哪些功能和优势呢?下面以“…

软件第三方测评机构简析:良好的测试环境对软件产品起到的作用

近年来,软件行业发展迅速,软件产品的质量成为用户关注的焦点。而软件的质量评估往往需要依赖专业的第三方测评机构,为了更好地了解软件测试环境对产品质量的重要性,小编整理了以下简析: 一、良好的测试环境对软件产品…