应用 | 版本 |
---|---|
SpringBoot | 3.0.1 |
Nacos | 2.1.1 |
问题
注册服务时,程序中成功输出以下内容:
nacos registry, DEFAULT_GROUP Server1 {ip}:{port} register finished
但在nacos控制台的服务列表中查询不到已注册的服务。
原因
- 检查Nacos版本,建议升级至2.1+ Nacos官方issue
按照官方说法,2.0.X版本作为1.X~2.1的过渡版本,为了平滑升级,是默认开启了双写和升级判断的。
如项目要求,无法对版本进行升级,可使用以下方案关闭双写:
- 临时方案(API关闭):curl -X PUT ‘ip:port/nacos/v1/ns/operator/switches?entry=doubleWriteEnabled&value=false’
- 持久化方案(配置新增):nacos.core.support.upgrade.from.1x=false
- SpringBoot/SpringCloud版本问题
最开始的时候,我使用的nacos依赖版本过低,导致与Springboot版本不匹配,由于我使用的是SpringBoot3+,故提供以下依赖包:
- com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery:2022.0.0.0-RC1
- com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-config:2022.0.0.0-RC1
- org.springframework.boot:spring-boot-starter-web:3.0.4
- Nacos启动模式问题
Nacos有两种启动模式,一种是单机:standalone,一种是集群cluster
- 最开始我用cluster模式启动,但集群内只启动了一个节点,导致选主失败,后续切换为standalone模式注册成功
- 之后搭建cluster模式(一主两从),全部节点服务器除默认的8848端口外,仍需额外开启两个端口9848,9849,因为2+新增了两个grpc端口:
端口 | 与主端口偏移量 | 用途 |
---|---|---|
9848 | 1000 | 客户端grpc请求服务端接口,用于客户端发起连接 |
9849 | 1001 | 服务端grpc请求服务端接口,用于服务间同步 |