通信链路改造设计文档.md
大纲
项目概述
现状分析
目标
困难点
技术方案
项目概述
现状分析
总控、引擎、插件跨节点通信链路
graph LR
subgraph Sc[总控]
sc
sv[可视化 sv]
installer-manager[引擎安装 manager]
end
subgraph Se[流量引擎]
subgraph Sem[流量引擎 管理节点]
installer-agent[引擎安装 agent]
webserver[Webserver]
admin_dam[admin Dam]
apiserver[Apiserver]
admin_ha[admin HA]
nexus_m[Nexus]
global_plugin_server[global-plugin-server]
end
subgraph Sew[流量引擎 工作节点]
data_dam[data Dam]
nexus_w[Nexus]
envoy[Envoy]
end
subgraph Ses[流量引擎 调度节点]
nexus_s[Nexus]
data_ha[Data HA]
end
end
installer-manager -->|vip/nodeIP:8099|installer-agent
installer-manager -->|vip:6898|admin_ha
sv -->|vip:1234|admin_dam
sv -->|vip:8899|admin_dam
sv -->|vip:8299|webserver
sc -->|vip:8229|webserver
installer-agent -->|nodeIP:8098|installer-manager
data_dam -->|nodeIp:4150|sv
data_ha -->|nodeIp:6443| apiserver
webserver -->|nodeIp:9001|data_dam
webserver -->|nodeIp:8000| nexus_m & nexus_s & nexus_w
envoy -->|vip:7878 7978| global_plugin_server
%%installer-agent -->|vip:6443|apiserver
结论: 可以看出来现有的通信链路有两个不符合设计要求的点 1. 通信建立连接方向为总控端到引擎端 2. 通信链路不规则,各个组件缺乏管制,随意建立链接。
缺点很明显,1 会导致与实际客户部署场景不吻合 2 会导致后期运维困难、系统维护困难、系统开发成本提高等。
目标
改造后总控引擎通信链路(不算引擎内部)
graph LR
subgraph Sc[总控]
sc[sc]
core[core 0.0.0.0:20111]
sv[可视化 sv]
installer-manager[引擎安装 manager]
end
subgraph Se[流量引擎]
subgraph Sem[流量引擎 管理节点]
installer-agent[引擎安装 agent]
webserver[Webserver]
admin_dam[admin Dam]
apiserver[Apiserver]
admin_ha[admin HA]
nexus_m[Nexus]
global_plugin_server[global-plugin-server]
end
subgraph Sew[流量引擎 工作节点]
data_dam[data Dam]
nexus_w[Nexus]
envoy[Envoy]
end
subgraph Ses[流量引擎 调度节点]
nexus_s[Nexus]
end
end
%%installer-manager -->|vip/nodeIP:8099|installer-agent
%%installer-manager -->|vip:6898|admin_ha
%%sv -->|vip:1234|admin_dam
%%sv -->|vip:8899|admin_dam
%%sv -->|vip:8299|webserver
%%sc -->|vip:8229|webserver
sc --> core
webserver --> core
sv --> core
admin_dam ---> core
installer-manager --> core
admin_ha ---> core
installer-agent ---> core
installer-manager -->|nodeIp:22 |Se
%%installer-agent -->|nodeIP:8098|installer-manager
%%data_dam -->|nodeIp:4150|sv
%%data_dam -->|nodeIp:9001|webserver
%%webserver -->|nodeIp:8000| nexus_m & nexus_s & nexus_w
%%envoy -->|vip:7878 7978| global_plugin_server
%%installer-agent -->|vip:6443|apiserver
改造后总控引擎通信链路(算引擎内部)
graph LR
subgraph Sc[总控]
sc[sc]
core[core 0.0.0.0:20111]
sv[可视化 sv]
installer-manager[引擎安装 manager]
end
subgraph Se[流量引擎]
subgraph Sem[流量引擎 管理节点]
installer-agent[引擎安装 agent]
webserver[Webserver]
admin_dam[admin Dam]
apiserver[Apiserver]
admin_ha[admin HA]
nexus_m[Nexus]
global_plugin_server[global-plugin-server]
end
subgraph Sew[流量引擎 工作节点]
data_dam[data Dam]
nexus_w[Nexus]
envoy[Envoy]
end
subgraph Ses[流量引擎 调度节点]
nexus_s[Nexus]
data_ha[Data HA]
end
end
%%installer-manager -->|vip/nodeIP:8099|installer-agent
%%installer-manager -->|vip:6898|admin_ha
%%sv -->|vip:1234|admin_dam
%%sv -->|vip:8899|admin_dam
%%sv -->|vip:8299|webserver
%%sc -->|vip:8229|webserver
sc --> core
webserver --> core
sv --> core
admin_dam ---> core
installer-manager --> core
admin_ha ---> core
installer-agent ---> core
data_ha -->|nodeIp:6443| apiserver
%%installer-agent -->|nodeIP:8098|installer-manager
%%data_dam -->|nodeIp:4150|sv
%%data_dam -->|nodeIp:9001|webserver
webserver -->|nodeIp:8000| nexus_m & nexus_s & nexus_w
envoy -->|vip:7878 7978| global_plugin_server
installer-manager -->|:22 |Se
%%installer-agent -->|vip:6443|apiserver
业务
建立连接反转
(本次改动不涉及 可视化数据传输的流,这是考虑到可视化的数据流过大,经过一次转发消耗的资源比较大)
在 core 参与的框架中,完成组件之间通信有两步:
- 与 core 建立通信
- 发送/接收、处理请求
图表标识
- 红线表示需要完成 1 2 步编码
- 紫线表示不需要实现
- 橙色表示需要实现 2 步
sc 到 webserver
graph LR
subgraph Sc[总控]
subgraph ScApi[总控API]
client[SCClient]
subgraph Client
conn_ctx[引擎连接管理]
gw_obj[引擎服务搭建]
node_ctx[引擎节点管理]
auth_ctx[引擎授权管理]
ha_ctx[调度策略管理]
end
end
subgraph Core
core_conn_ctx[各组件连接上下文管理]
subgraph Stream
Agent
end
end
end
subgraph Se
router[Webserver]
subgraph Router
gw[网关、虚拟服务对象等接口]
node_manage[引擎节点状态接口]
auth_manage[引擎授权管理接口]
ha_manage[调度策略管理接口]
end
end
router --> Agent
client --> Agent
router --> Router
client --> Client & core_conn_ctx
linkStyle 0,1,2,3,4 stroke:red,stroke-width:8px,color:black;
sv 到 webserver
graph LR
subgraph Sc[总控]
subgraph ScApi[总控API]
client[SVClient]
subgraph Client
conn_ctx[引擎连接管理]
gw_obj[引擎服务搭建]
node_ctx[引擎节点管理]
auth_ctx[引擎授权管理]
ha_ctx[调度策略管理]
end
end
subgraph Core
core_conn_ctx[各组件连接上下文管理]
subgraph Stream
Agent
end
end
end
subgraph Se
router[Webserver]
subgraph Router
gw[网关、虚拟服务对象等接口]
node_manage[引擎节点状态接口]
auth_manage[引擎授权管理接口]
ha_manage[调度策略管理接口]
end
end
router --> Agent
client --> Agent
router --> Router
client --> Client & core_conn_ctx
linkStyle 1,3,4 stroke:red,stroke-width:8px,color:black;
sv 到 admin_dam
graph LR
subgraph Sc[总控]
subgraph ScApi[总控API]
client[SVClient]
subgraph Client
conn_ctx[引擎连接管理]
gw_obj[引擎服务搭建]
node_ctx[引擎节点管理]
auth_ctx[引擎授权管理]
ha_ctx[调度策略管理]
end
end
subgraph Core
core_conn_ctx[各组件连接上下文管理]
subgraph Stream
Agent
end
end
end
subgraph Se
router[adminDam]
subgraph Router
gw[网关、虚拟服务对象等接口]
node_manage[引擎节点状态接口]
auth_manage[引擎授权管理接口]
ha_manage[调度策略管理接口]
end
end
router --> Agent
client --> Agent
router --> Router
client --> Client & core_conn_ctx
linkStyle 1,3,4 stroke:red,stroke-width:8px,color:black;
installer-manager 到 admin_ha
graph LR
subgraph Sc[总控]
subgraph InstallerApi[InstallerAPI]
client[InstallerManagerClient]
subgraph Client
conn_ctx[提供dataWorker的节点状态管理]
gw_obj[提供dataHA节点删除能力]
node_ctx[提供工作节点删除能力]
auth_ctx[提供虚拟服务器的算法信息]
ha_ctx[提供LVS的算法列表]
system_ctx[更新真实服务器的信息]
end
end
subgraph Core
core_conn_ctx[各组件连接上下文管理]
subgraph Stream
Agent
end
end
end
subgraph Se
router[admin_ha]
subgraph Router
gw[dataWorker的节点状态管理等接口]
node_manage[提供dataHA节点删除能力接口]
auth_manage[工作节点删除能力接口]
ha_manage[调度策略管理接口]
manage1[虚拟服务器的算法信息接口]
manage2[LVS的算法列表接口]
manage3[更新真实服务器的信息接口]
end
end
router --> Agent
client --> Agent
router --> Router
client --> Client & core_conn_ctx
linkStyle 0,1,2,3,4 stroke:red,stroke-width:8px,color:black;
installer-manager 到 installer-agent
graph LR
subgraph Sc[总控]
subgraph InstallerApi[InstallerManagerAPI]
client[InstallerManagerClient]
subgraph Client
conn_ctx[引擎安装指令发送]
end
end
subgraph Core
core_conn_ctx[各组件连接上下文管理]
subgraph Stream
Agent
end
end
end
subgraph Se
router[installer-agent]
subgraph Router
gw[引擎安装指令发送等接口]
end
end
router --> Agent
client --> Agent
router --> Router
client --> Client & core_conn_ctx
linkStyle 1,3,4 stroke:red,stroke-width:8px,color:black;
linkStyle 0,2 stroke:orange,stroke-width:8px,color:black;
通信链路规整
todo
通信链路改造设计文档.md
https://abrance.github.io/2024/01/25/project/sr/通信链路改造/通信链路改造设计文档/