[alibaba/spring-cloud-alibaba]nacos 2.1.0 集群环境,无法注册

2025-11-12 287 views
8

当前服务端使用2.0.0,但集群部署各个节点部署完毕后需要执行 curl -X PUT 'localhost:8848/nacos/v1/ns/operator/switches?entry=doubleWriteEnabled&value=false',否则客户端不会报错但注册列表没有显示,对于运维和开发不太友好。

所以打算升级到2.1.0版本。2.1.0集群部署,springboot配置访问具体节点ip:port可以正常注册;访问nginx反向代理的ip:port无法注册,报错Caused by: com.alibaba.nacos.api.exception.NacosException: Client not connected,current status:STARTING。该报错通常是因为版本不对引起,尝试nacos-client 2.0.3、2.1.0都还是报该错误

springboot:2.1.4.RELEASE spring-cloud-starter-alibaba-nacos-discovery:2.1.2.RELEASE nacos-client:2.0.3、2.1.0(都尝试过一样的情况)

回答

4

您是如何使用 Nacos 的?能否提供一个最小可复现示例?Spring Cloud Alibaba 2.1.2RELEASE 使用的是 Nacos 1.2.1 版本,您是否手动将 Nacos 依赖项替换为 Nacos 2.x 客户端?

5

3

我用你的demo去连接了一个2.1.x版本的nacos服务端,是可以成功注册的

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <artifactId>spring-boot-starter-parent</artifactId>
        <groupId>org.springframework.boot</groupId>
        <version>2.1.4.RELEASE</version>
    </parent>

    <groupId>org.example</groupId>
    <artifactId>sca-issues</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Greenwich.SR3</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.1.2.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>com.google.guava</groupId>
                    <artifactId>guava</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.alibaba</groupId>
                    <artifactId>fastjson</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.alibaba.nacos</groupId>
                    <artifactId>nacos-client</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-client</artifactId>
            <version>2.1.0</version>
        </dependency>
    </dependencies>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

</project>

但是有一种场景可以复现com.alibaba.nacos.api.exception.NacosException: Client not connected,current status:STARTING这个问题,就是你的nacos-client无法访问到nacos-server,在这种情况下是会报上述错误的。需要检查一下通过nginx中转访问nacos-server的链路是不是通的

9

链路应该都是通的。我本地浏览器访问nginx配置的ip:port,是可以访问到nacos。我本地client直接往server的ip:port注册也是成功,server界面也显示出注册的信息。我测试2.0.0的集群和2.1.0的集群都是在相同的机器上,ip端口都一样,就是nacos的版本不同而已。

8

nginx只是配了nacos主端口的中转,grpc +1000和+1001的端口还需要配置中转不?

1

nginx只是配了nacos主端口的中转,grpc +1000和+1001的端口还需要配置中转不?

应该是需要的,我复现你这个异常的时候就是grpc连接失败

9

是nginx代理grpc没配导致,thx!!!