流量引擎节点管理功能方案.md
概述
流量引擎是一个集群组成的具备流量转发 流量监控 的逻辑组件.
1.6 之前, 流量引擎分为三种逻辑组件: 管理节点 调度节点 工作节点, 管理节点 调度节点 工作节点同样由多台机器集群组成.
在 1.6 后, 流量引擎重新定义节点概念, 将节点定义为机器, 而管理 调度 工作 的职能定义为服务, 所以一个流量引擎集群现在的描述可能为: 该流量引擎有 3 台节点, 节点 A 中部署了管理 调度 服务, 节点 B C 中只部署了 工作 服务.
产品需求
此需求重新定义了引擎节点的概念,并对引擎节点管理进行了重新设计。
主要需求:
- 节点列表:
- 节点新增: 为已有流量引擎新增节点, 可以批量添加多台, 如果失败则停止, 已经安装成功的节点不卸载
- 节点详情
- 节点编辑(???)
- 节点删除(暂时不做)
- 节点替换: 将对已有节点做替换
- 节点状态: 点击查看节点状态,跳转『系统管理-运行状态』页面,并将当前引擎、当前节点的数据查询出来
设计
节点新增功能实现流程图
graph LR
a[数据库操作]
b[发布任务]
c[返回任务 ID]
d("AddSENodes(req)")
e("AddMemberIntoCluster(newNode, clusterInfo)")
f(更新任务状态)
a--->b--->c
b-.->|异步任务|d-->e
e -->|循环| e
e --> f
AddSENodes 实现
- 查询前面 cluster Info
- 遍历要添加的 Nodes , 为每个 Node 调用 AddMemberInfoCluster
AddMemberInfoCluster 实现
- ssh 连接 node
- 组织 InstallConfigV1
- 上传 SE 包, 并对 SE 执行 able 安装程序
- 执行成功, 则对 前面 cluster 每个节点执行 able member add newNode
able install
几乎跟引擎节点安装相同, 但是需要新增 –is-cluster-exist 参数, 标记是加入引擎集群, 在安装中, 会设置 IsClusterExist 的值为 true, 对这个值敏感的程序在自己的 install 程序中可以获取到这个值, 来决定一些特别的操作
able member add newNode
执行已安装节点的 member_add action , 如果没有定义这个 action 的组件不执行.
在执行 member_add action 时, 会用环境变量表示 newNodeInfo ,
流量引擎节点管理功能方案.md
https://abrance.github.io/2024/08/19/project/sr/流量引擎节点管理功能方案/