# oc_contributor_zyq **Repository Path**: maxorao/occontributor ## Basic Information - **Project Name**: oc_contributor_zyq - **Description**: 【实战任务】在 OpenCloudOS Stream 23 / OpenCloudOS 9 上开发配置管理工具 - **Primary Language**: Rust - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-09-04 - **Last Updated**: 2024-09-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # oc_contributor_zyq ## 介绍 【实战任务】在 OpenCloudOS Stream 23 / OpenCloudOS 9 上开发配置管理工具,当前为初稿 ## 架构设计 采用rust编写的开源rpc框架来作为底层通信协议。 采用发布-订阅模式来处理master节点和worker节点之间的配置同步。 各节点均有若干个主题可供其他节点订阅,例如每个节点都有一个节点当前健康状态,其他节点订阅该主题来周期性获得该节点存活状态。发布者向订阅者发送该主题的消息可以是周期性的,也可以是当该主题发生变更时进行通知。 通过发布-订阅模式,master节点可以监听worker节点当前的生存状态,配置情况等内容,worker节点可以监听master节点对worker节点的期望。就像kubernetes中spec和status的区别一样,集群的配置应该是当前集群的理想状态,各个节点获得该配置后应该尽力而为,将当前的状态向理想状态靠拢。 ### master节点 在master节点上,通过创建git配置仓库来初始化配置,也就是说,每一个集群配置对应一个git仓库,每当用户进行一次git commit操作后,各个work节点从master节点获得的配置就会相应的发生变更。 不同于kubernetes,本工具需要对具体的某个节点进行配置,而不是对pod进行配置,因此需要对每个节点机器有一个单独的配置文件,例如machine1.yaml等。 master节点通过对外暴露api-server来进行交互,用户在master上进行配置以及worker节点查询其节点配置都需要经过api-server的接口。 ### worker节点 worker节点的主要工作是跟踪master节点对本节点的配置,将本节点的状态尽力调整到与配置相同,上传本节点配置等。 上述工作需要分到两个进程来进行,也就是一个进程接收来自master的配置并上传本节点的状态,另一个进程周期性查询本节点的状态,更新到文件中,并根据来自master的配置来控制本节点的状态。