Node 10.0.8.6:9003 is unknown to cluster

解决方案

解决方案一

① 概念介绍

公网ip:就是任意两台连接了互联网的电脑可以互相ping ip,能够通的ip
在这里插入图片描述

内网ip:只是在内网中使用无法与外网连接的ip
在这里插入图片描述

②问题背景

在腾讯云上搭建的一个redis集群,集群启动后
在这里插入图片描述
可以看到启动节点对应的集群中的ip是内网ip10.0.8.6
正是这个问题造成了上诉问题。

③造成问题原因

在搭建集群的过程中.conf配置文件中的一个属性cluster-config-file nodes-9001.conf,所对应的文件nodes-9001.conf,它是在创建集群中生成的,路径是和启动集群的配置文件是同一位置
在这里插入图片描述
打开其中一个文件,可以其中一个对应的节点ip是内网ip10.0.8.6
在这里插入图片描述
正是这个原因造成了,获取不到集群ip节点

④解决方案

  1. 将集群节点kill掉

    找到进程号

    ps -ef|grep redis
    

    将对应的节点进程号kill掉

    kill -9 3839 3845 3874 4018 4120 4194
    

    在这里插入图片描述

  2. 更改nodes-9001.conf文件中内网ip10.0.8.6

    在这里插入图片描述

    在这里插入图片描述
    这里因为是集群可以将所有node文件都取出来,在外面更改完成后,在放回到此目录下

  3. 重新启动redis服务

    redis-server /usr/local/redis-7.0.2/myredis-config/redis9001.conf
    redis-server /usr/local/redis-7.0.2/myredis-config/redis9002.conf
    redis-server /usr/local/redis-7.0.2/myredis-config/redis9003.conf
    redis-server /usr/local/redis-7.0.2/myredis-config/redis9004.conf
    redis-server /usr/local/redis-7.0.2/myredis-config/redis9005.conf
    redis-server /usr/local/redis-7.0.2/myredis-config/redis9006.conf
    
  4. 检验redis集群启动是否正常

    1. 登录redis节点
    redis-cli -c -p 9001
    

    如果redis配置了密码,需要输入auth 密码
    在这里插入图片描述
    2. 查看Redis集群状况

    cluster nodes
    

    在这里插入图片描述
    可以看到已经没有内网ip在出现了

⑤ 附

搭建redis集群中的配置文件

    <!-- redis集群配置 集群模式 -->
    <bean class="org.springframework.data.redis.connection.RedisClusterConfiguration" id="redisClusterConfiguration">
        <property name="maxRedirects" value="6"></property>
        <property name="clusterNodes">
            <set>
                <!--注意这里主从必须交替配置-->
                <!--例如43.138.78.17:9001 为master ,43.138.78.17:9006 是slave-->
                <bean class="org.springframework.data.redis.connection.RedisNode">
                    <constructor-arg name="host" value="43.138.78.17"></constructor-arg>
                    <constructor-arg name="port" value="9001"></constructor-arg>
                </bean>
                <bean class="org.springframework.data.redis.connection.RedisNode">
                    <constructor-arg name="host" value="43.138.78.17"></constructor-arg>
                    <constructor-arg name="port" value="9006"></constructor-arg>
                </bean>

                <bean class="org.springframework.data.redis.connection.RedisNode">
                    <constructor-arg name="host" value="43.138.78.17"></constructor-arg>
                    <constructor-arg name="port" value="9002"></constructor-arg>
                </bean>
                <bean class="org.springframework.data.redis.connection.RedisNode">
                    <constructor-arg name="host" value="43.138.78.17"></constructor-arg>
                    <constructor-arg name="port" value="9004"></constructor-arg>
                </bean>

                <bean class="org.springframework.data.redis.connection.RedisNode">
                    <constructor-arg name="host" value="43.138.78.17"></constructor-arg>
                    <constructor-arg name="port" value="9003"></constructor-arg>
                </bean>
                <bean class="org.springframework.data.redis.connection.RedisNode">
                    <constructor-arg name="host" value="43.138.78.17"></constructor-arg>
                    <constructor-arg name="port" value="9005"></constructor-arg>
                </bean>
            </set>
        </property>
    </bean>

    <!-- 配置Jedis连接池 -->
    <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
        <property name="maxTotal" value="1024" />
        <property name="maxIdle" value="200" />
        <property name="MaxWaitMillis" value="1000" />
        <property name="testOnBorrow" value="true" />
    </bean>


    <!-- jedis连接工厂 -->
    <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
<!--        <property name="password" value="2wsx1qaz" />-->
        <property name="database" value="0" />
        <constructor-arg name="poolConfig" ref="jedisPoolConfig"/>
        <constructor-arg name="clusterConfig" ref="redisClusterConfiguration"/>
        <property name="timeout" value="5000" />
    </bean>

猜你喜欢

转载自blog.csdn.net/PhilsphyPrgram/article/details/129202711