Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nacos客户端和服务端在自定义grpc端口偏移上存在设计不一致 #12935

Open
VictorZhang-1928 opened this issue Dec 9, 2024 · 6 comments
Labels
kind/question Category issues related to questions or problems

Comments

@VictorZhang-1928
Copy link

过程:

  • 我这里需要在单台机器上容器化部署多种中间件服务,用于满足开发、验证等需求,因此做了端口上的规划处理,调整了默认端口。
  • 因部分服务内外部端口不一致会导致一些意外的问题,因此所有能够支持通过配置调整端口的都没有使用端口转发的方案。
  • 查询到Nacos的grpc端口是通过调整偏移的方案配置之后,客户端与服务端均增加了nacos.server.grpc.port.offset变量。
  • 服务端启动成功且正常访问,但客户端始终无法注册,检查发现服务端未监听指定端口,检查配置未发现问题。
  • 使用nacos.server.grpc.port.offset在源码中搜索未发现问题。
  • 使用rpcPortOffset在源码中搜索发现服务端GrpcClusterServerGrpcSdkServer使用常量返回。
  • 在Issue中继续搜索相关问题,终于发现此问题曾经也提出过,但被认为无需修改。

问题:

  • 客户端访问的端口与服务端监听的端口在没有网络转换的前提下应当保持一致,所以相关的配置也应当是匹配的。Nacos客户端因有必要的应用场景做了调整,但是Nacos服务端被认为无需增加复杂度而不做修改,却事实上导致了配置的不一致性,增加了学习成本,也增加了复杂度。

建议(二选一):

  • 在文档及专家问答中明确服务端与客户端配置存在不一致性,在nacos.server.grpc.port.offset出现的地方标明服务端不支持此变量,而不是模糊的说会根据预设的偏移量自动计算确保服务端通过VIP/SLB等网络设备暴露,并正确配置了TCP层的端口映射规则以适应客户端的端口变更
  • 在服务端支持nacos.server.grpc.port.offset变量,与客户端保持一致。
@YunWZ
Copy link
Contributor

YunWZ commented Dec 11, 2024

nacos.server.grpc.port.offset 设置的是端口的偏移量,而不是端口的值,具体的GPRC端口是server.port+offset的值。
例如,默认的服务端口是8848,因此grpc的端口是9848,nacos-server间的grpc端口则是9849

@YunWZ
Copy link
Contributor

YunWZ commented Dec 11, 2024

BTW,客户端访问时,配置的应该是nacos-server被暴露出来的端口,而不是nacos-server容器内所监听端口。

@KomachiSion
Copy link
Collaborator

server不应该随意修改偏移量的值, 建议通过vip、slb等网络组建,屏蔽后端引擎实际的端口,并仅暴露客户端访问端口。

client通过offset偏移量+ 配置main端口配置, 任意适配vip、slb等网络的端口转发映射。

@KomachiSion
Copy link
Collaborator

@KomachiSion KomachiSion added the kind/question Category issues related to questions or problems label Dec 12, 2024
@VictorZhang-1928
Copy link
Author

server不应该随意修改偏移量的值, 建议通过vip、slb等网络组建,屏蔽后端引擎实际的端口,并仅暴露客户端访问端口。

client通过offset偏移量+ 配置main端口配置, 任意适配vip、slb等网络的端口转发映射。

所以建议在文档及专家问答中明确服务端与客户端配置存在不一致性,明确说明服务端不支持通过nacos.server.grpc.port.offset配置偏移量,而必须通过vip、slb等网络组件配置端口转发。而不是在介绍nacos.server.grpc.port.offset配置时,对服务端的不支持闭口不提。

@KomachiSion
Copy link
Collaborator

欢迎贡献文档内容

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/question Category issues related to questions or problems
Projects
None yet
Development

No branches or pull requests

3 participants