【redis相关】redis集群结合Spring配置的一些问题

项目中要将单机版redis服务器改为redis集群,配置的过程和配置过程中遇到的一些问题作如下记录。

首先修改redis的配置文件redis.conf

daemonize yes

port xxxx (每个节点一个端口)

cluster-enabled yes

cluster-config-file nodes.conf

cluster-node-timeout 5000

因为要让redis集群正常运行至少需要三个主节点,所以这里我们创建6个节点,将配置好的redis复制一份到当前目录,再将这两个redis节点分别复制到其他两台虚拟机上。这样我们就在3台服务器上部署了6个redis节点来组成redis集群。

这里复制redis到其他虚拟机上采用scp命令

scp -r redis [email protected]:/

其中redis目录下包含两个redis节点

复制完成后,将六个redis节点的配置文件中的端口分别配置为7000~7005

分别启动六个redis节点,进入src目录下,执行

./redis-server ../redis.conf

问题1

访问集群中某个节点的时候可能会出现 JedisClusterException: CLUSTERDOWN Hash slot not served 的异常

这时进入相应的redis节点

redis-cli -h 10.211.55.9 -p 7000

检测节点是否可用

redis-trib.rb check 127.0.0.1:6379

结果: [ERR] Not all 16384 slots are covered by nodes

执行修复命令:redis-trib.rb fix 127.0.0.1:6379

等待修复完毕即可恢复节点。

 

继续配置集群,在spring配置文件中的配置如下


        
        
            
                
                    
                    
                
                
                    
                    
                
                
                    
                    
                
                
                    
                    
                
                
                    
                    
                
                
                    
                    
                
            
        

    
    
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
    

    
        
        
        
    

    
    
        
        
        
            
        
        
            
        
        
            
        
        
            
        
        
        
    

    
    
        
    

在终端执行命令,配置集群

./redis-trib.rb create —replicas 1 10.211.55.5:7000 10.211.55.5:7001 10.211.55.6:7002 10.211.55.6:7003 10.211.55.9:7004 10.211.55.9:7005

问题2

配置完成后启动项目,在查询缓存时出现如下错误

【redis相关】redis集群结合Spring配置的一些问题_第1张图片

查看控制台没有报错,继续排查终端指令发现,在创建redis集群的时候并没有创建成功

【redis相关】redis集群结合Spring配置的一些问题_第2张图片

我们需要对每个redis节点都执行 flushall 和 cluster reset 命令,然后再重新创建集群。

进入相应的redis节点执行命令

【redis相关】redis集群结合Spring配置的一些问题_第3张图片

执行完毕后重新创建集群

【redis相关】redis集群结合Spring配置的一些问题_第4张图片

【redis相关】redis集群结合Spring配置的一些问题_第5张图片

结果如上图则为成功创建集群。

你可能感兴趣的:(学习笔记,Java,Linux,redis,数据库)