写在前面
一次偶然的机会,工作中接到了负责建设网关的工作。
经过一段时间的技术调研,在Kong、SpringCloud Gateway等众多各种开源网关中,选择了APISIX作为本次网关建设的基础。
面对部署需求、业务需求以及技术需求的接踵而至。大多数情况下,网上是查询不到什么有用的解决方案的。所幸的是这些问题后面都被解决。
我想将建设过程中,遇到的问题和解决思路记录下来,欢迎大家展开讨论。
前置工作
我选择的APISIX的版本是当时的最新版本2.13
现在已经更新到3.2的版本了
关于APISIX的基本使用方法,在本专题中并不会涉及太多,因为网上已经有不少入门级别的博客
如果有需要的话,可以参考下面的几篇:
APISIX:https://www.jianshu.com/p/19607e0c7005
ETCD:https://zhuanlan.zhihu.com/p/368382262
架构设计
简化版的架构图,我们准备按照如下的设计进行网关层面的部署
主要的功能模块说明:
由于公司的网络策略原因,我们在A区网络与F区网络分别部署了一套主备Nginx
Nginx的作用主要发挥了以下作用:
面向南北向流量和东西向流量,为APISIX集群提供负载均衡。
为APISIX提供了统一标准的接入源,因为在有些老业务场景的项目中,业务系统可能无法抽象出统一的路由匹配规则,这时就需要Nginx转发到APISIX时,统一进行改写;再由APISIX匹配后进行正则转发。
服务级别的IP限流的需求APISIX无法实现,需借由Nginx来实现。
对于第2点和第3点,在后续章节中会展开详述。
其他的组件功能描述如下:
网关:主要用到的功能有:路由匹配、负载均衡、参数动态改写、限流熔断、黑白名单。
日志:负责收集APISIX或者业务代码产生的日志,集中进行展示。
监控:为接入APISIX的服务提供的接口客观的功能。
告警:为接入APISIX的服务提供的异常检测报警功能。
调用链:为接入APISIX的服务提供的链路追踪功能。
未来的扩充
未来可能还会更新认证授权的相关功能,并探究一下自定义插件的开发和使用相关的内容。