通信链路改造设计文档.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 参与的框架中,完成组件之间通信有两步:

  1. 与 core 建立通信
  2. 发送/接收、处理请求

图表标识

  • 红线表示需要完成 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/通信链路改造/通信链路改造设计文档/
Author
xiaoy
Posted on
January 25, 2024
Licensed under