Giter Site home page Giter Site logo

Comments (13)

yuluo-yx avatar yuluo-yx commented on June 13, 2024

使用 docker-compose 重启的时候,如果不指定启动顺序,sb 应用在先于 nacos 启动的时候,就会去连接 nacos,
如果 nacos 在sb 应用重试之后还没有启动成功,就会启动失败。一般 docker 启动 nacos 初始化数据等等耗时会比较长

  1. 看下 sb 应用中有没有设置 spring.cloud.nacos.discovery.username/password 属性;
  2. nacos server 在 2.x 版本之后加入了用户鉴权,user not found 可能是用户配置不合适,可以参考下 nacos 鉴权部分看看;
  3. nacos 初始化资源没有完成。
    1. 可以把 nacos 和 其他应用依赖的组件放到一个 compose 文件中,应用分开,当依赖组件启动成功的时候再去启动应用。
    2. 添加 nacos 健康检查,确定启动顺序。
      healthcheck:
        test: [ "CMD", "curl", "-f", "http://localhost:8848/nacos/v1/console/health/readiness" ]
        interval: 10s
        timeout: 20s
        retries: 10
      

from spring-cloud-alibaba.

cxhello avatar cxhello commented on June 13, 2024

使用 docker-compose 重启的时候,如果不指定启动顺序,sb 应用在先于 nacos 启动的时候,就会去连接 nacos, 如果 nacos 在sb 应用重试之后还没有启动成功,就会启动失败。一般 docker 启动 nacos 初始化数据等等耗时会比较长

  1. 看下 sb 应用中有没有设置 spring.cloud.nacos.discovery.username/password 属性;

  2. nacos server 在 2.x 版本之后加入了用户鉴权,user not found 可能是用户配置不合适,可以参考下 nacos 鉴权部分看看;

  3. nacos 初始化资源没有完成。

    1. 可以把 nacos 和 其他应用依赖的组件放到一个 compose 文件中,应用分开,当依赖组件启动成功的时候再去启动应用。
    2. 添加 nacos 健康检查,确定启动顺序。
      healthcheck:
        test: [ "CMD", "curl", "-f", "http://localhost:8848/nacos/v1/console/health/readiness" ]
        interval: 10s
        timeout: 20s
        retries: 10
      
  1. 目前设置了spring.cloud.nacos.username&password属性,没有在spring.cloud.nacos.discovery.username/password这一层设置;
  2. 手动再重启应用就没问题了,但是我看nacos文档说client会一直重试,因为应用的进程还一直在并没有死掉,所以来咨询下;
  3. 这种方案考虑过,但是我们应用比较多。之前已经将docker-compose文件拆分成了多个,所以没法使用depends_on;

from spring-cloud-alibaba.

yuluo-yx avatar yuluo-yx commented on June 13, 2024

使用 docker-compose 重启的时候,如果不指定启动顺序,sb 应用在先于 nacos 启动的时候,就会去连接 nacos, 如果 nacos 在sb 应用重试之后还没有启动成功,就会启动失败。一般 docker 启动 nacos 初始化数据等等耗时会比较长

  1. 看下 sb 应用中有没有设置 spring.cloud.nacos.discovery.username/password 属性;

  2. nacos server 在 2.x 版本之后加入了用户鉴权,user not found 可能是用户配置不合适,可以参考下 nacos 鉴权部分看看;

  3. nacos 初始化资源没有完成。

    1. 可以把 nacos 和 其他应用依赖的组件放到一个 compose 文件中,应用分开,当依赖组件启动成功的时候再去启动应用。
    2. 添加 nacos 健康检查,确定启动顺序。
      healthcheck:
        test: [ "CMD", "curl", "-f", "http://localhost:8848/nacos/v1/console/health/readiness" ]
        interval: 10s
        timeout: 20s
        retries: 10
      
  1. 目前设置了spring.cloud.nacos.username&password属性,没有在spring.cloud.nacos.discovery.username/password这一层设置;
  2. 手动再重启应用就没问题了,但是我看nacos文档说client会一直重试,因为应用的进程还一直在并没有死掉,所以来咨询下;
  3. 这种方案考虑过,但是我们应用比较多。之前已经将docker-compose文件拆分成了多个,所以没法使用depends_on;

大致明白了你的意思,就是按照文档描述,sb 应用会一直重试去尝试连接 nacos,而不是像是现在这样终止应用?😯

from spring-cloud-alibaba.

cxhello avatar cxhello commented on June 13, 2024

使用 docker-compose 重启的时候,如果不指定启动顺序,sb 应用在先于 nacos 启动的时候,就会去连接 nacos, 如果 nacos 在sb 应用重试之后还没有启动成功,就会启动失败。一般 docker 启动 nacos 初始化数据等等耗时会比较长

  1. 看下 sb 应用中有没有设置 spring.cloud.nacos.discovery.username/password 属性;

  2. nacos server 在 2.x 版本之后加入了用户鉴权,user not found 可能是用户配置不合适,可以参考下 nacos 鉴权部分看看;

  3. nacos 初始化资源没有完成。

    1. 可以把 nacos 和 其他应用依赖的组件放到一个 compose 文件中,应用分开,当依赖组件启动成功的时候再去启动应用。
    2. 添加 nacos 健康检查,确定启动顺序。
      healthcheck:
        test: [ "CMD", "curl", "-f", "http://localhost:8848/nacos/v1/console/health/readiness" ]
        interval: 10s
        timeout: 20s
        retries: 10
      
  1. 目前设置了spring.cloud.nacos.username&password属性,没有在spring.cloud.nacos.discovery.username/password这一层设置;
  2. 手动再重启应用就没问题了,但是我看nacos文档说client会一直重试,因为应用的进程还一直在并没有死掉,所以来咨询下;
  3. 这种方案考虑过,但是我们应用比较多。之前已经将docker-compose文件拆分成了多个,所以没法使用depends_on;

大致明白了你的意思,就是按照文档描述,sb 应用会一直重试去尝试连接 nacos,而不是像是现在这样终止应用?😯

现在也不会终止进程,但是应用的状态不是正常的,会提示截图中的错误信息,接口也无法正常调用。

from spring-cloud-alibaba.

yuluo-yx avatar yuluo-yx commented on June 13, 2024

现在也不会终止进程,但是应用的状态不是正常的,会提示截图中的错误信息,接口也无法正常调用。

get.

from spring-cloud-alibaba.

cxhello avatar cxhello commented on June 13, 2024

get.

目前我能想到的一个方案是从部署角度解决的,在 docker compose 文件中 增加

entrypoint: /bin/sh -c "until curl -f http://nacos:8848/nacos/v1/console/health/readiness; do echo 'Waiting for Nacos...'; sleep 5; done && exec java -Dfile.encoding=UTF-8 -jar app.jar"

from spring-cloud-alibaba.

yuluo-yx avatar yuluo-yx commented on June 13, 2024

get.

目前我能想到的一个方案是从部署角度解决的,在 docker compose 文件中 增加

entrypoint: /bin/sh -c "until curl -f http://nacos:8848/nacos/v1/console/health/readiness; do echo 'Waiting for Nacos...'; sleep 5; done && exec java -Dfile.encoding=UTF-8 -jar app.jar"

可以提供一个简单复现的例子出来吗?可以是 github 仓库连接

from spring-cloud-alibaba.

cxhello avatar cxhello commented on June 13, 2024

好的,明天我发出来。

from spring-cloud-alibaba.

cxhello avatar cxhello commented on June 13, 2024

@yuluo-yx

github仓库链接:https://github.com/cxhello/spring-cloud-nacos.git

image

这个是我刚刚使用这个示例的的日志,进程还在,但是接口无法正常调用。

from spring-cloud-alibaba.

yuluo-yx avatar yuluo-yx commented on June 13, 2024

@cxhello 你好,这几天有点事情,耽搁了,你可以在配置文件中尝试加入以下配置

spring:
  cloud:
    nacos:
      discovery:
        fail-fast=false

Feb-03-2024 10-45-58

sca 加入了注册中心的快速失败机制,具体可见

  1. #2104

from spring-cloud-alibaba.

cxhello avatar cxhello commented on June 13, 2024

@yuluo-yx 我刚刚尝试了设置为false也是一种解决方案。另外我看到了一个issue

#2288

我想知道是不是这个issue中提到的bug导致的主进程未停止,是假死状态。

from spring-cloud-alibaba.

yuluo-yx avatar yuluo-yx commented on June 13, 2024

@yuluo-yx 我刚刚尝试了设置为false也是一种解决方案。另外我看到了一个issue

#2288

我想知道是不是这个issue中提到的bug导致的主进程未停止,是假死状态。

yep, 确实有此问题,使用的 sca 版本是 2.2.6.RELEASE,如 issue 中描述的那样,你可以切换到 2.2.7 版本看下问题是否解决了。🤔🤔

from spring-cloud-alibaba.

cxhello avatar cxhello commented on June 13, 2024

@yuluo-yx 感谢。

from spring-cloud-alibaba.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.