如何把 Apache APISIX 配置为 Decoupled 模式分离控制面与数据面?

发布时间:2026/9/15 12:02:28

如何把 Apache APISIX 配置为 Decoupled 模式分离控制面与数据面? 如何把 Apache APISIX 配置为 Decoupled 模式分离控制面与数据面【免费下载链接】apisixThe Cloud-Native API Gateway项目地址: https://gitcode.com/GitHub_Trending/ap/apisix在 Apache APISIX 3.0.0 中引入了多种部署模式其中 Decoupled 模式把网关拆成两类独立实例一台control plane控制面只负责 Admin API另一台data plane数据面只负责处理用户请求。两者通过同一个 etcd 配置中心共享路由配置——控制面写入配置数据面读取配置。本文基于项目文档 deployment-modes.md 和仓库内的 CLI 测试脚本说明如何分别配置这两种实例并给出仓库自身使用的验证方法。前置条件按文档给出的模式说明Decoupled 模式要求APISIX 版本为 3.0.0 及以上。升级指南 upgrade-guide-from-2.15.x-to-3.0.0.md 明确写道3.0.0 also introduces multiple deployment modes其中 Decoupled 模式的描述是 the data plane and the control plane are separated. You can deploy an instance of APISIX either as a control plane or a data plane。一个可访问的 etcd 集群作为两种实例共同的配置中心本文主路径使用config_provider: etcd。两个独立的 APISIX 安装实例可以是两台机器或两个目录分别修改各自的conf/config.yaml。注意conf/config.yaml.example文件头部提示 DO NOT MODIFY DEFAULT CONFIGURATIONS IN THIS FILE. Keep the custom configurations inconf/config.yaml所以只编辑conf/config.yaml不要改 example 文件。配置控制面实例控制面的职责来自文档原文The instance of APISIX deployed as the control plane will:Listen on port9180and handle Admin API requests.在控制面实例的conf/config.yaml中加入以下配置取自 deployment-modes.md 的 Decoupled 章节deployment: role: control_plane role_control_plane: config_provider: etcd etcd: host: - https://etcd_IP:etcd_Port prefix: /apisix timeout: 30 #END说明role: control_plane声明该实例是控制面role_control_plane.config_provider: etcd指定配置中心为 etcd。etcd_IP:etcd_Port需要替换为你自己的 etcd 地址和端口。文档示例用https://如果你的 etcd 未启用 TLS可用http://文档中 Traditional 模式示例即使用http://${etcd_IP}:${etcd_Port}。控制面的 Admin API 监听端口由deployment.admin.admin_listen控制config.yaml.example 中的默认值是port: 9180deployment.admin.admin_key中配置了 Admin API 的密钥请求时需要用X-API-KEY头携带。配置数据面实例数据面的职责是处理用户请求文档原文数据面实例 Once the service is started, it will handle the user requests。在其conf/config.yaml中配置deployment: role: data_plane role_data_plane: config_provider: etcd etcd: host: - https://etcd_IP:etcd_Port prefix: /apisix timeout: 30 #END仓库中的测试脚本 test_deployment_data_plane.sh 使用了同样的结构deployment下为role: data_planerole_data_plane.config_provider: etcdetcd连接段。关键点两台实例必须指向同一个 etcd 集群、同一个 prefix/apisix这样控制面写入的路由配置才能被数据面读到。默认情况下数据面监听9080端口处理用户请求apisix.node_listen的默认值见 config.yaml.example。另外config.yaml.example 中role_data_plane.config_provider的注释表明它支持etcd、xds或yaml三种取值其中yaml对应的是 Standalone 模式不走 etcd本文不展开。启动两种实例在 APISIX 安装目录下用 Make 入口启动和停止仓库的 CLI 测试脚本即采用这一方式make run停止则使用make stop先启动控制面再启动数据面即可。两种角色都是 APISIX 实例本身无需额外进程。验证控制面Admin API 可用、不代理请求仓库测试脚本 test_deployment_control_plane.sh 的验证逻辑可以直接复用。admin_key取自conf/config.yaml中deployment.admin.admin_key的第一个 key 值# 检查 Admin API期望返回 HTTP 200 curl -o /dev/null -s -w %{http_code} \ http://127.0.0.1:9180/apisix/admin/routes \ -H X-API-KEY: admin_key如果输出是200说明控制面已启用 Admin API测试脚本断言 control_plane should enable Admin API。控制面不应该代理业务请求。测试脚本向9180端口发送一个普通请求并期望得到404# 期望返回 404说明请求代理已禁用 curl -o /dev/null -s -w %{http_code} http://127.0.0.1:9180/c -H X-API-KEY: admin_key通过控制面创建路由由数据面生效控制面配置就绪后用 Admin API 创建路由。测试脚本中的示例请求如下文档示例httpbin.org:80为测试用的上游地址可替换为你自己的上游curl -i http://127.0.0.1:9180/apisix/admin/routes/1 \ -H X-API-KEY: admin_key \ -X PUT \ -d { upstream: { nodes: { httpbin.org:80: 1 }, type: roundrobin }, uri: /* }写入成功后该路由进入 etcd数据面实例通过config_provider: etcd从同一 etcd 读取配置之后用户请求经数据面9080端口进入并按此路由转发。验证数据面不启用 Admin API、不写 etcd数据面实例启动后用仓库测试脚本 test_deployment_data_plane.sh 中的两项检查确认行为# 数据面不应启用 Admin API期望返回 404 curl -o /dev/null -s -w %{http_code} \ http://127.0.0.1:9080/apisix/admin/routes \ -H X-API-KEY: admin_key测试脚本断言 data_plane should not enable Admin API即9080上的 Admin API 路径返回404。第二项检查确认数据面是只读配置消费者的。测试脚本先清空 etcdetcdctl del / --prefix会删除该 etcd 中所有数据仅在专用测试集群上执行启动数据面后执行etcdctl get / --prefix | wc -l期望输出0即 data_plane does not write data to etcd。这条命令依赖本机已安装etcdctl且能访问该 etcd。限制与注意事项etcd TLS 证书默认校验数据面默认校验 etcd 的 TLS 证书。测试脚本中当 etcd 使用https://且未配置可信证书时make run会失败日志包含failed to load the configuration: https://127.0.0.1:12379: certificate verify failed。如果你的 etcd 是自签名证书需要按 etcd TLS 配置提供cert/key或在测试环境将deployment.etcd.tls.verify设为false测试脚本 test_deployment_data_plane.sh 即采用此方式。配置来源是 etcdDecoupled 模式下数据面不直接保存业务配置路由、插件等全部经由控制面的 Admin API 写入 etcd 生效数据面本身不提供 Admin API也无法在本地修改配置。端口冲突控制面与数据面是独立实例admin_listen默认9180与node_listen默认9080分别属于各自实例同一台机器上部署多个实例时需自行避开端口冲突。完成以上配置与验证后你就得到了一组分离的 APISIX 部署控制面在9180管理配置数据面在9080代理流量两者通过 etcd 保持配置同步。【免费下载链接】apisixThe Cloud-Native API Gateway项目地址: https://gitcode.com/GitHub_Trending/ap/apisix创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/15 11:57:27

Chrome Manifest V3迁移指南:安全、性能与开发范式重构

1. 这不是一次普通更新:Manifest V2下架背后的架构级重构如果你最近打开chrome://extensions/页面,发现曾经熟悉的“开发者模式”开关旁边多了一行灰色小字——“Manifest V2 扩展将在未来版本中被禁用”,或者更直接地,你试图拖入…

2026/9/15 12:12:29

从GC算法到垃圾回收器:JVM内存管理核心解析

Java语言与虚拟机:GC算法与垃圾回收器先聊点实际的。不管是校招刚入门还是大厂面试已经背到烂熟,Java开发者总会撞上一个绕不开的名词——GC,也就是垃圾回收。工作几年后你可能会发现,线上服务频繁Full GC、接口突然卡顿几十秒、内…

2026/9/15 12:12:29

LFM雷达回波仿真:匹配滤波与多目标脉冲压缩参数设计

简介:面向雷达信号处理与MATLAB仿真的学习者,这套压缩包围绕LFM线性调频信号与脉冲压缩雷达,实现了多目标回波信号的完整仿真,适合课程设计、科研入门以及需要快速搭建雷达回波模型的工程人员。包体内共2个文件:1个MAT…

2026/9/15 12:12:29

启英泰伦离线语音固件:Excel配置全流程解析

1. 这不是“开发”,是把语音识别能力像填表一样装进硬件里启英泰伦(ChipInn)的离线语音方案,业内常被称作“Excel驱动型固件开发”,这个说法乍听有点玄,但实测下来真不是营销话术。我带过三支嵌入式团队做过…

2026/9/15 12:12:29

数字贸易限制指数数据集解析与应用实践

1. 项目概述:数字贸易限制指数数据集的价值与应用这个数据集记录了2014至2024年间全球数字贸易限制情况的核心指标,特别聚焦于基础设施完备度和电子交易成熟度两大维度。作为数字经济发展的重要风向标,这类数据对政策研究者、跨国企业战略部门…

2026/9/15 12:12:29

永磁同步电机参数辨识的粒子群优化算法应用

1. 永磁同步电机参数辨识的工程挑战在电机控制领域,永磁同步电机(PMSM)因其高功率密度、高效率等优势,已成为工业驱动和新能源汽车的核心部件。但实际应用中,电机参数的准确获取一直是困扰工程师的难题。传统实验室测量方法需要拆解电机&…

2026/9/15 4:54:30

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/15 0:01:16

AI英语单词APP开发:自适应学习算法与移动端优化实践

1. 项目概述 作为一名在移动应用开发领域摸爬滚打多年的老手,我最近完成了一个AI英语单词APP的开发项目。这个项目将传统单词记忆方法与现代AI技术相结合,打造了一款能够智能适应不同用户学习习惯的英语学习工具。 市面上大多数单词APP都存在一个通病&a…

2026/9/15 0:01:16

Flutter与OpenHarmony结合开发手语学习APP实战

1. 项目背景与核心价值作为一名同时接触过Flutter和OpenHarmony的开发者,最近我完成了一个基于Flutter for OpenHarmony的手语学习APP实战项目。这个项目最大的特点在于实现了跨平台框架与国产操作系统深度结合的创新实践——用Flutter开发的应用能完美运行在OpenHa…

2026/9/15 0:01:16

六个月成为机器人工程师:从ROS2到SLAM的实战路径

1. 六个月的紧迫感从哪来:先搞清楚你要成为哪种机器人工程师说实话,六个月的期限并不是一个宽松的时间线。市面上任何一本正经的机器人学教材都超过五百页,ROS2的官方文档可以翻到你怀疑人生,再加上ABB、KUKA这些工业机器人厂家动…

2026/9/14 11:59:31

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/14 13:53:59

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/15 11:42:23

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码