make && make install
创建集群配置:
mkdir redis-cluster
创建集群文件夹,然后在该文件夹下创建6个文件,同redis.conf
配置一致,7001.conf、7002.conf、7003.conf、7004.conf、7005.conf、7006.conf
然后修改各个配置:
port 700x // 端口700X
bind 本机ip // 需要改为其他节点机器可访问的ip 否则创建集群时无法访问对应的端口,无法创建集群
daemonize yes // redis后台运行
pidfile /var/run/redis_7001.pid // pidfile文件对应7001,7002
cluster-enabled yes // 开启集群 把注释#去掉
cluster-config-file nodes_7001.conf // 集群的配置 配置文件首次启动自动生成 7001,7002
cluster-node-timeout 15000 // 请求超时 默认15秒,可自行设置
appendonly yes // # AOF 持久化,按需要选择是否开启
启动服务:
redis-server …/redis-cluster/7001.conf
redis-server …/redis-cluster/7002.conf
redis-server …/redis-cluster/7003.conf
redis-server …/redis-cluster/7004.conf
redis-server …/redis-cluster/7005.conf
redis-server …/redis-cluster/7006.conf
创建集群:
–replicas参数指定集群中每个主节点配备几个从节点,这里设置为1。
redis-cli --cluster create 172.17.1.218:7001 172.17.1.218:7002 172.17.1.218:7003 172.17.1.218:7004 172.17.1.218:7005 172.17.1.218:7006 --cluster-replicas 1
查看集群:
redis-cli --cluster check 172.17.1.218:7001
172.17.1.218:7002 (406a1d6e…) -> 0 keys | 5461 slots | 1 slaves.
172.17.1.218:7003 (85df8dc9…) -> 0 keys | 5462 slots | 1 slaves.
172.17.1.218:7004 (54f13720…) -> 2 keys | 5461 slots | 1 slaves.
[OK] 2 keys in 3 masters.
0.00 keys per slot on average.
Performing Cluster Check (using node 172.17.1.218:7001)
S: 2d589d0077771ca9a7b2909b351e350aa69bea45 172.17.1.218:7001
slots: (0 slots) slave
replicates 54f13720da944d3dcc75351c4042fcaf3b2300e0
M: 406a1d6e9bcc760501c6b8f71f9151e020b247bd 172.17.1.218:7002
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: e52eda05e4df779e15437f7f42522459a3e26b27 172.17.1.218:7005
slots: (0 slots) slave
replicates 85df8dc9b649e02740fa0f932aa1df135d44953e
M: 85df8dc9b649e02740fa0f932aa1df135d44953e 172.17.1.218:7003
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
M: 54f13720da944d3dcc75351c4042fcaf3b2300e0 172.17.1.218:7004
slots:[0-5460] (5461 slots) master
1 additional replica(s)
S: 60f49255085936fbcf682bafc81319f9393150c9 172.17.1.218:7006
slots: (0 slots) slave
replicates 406a1d6e9bcc760501c6b8f71f9151e020b247bd
[OK] All nodes agree about slots configuration.
Check for open slots…
Check slots coverage…
[OK] All 16384 slots covered.
从集群信息,我们可以看出有三组主从关系:
-
7004(主)-7001(从)
-
7003(主)-7005(从)
-
7002(主)-7006(从)
其实一开始7001是主,为了测试主从切换,把7001杀掉,由7004接管,然后重启7001变为从服务。
整合
pom.xml
引入:
配置文件 bootstrap.yml
:
spring:
redis:
timeout: 30000
password: 123456
cluster:
nodes:
- 172.17.1.218:7001
- 172.17.1.218:7002
- 172.17.1.218:7003
- 172.17.1.218:7004
- 172.17.1.218:7005
- 172.17.1.218:7006
max-redirects: 3
lettuce:
max-active: 1000
max-idle: 10
max-wait: -1
min-idle: 5
开发者可以对 RedisTemplate
进行一个简单的封装成 RedisUtil
。
小结
这就是微服务版本的 Redis
高可用集群,是不是有点简单。不过,生产环境建议配置内网地址,开启防火墙,配置必要的鉴权访问机制,这玩意一旦被嗅探到可能会被老板扣工资的。还有一点,一定要搭建有效的监控预警系统,这样可以针对性的对其进行扩容、修复。
推荐阅读:
总结
我们总是喜欢瞻仰大厂的大神们,但实际上大神也不过凡人,与菜鸟程序员相比,也就多花了几分心思,如果你再不努力,差距也只会越来越大。实际上,作为程序员,丰富自己的知识储备,提升自己的知识深度和广度是很有必要的。
Mybatis源码解析
知识深度和广度是很有必要的。
Mybatis源码解析
[外链图片转存中…(img-9jlV0kai-1721156964540)]
[外链图片转存中…(img-LgsN9SFp-1721156964540)]