Redis 6.2.4集群搭建

1. 说明

这里使用的是redis的cluster集权模式,没有用哨兵模式(哨兵模式依赖哨兵节点,哨兵节点一旦挂掉就不再高可用了,因此没有采用)。
由于Redis Cluster至少需要6个节点,因此,这里咱们采用的是三主三副的模式。redis的key值通过hash计算会散列在3个主节点中,副节点跟相应主节点保持一致。
在这里插入图片描述

2. Redis相关配置

这里咱们用6380~6385这6个实例标识6个节点的端口,修改相关配置:

#端口号
port 6380
#默认ip为127.0.0.1,需要改为其他节点机器可以访问的ip,否则创建集群时无法访问对应的端口,无法创建集群(使用#注掉bind则任何地址都可访问)
bind 192.168.9.128
#redis后台运行
daemonize yes
#pidfile文件对应6380,6381,6382…
pidfile /var/run/redis_6380.pid
#开启集群
cluster-enabled yes
#集群的配置,配置文件首次启动自动生成6380,6381,6382…
cluster-config-file nodes_6380.conf
#请求超时,默认15秒,可自行设置
cluster-node-timeout 15000
#aof日志开启,有需要就开启,它会每次写操作都记录一条日志
appendonly yes
# 密码保持相同
requirepass 123456

创建6个文件夹,6380~6385,将redis.conf拷贝到这6个文件夹下,并修改以下配置:

#端口号
port 6380
#pidfile文件对应6380,6381,6382…
pidfile /var/run/redis_6380.pid
#集群的配置,配置文件首次启动自动生成6380,6381,6382…
cluster-config-file nodes_6380.conf

将6个节点全部启动:

./src/redis-server 6380/redis.conf &
./src/redis-server 6381/redis.conf &
./src/redis-server 6382/redis.conf &
./src/redis-server 6383/redis.conf &
./src/redis-server 6384/redis.conf &
./src/redis-server 6385/redis.conf &

3. 启动集群

进入src目录,启动集群:

./redis-cli --cluster create 172.17.104.98:6380 172.17.104.98:6381 172.17.104.98:6382 172.17.104.98:6383 172.17.104.98:6384 172.17.104.98:6385 --cluster-replicas 1

这里不要用127.0.0.1的IP,这样配置会产生springboot项目连不上的情况,springboot连上之后,会获取这个集群信息,再用这个信息去连redis。因为你应用和集群不在一台机器上,有可能导致应用连接不上。

4. 集群查看

可以使用cluster info查看集群健康状态,cluster nodes查看集群节点状态。

# 命令中 -c表示集群
[root@localhost src]# ./redis-cli -h 127.0.0.1 -c -p 6380 -a 123456
127.0.0.1:6380> 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:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:5910
cluster_stats_messages_pong_sent:6303
cluster_stats_messages_fail_sent:12
cluster_stats_messages_sent:12225
cluster_stats_messages_ping_received:6303
cluster_stats_messages_pong_received:5903
cluster_stats_messages_fail_received:6
cluster_stats_messages_received:12212
127.0.0.1:6380> cluster nodes
6fa6f4422ff23e39ff5193ff5e53cfdce4f9d5de 172.17.104.98:6383@16383 slave a565cd8244c999e1626b6ba8b76d88bd37059e39 0 1687923362095 1 connected
196b18542407cc079d1fbd8f3d611dc476df0ba8 172.17.104.98:6381@16381 master - 0 1687923359076 2 connected 5461-10922
db7aa96d4cebdd36555216bc4880e6290f185e8b 172.17.104.98:6385@16385 slave 2619026bf36cb586563e20dde244101f7905641f 0 1687923360082 3 connected
2619026bf36cb586563e20dde244101f7905641f 172.17.104.98:6382@16382 master - 0 1687923361088 3 connected 10923-16383
db7698a106d3f09d51dcd0e80dccedc8d58a9d9f 172.17.104.98:6384@16384 slave 196b18542407cc079d1fbd8f3d611dc476df0ba8 0 1687923359000 2 connected
a565cd8244c999e1626b6ba8b76d88bd37059e39 172.17.104.98:6380@16380 myself,master - 0 1687923361000 1 connected 0-5460
127.0.0.1:6380>

5. SpringBoot连接集群

springboot中的配置,由于这里只可以配置一个password,因此需要集群的所有密码都是相同设置,否则连不上redis报错!

# spring配置
spring:
  redis:
    cluster:
      nodes: 172.17.104.98:6380,172.17.104.98:6381,172.17.104.98:6382,172.17.104.98:6383,172.17.104.98:6384,172.17.104.98:6385
    password: 123456

6. 删除集群

[root@localhost redis-6.2.4]# ls
00-RELEASENOTES  6382  6385            CONDUCT       deps      Makefile         nodes-6381.conf  nodes-6384.conf  redis.conf       runtest-moduleapi  src     utils
6380             6383  appendonly.aof  CONTRIBUTING  dump.rdb  MANIFESTO        nodes-6382.conf  nodes-6385.conf  runtest          runtest-sentinel   tests
6381             6384  BUGS            COPYING       INSTALL   nodes-6380.conf  nodes-6383.conf  README.md        runtest-cluster  sentinel.conf      TLS.md
[root@localhost redis-6.2.4]#

停掉redis所有节点,将所有的nodes-638*的文件都删除,集群将不复存在。

附. MacOS上如何安装redis

这部分是服务下使用mac系统的小朋友,其实也可以参考官网:https://redis.io/docs/getting-started/installation/install-redis-on-mac-os/

1. 安装redis:

# 安装命令
% brew install redis
# 安装完成之后会提示你如何启动,其实也是间接告诉你配置文件在哪里
To start redis now and restart at login:
  brew services start redis
Or, if you don't want/need a background service you can just run:
  /usr/local/opt/redis/bin/redis-server /usr/local/etc/redis.conf

2. 启动

mac@iMac RuoYi-Cloud % brew services start redis
==> Tapping homebrew/services
Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-services'...
remote: Enumerating objects: 2470, done.
remote: Counting objects: 100% (291/291), done.
remote: Compressing objects: 100% (110/110), done.
remote: Total 2470 (delta 203), reused 206 (delta 181), pack-reused 2179
Receiving objects: 100% (2470/2470), 681.34 KiB | 1.64 MiB/s, done.
Resolving deltas: 100% (1142/1142), done.
Tapped 1 command (45 files, 850.6KB).
==> Successfully started `redis` (label: homebrew.mxcl.redis)

猜你喜欢

转载自blog.csdn.net/weixin_29003023/article/details/131433664