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

优化API服务依赖项,确保在依赖未正常启动的情况下也可以提供有限服务 #1820

Closed
Tracked by #1805
yangkaa opened this issue Dec 29, 2023 · 1 comment · Fixed by #1833
Closed
Tracked by #1805
Assignees
Milestone

Comments

@yangkaa
Copy link
Collaborator

yangkaa commented Dec 29, 2023

目的:

当前用户在安装之后,重启服务器或重启容器,经常性的会遇到集群通信异常的问题。如:#1766 #1294 因此为了解决用户遇到集群通信异常时不会排查或难以排查的问题。需要尽可能减少API服务的依赖,确保在K8s正常的情况下,可以对外提供有限服务。

现有问题分析:

当前根据产品安装方式不同,控制台与集群的通信使用的通信方式也不同。

一键安装:一键安装主要通过K8s Service 与集群端通信,与网关服务、防火墙无关,因此它主要依赖 rbd-api 服务正常工作,但 rbd-api 正常工作依赖于 rbd-monitor、etcd、db、本地存储等四方面。因此主要需要排查导致 api 服务无法正常工作的原因。目前已发现问题:
基于主机安装:基于主机安装主要通过rbd-gateway访问到rbd-api。主要依赖于rbd-gateway、和 rbd-api正常工作。主要考虑rbd-gateway 、rbd-api是否正常运行。端口是否被防火墙阻止等问题。
Helm安装:Helm安装与集群通信通过K8s Service 通信,依赖于 CoreDns 解析、rbd-api服务正常工作,与一键安装类似。

问题总结:

基础设施:K8s可用
依赖服务:rbd-monitor、etcd、db、存储可用
Region服务:rbd-api可用
网络服务:CoreDNS、rbd-gateway服务可用、防火墙规则

解决方案:

对于明确的问题且我们可以掌控的问题,直接进行解决。

已明确的问题:

一键安装的在强制重启机器后api无法连接到 etcd ,导致api无法启动。该问题是k3s dns无法解析 rbd-etcd 地址导致的,etcd 实际可用。可以考虑在一键安装的版本中,api使用 hostNetwork 模式。【需要验证service不通时,用户业务是否可用?】

对于不明确的问题:

Api 可以通过减少依赖的方式,进行服务降级。即在所有依赖都无法启动的情况下,api服务可以进行基本的通信,和保证部分接口可以正常使用,能把问题对外暴露。存储考虑有其他本地存储的方案,能直接替换。例如OpenEBS、localpath等
这样当依赖服务不正常时,只会影响使用到这些依赖的地方,而不是整个平台不可用。

@Issues-translate-bot
Copy link

Bot detected the issue body's language is not English, translate it automatically. 👯👭🏻🧑‍🤝‍🧑👫🧑🏿‍🤝‍🧑🏻👩🏾‍🤝‍👨🏿👬🏿


Title: Optimize API service dependencies to ensure that limited services can be provided even if dependencies are not started normally.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Test
Development

Successfully merging a pull request may close this issue.

3 participants