Closed huangye123 closed 6 months ago
请提供服务来源和路由配置详情。
1、服务来源,同一台服务器下的Nacos,Higress使用容器host网络模式
2、路由配置,根据前缀/api/libroot/转发到szft-libroot-xiaoyj微服务
"response_flags":"NC"
是“Upstream cluster not found.”的意思(参考文档)。
这里我还有几个问题:
以下几个事件的发生顺序是怎么样的:
- 从零创建并启动 Higress Standalone
- 配置服务来源(如果实例注册到的 Nacos 并不是 Higress Standalone 所使用的那个 Nacos 的话)
- 配置路由
- 启动服务实例并确认实例已注册到 Nacos
- 发送测试请求
- 启动实例并确认实例已注册到 Nacos 后,是否检查过 Higress Console 上服务列表中所显示的服务节点信息?如果有,那么当时的结果是什么?
- 该问题能否完整重现,即清除所有 Higress 配置并重新执行以上操作,能否重现该问题?
1、顺序如下:启动Higress==>配置服务来源==》配置路由==》启动服务实例==》发送测试请求
2、检查服务已经成功注册到Nacos,Higress Console 上服务列表有显示服务节点信息,显示如下【 szft-libroot-xiaoyj.DEFAULT-GROUP.dev.nacos | mcp | 10.181.1.100】,请求报503,重启higress服务后,再次请求成功。
3、上问题能完整重现,全新环境配置后,也是需要重启加载生效。
1、顺序如下:启动Higress==>配置服务来源==》配置路由==》启动服务实例==》发送测试请求
2、检查服务已经成功注册到Nacos,Higress Console 上服务列表有显示服务节点信息,显示如下【 szft-libroot-xiaoyj.DEFAULT-GROUP.dev.nacos | mcp | 10.181.1.100】,请求报503,重启higress服务后,再次请求成功。
3、上问题能完整重现,全新环境配置后,也是需要重启加载生效。
我本地重现了你这个问题,但步骤和你说的似乎并不完全一样。麻烦帮忙看一下我的步骤是否匹配你的场景:
这里我觉得可能导致与你的步骤出现差异的,就是我用的是 Standalone 模式的 Nacos,无法创建一个持久化的服务。这个步骤可以换成创建一个空持久化的服务,配置路由,再启动服务实例,这样就避开了重启服务实例的操作。
1、顺序如下:启动Higress==>配置服务来源==》配置路由==》启动服务实例==》发送测试请求 2、检查服务已经成功注册到Nacos,Higress Console 上服务列表有显示服务节点信息,显示如下【 szft-libroot-xiaoyj.DEFAULT-GROUP.dev.nacos | mcp | 10.181.1.100】,请求报503,重启higress服务后,再次请求成功。 3、上问题能完整重现,全新环境配置后,也是需要重启加载生效。
我本地重现了你这个问题,但步骤和你说的似乎并不完全一样。麻烦帮忙看一下我的步骤是否匹配你的场景:
- 从零创建并启动 Higress Standalone(使用内置 Nacos)
- 单独启动一个 Standalone 模式的 Nacos 实例,并在 Higress Standalone 上添加对应的服务来源
- 启动一个服务,注册到 Nacos
- 在 Higress Console 配置路由
- 验证路由可以正常工作
- 关闭在第 3 步启动的服务,确认 Nacos Console 上的服务列表已经清空
- 重启 Higress Standalone
- 确认 Higress Console 上的服务列表已经不再包含前述服务
- 验证路由已无法正常工作,返回 503,AccessLog 记录 response-flags 为 NC
- 再次启动第 3 步中提到的服务,确认服务信息重新出现在了 Higress Console 上
- 等待 1 分钟,验证路由仍无法正常工作,表现与第 9 步相同
这里我觉得可能导致与你的步骤出现差异的,就是我用的是 Standalone 模式的 Nacos,无法创建一个持久化的服务。这个步骤可以换成创建一个空持久化的服务,配置路由,再启动服务实例,这样就避开了重启服务实例的操作。
基本相同,就是nacos我是独立一个容器部署,不是采用Higress Standalone内置的Nacos,但关键场景是一致的,是higerss对新加入到nacos服务转发报503异常。
请 @johnlanni 一起看一下
直接原因定位了,看上去是个 bug。接下来我看看如何修复。
已确认是 RDS Cache 导致的路由数据未更新问题。后续将由 @johnlanni 跟进修复。
【环境】 1、Higress 1.3.6
【重现】 2、higress启动成功后,新启动一个新微服务,已经注册到nacos,通过网关请求报503,其他服务请求正常 {"authority":"172.16.2.121","bytes_received":"0","bytes_sent":"0","downstream_local_address":"172.16.2.121:80","downstream_remote_address":"10.181.1.100:53802","duration":"0","istio_policy_status":"-","method":"GET","path":"/api/libroot/Contract/test","protocol":"HTTP/1.1","request_id":"e21b61c6-d78f-4c7c-bd59-bf1647a6dcb9","requested_server_name":"-","response_code":"503","response_flags":"NC","route_name":"szft-libroot-xiaoyj","start_time":"2024-04-24T10:40:53.035Z","trace_id":"-","upstream_cluster":"-","upstream_host":"-","upstream_local_address":"-","upstream_service_time":"-","upstream_transport_failure_reason":"-","user_agent":"Apifox/1.0.0 (https://apifox.com)","x_forwarded_for":"10.181.1.100"}
3、任何配置不变动的情况,重启higress,再次请求,恢复正常 {"authority":"172.16.2.121","bytes_received":"0","bytes_sent":"94","downstream_local_address":"172.16.2.121:80","downstream_remote_address":"10.181.1.100:54219","duration":"823","istio_policy_status":"-","method":"GET","path":"/api/libroot/Contract/test","protocol":"HTTP/1.1","request_id":"f77c06ad-2763-48d3-90e8-6ea4a160465d","requested_server_name":"-","response_code":"200","response_flags":"-","route_name":"szft-libroot-xiaoyj","start_time":"2024-04-24T10:44:32.034Z","trace_id":"43b938b8ac336d622abb820d534c4880","upstream_cluster":"outbound|30010||jnpf-szft-libroot-xiaoyj.DEFAULT-GROUP.dev.nacos","upstream_host":"10.181.1.100:30010","upstream_local_address":"172.16.2.121:32952","upstream_service_time":"820","upstream_transport_failure_reason":"-","user_agent":"Apifox/1.0.0 (https://apifox.com)","x_forwarded_for":"10.181.1.100"}