关联文章:
上文使用Redisson对单节点的redis进行操作,但是在对于集群操作时需要不同的配置以及集群的搭建,本文就一起来探索使用docker的redis集群的搭建。
搭建集群Redis
本文Redis集群的搭建参考官方给出的搭建指导。
1.首先我们需要编写Redis的配置文件redis.conf
#redis的端口
port 7000
#关闭redis的保护模式
protected-mode no
#开启集群模式
cluster-enabled yes
#集群的配置文件,注:集群的配置文件不需要我们生成,redis会自动生成
cluster-config-file nodes.conf
#集群超时时间
cluster-node-timeout 5000
#开始数据持久化
appendonly yes
同时,我们需要启动6个Redis服务,Redis官方是这样介绍的:
要让集群正常运作至少需要三个主节点,不过在刚开始试用集群功能时, 强烈建议使用六个节点: 其中三个为主节点, 而其余三个则是各个主节点的从节点。
我们把上述的配置文件复制5份,把内部的port
配置项改成7000
至7005
,文件也根据端口名分别命名成redis7000.conf
至redis7005.conf
,之后运行docker命令把容器都启动起来。
docker run --net=host -d -v /usr/nis/redis/redis7000.conf:/usr/local/etc/redis/redis.conf --name redis7000 redis redis-server /usr/local/etc/redis/redis.conf
docker run --net=host -d -v /usr/nis/redis/redis7001.conf:/usr/local/etc/redis/redis.conf --name redis7001 redis redis-server /usr/local/etc/redis/redis.conf
docker run --net=host -d -v /usr/nis/redis/redis7002.conf:/usr/local/etc/redis/redis.conf --name redis7002 redis redis-server /usr/local/etc/redis/redis.conf
docker run --net=host -d -v /usr/nis/redis/redis7003.conf:/usr/local/etc/redis/redis.conf --name redis7003 redis redis-server /usr/local/etc/redis/redis.conf
docker run --net=host -d -v /usr/nis/redis/redis7004.conf:/usr/local/etc/redis/redis.conf --name redis7004 redis redis-server /usr/local/etc/redis/redis.conf
docker run --net=host -d -v /usr/nis/redis/redis7005.conf:/usr/local/etc/redis/redis.conf --name redis7005 redis redis-server /usr/local/etc/redis/redis.conf
注:如果启动起来后发现无法远程连接Redis请查看自己的防火墙是否开始,如果开启了防火墙,那么需要放行Redis的7000-7005端口
#端口放行
firewall-cmd --add-port=7000/tcp --permanent
firewall-cmd --add-port=7001/tcp --permanent
firewall-cmd --add-port=7002/tcp --permanent
firewall-cmd --add-port=7003/tcp --permanent
firewall-cmd --add-port=7004/tcp --permanent
firewall-cmd --add-port=7005/tcp --permanent
#重载防火墙配置
firewall-cmd --reload
然后选择一个redis容器进入容器内部
docker exec -it redis7000 bash
输入集群搭建命令,IP请根据读者自身实际情况修改
redis-cli --cluster create 192.168.2.66:7000 192.168.2.66:7001 192.168.2.66:7002 192.168.2.66:7003 192.168.2.66:7004 192.168.2.66:7005 --cluster-replicas 1
随后Redis会自动生成3主3从的方案,然后输入yes
,Redis就会开始自动分配
分配完成后,集群就搭建完成了。
配置项添加
以Java
为例,需要在application.yml
文件中添加集群化的配置
spring:
cloud:
redis:
# 数据库索引
database: 0
# 地址
host: 127.0.0.1
# 端口
port: 6379
# 密码
password:
# 连接超时时间
timeout: 10s
lettuce:
pool:
# 连接池中的最小空闲连接
min-idle: 0
# 连接池中的最大空闲连接
max-idle: 8
# 连接池的最大数据库连接数
max-active: 8
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms
redisson:
config: |
clusterServersConfig:
idleConnectionTimeout: 10000
connectTimeout: 10000
timeout: 3000
retryAttempts: 3
retryInterval: 1500
failedSlaveReconnectionInterval: 3000
failedSlaveCheckInterval: 60000
subscriptionsPerConnection: 5
clientName: null
loadBalancer: !<org.redisson.connection.balancer.RoundRobinLoadBalancer> {}
subscriptionConnectionMinimumIdleSize: 1
subscriptionConnectionPoolSize: 50
slaveConnectionMinimumIdleSize: 24
slaveConnectionPoolSize: 64
masterConnectionMinimumIdleSize: 24
masterConnectionPoolSize: 64
readMode: "SLAVE"
subscriptionMode: "SLAVE"
nodeAddresses:
- "redis://192.168.2.66:7000"
- "redis://192.168.2.66:7001"
- "redis://192.168.2.66:7002"
- "redis://192.168.2.66:7003"
- "redis://192.168.2.66:7004"
- "redis://192.168.2.66:7005"
scanInterval: 1000
pingConnectionInterval: 0
keepAlive: false
tcpNoDelay: false
threads: 16
nettyThreads: 32
codec: !<org.redisson.codec.MarshallingCodec> {}
transportMode: "NIO"
启动应用后,即可连接上Redis集群,进行锁操作。