1. 问题
在最近的开发中,因为系统为分布式的系统,然后将nacos部署在docker里面,然后通过spring boot程序启动时,无法拉取到配置信息。
2. 分析
- 在配置时,是否因为group或者dataId填写错误,导致拉去不到配置信息
- 命名空间是否设置正确
- 用户名和密码是否正确
- 是否能够通过nacos的8848端口访问后端管理台
3. 排查
以上问题在排查过后,都发现没有问题,因为配置文件是从其他环境直接拷贝过来,并且在其他环境运行正常。所以只能从其他方向查找。
4. 解决问题
通过查询资料,得到以下信息:
4.1 nacos监听端口
nacos在新版本中,采用的是gRPC连接,在nacos启动的时候默认会启动两个端口,8848和9848。这两个端口一个是用作后端控制台管理,一个适用于gRPC链接的端口号。
4.2 docker中如何操作
docker在启动的时候,可以通过-p 8848:8848进行端口映射,这里就需要将9848端口也需要映射出来
4.3 安全策略
如果跑在云服务器上或者有防火墙,则需要将映射在主机上的端口号放开,让对应端口号能够通过服务器IP访问
4.4 程序配置
在spring boot环境中,nacos客户端的启动是不能配置gRPC链接进行配置,而是通过端口偏移量来控制gRPC链接的端口好,默认为1000。也就是说,如果nacos配置的管理台密码为8848,那么gRPC链接的端口号就是9848。 一次类推。
因此,在我们确认了nacos对应服务器端口号之后,可以通过-Dnacos.server.grpc.port.offset=<偏移量数值>来控制偏移量, 通过这种方式推算出gRPC链接端口号。
以上内容来自如何设置nacos客户端连接服务端时使用的grpc端口的默认偏移量. 可以参考官方文档