网易数帆基于 Envoy 的云原生网关实践

本文根据 InfoQ 公开课《如何基于开源Envoy,构建高性能云原生微服务网关》整理,有删减。

简介:Envoy 是由 Lyft 开源的高性能网络代理软件。相比于 Nginx、HAProxy 等经典代理软件,Envoy 具备丰富的可观察性和灵活的可扩展性,并且引入了基于 xDS API 的动态配置方案。目前,Envoy 被广泛应用于新兴微服务网关与服务网格之中作为核心数据面。而本次分享将从网易数帆实践出发,介绍网易数帆是如何基于开源 Envoy 构建高性能、易扩展、可观察的云原生微服务网关函谷(Hango)的。

函谷开源地址:github.com/hango-io/hango-gateway

1 云原生微服务网关

微服务网关是微服务架构中最为核心和关键的组件之一,负责微服务集群中服务 API 统一暴露和出入口流量管理。举一个具体的例子,在微服务集群中可能同时存在上百个微服务,其中有些是内部依赖,有些则需要对外暴露 API,为外部客户端提供服务。如果让各个微服务自身负责 API 的暴露,那一个微服务集群可能会同时有几十个流量出入口,大大提高流量安全和流量管理的成本,同时对客户端也非常不友好。所以引入一个集中组件来统一控制 API 暴露,并负责流量的均衡和分发就是一个自然而然的选择了(事实上,服务暴露还涉及一个网络隔离的问题,不过本文主要介绍的是七层 API 网关,网络问题暂且忽略)。

相比于传统的反向代理,微服务网关有了一个职能的增强。传统的反向代理更加注重基础的路由转发和负载均衡,而 API 网关除此以外,更多的还要关注流量的治理能力和流量的观察能力。

a3be693711311099201cf904f3e11f0e.png

在构建函谷网关之前,集团内部实际上已经有了一些其他的 API 网关方案。比如网易传媒、严选使用的是 Kong,还有一些业务使用基于 Spring Gateway 的技术方案。但是这些 API 网关都有一些局限性,比如它们的容器化支撑能力,再比如它们的性能,又或者它们的治理能力。网易数帆最初的动机就是准备构建一个具备丰富能力、覆盖多种场景需求并兼具高性能的新 API 网关统一和替代网易集团内部的这些技术方案。

e2ba5ccd2e828cc9021452f5e0f064c7.png


2 如何做好微服务网关?

在对微服务网关本身有了基础的了解之后。第二个问题就是,如何才能做好一个微服务网关呢?只有先明确目标,确立一个好的微服务网关需要解决的问题,才能为后续的技术选型、以及具体实践方向提供指导。在梳理了集团内已有的各种网关解决方案以及各个业务方的需求和场景之后,团队总结了一下六条微服务网关需要具备的关键特性(一家之言,仅作参考)。

  • 高性能:作为集群流量入口,性能是必须保证的。包括吞吐量和延迟,都是衡量一个高性能网关的关键要素。作为一个通用的解决方案,网易数帆的轻舟微服务网关设计之初,就希望尽可能覆盖未来更多的场景和业务方需求。所以性能自然要求越高越好,要满足对性能要求最苛刻的那一个业务方的需求。但是,如果各位希望自研微服务网关,那所谓高性能,不一定是吞吐量和延迟达到某个固定标准,只要满足业

<think>嗯,用户想了解如何使用开源项目构建公有云,需要最佳实践、教程和工具。首先,我得理清楚构建公有云的关键组件。通常公有云需要计算、存储、网络、身份认证、监控这些基础服务。然后,每个部分对应的开源项目有哪些呢?计算方面,OpenStack的Nova组件是常用的,或者Kubernetes做容器编排。存储的话,Ceph是个不错的选择,支持对象、块和文件存储。网络方面,OpenStack Neutron或者Calico、Flannel这些CNI插件。身份认证可以用Keycloak或者OpenStack Keystone。监控方面,Prometheus和Grafana组合很常见。 接下来,用户可能需要具体的步骤,比如如何选择和集成这些工具。比如,计算虚拟化可以选择OpenStack,但如果是云原生环境,可能更适合Kubernetes加KubeVirt。存储部分,Ceph的部署需要规划集群,网络配置要考虑多租户隔离。身份认证要集成单点登录,监控则需要覆盖各个层面。 然后要考虑工具链,像Terraform和Ansible这样的基础设施即代码工具,能帮助自动化部署。CI/CD部分,Jenkins或者GitLab CI可以自动化测试和部署。安全性方面,可能提到Harbor作为镜像仓库,Vault管理密钥,Snort或Suricata做入侵检测。 教程资源方面,OpenStack和Kubernetes官方文档是基础,还有社区的最佳实践指南。参考案例的话,像网易数帆的Hango网关基于Envoy,说明开源项目在云原生中的应用。阿里云ECS的最佳实践也提到使用开源蜜罐系统,可能和云安全相关。 用户可能还关心如何保证高可用和扩展性,比如多区域部署、负载均衡、自动化扩缩容。成本优化方面,混合云架构和资源调度策略,比如使用Kubernetes的Cluster Autoscaler。 需要确保回答结构清晰,分步骤说明,并推荐具体工具和教程。同时,根据提供的引用,Hango、Jenkins、ECS实践、Docker可视化工具、OCR工具这些可能相关,但用户的问题是关于构建公有云,所以重点在OpenStack、Kubernetes、Ceph等,但可以提到云原生和自动化工具如Jenkins,以及安全方面的开源工具如Hfish蜜罐。 最后,生成相关问题时要围绕用户可能的后续疑问,比如具体组件的部署、集成挑战、成本优化、安全方案、混合云管理、监控日志方案等。</think>### 使用开源项目构建公有云的最佳实践与工具指南 #### 一、核心架构与组件选择 构建公有云需涵盖以下核心模块: 1. **计算虚拟化**:OpenStack Nova、Kubernetes(容器编排) 2. **存储服务**:Ceph(分布式存储)、MinIO(对象存储) 3. **网络管理**:OpenStack Neutron、Calico/Flannel(容器网络) 4. **身份认证**:Keycloak、OpenStack Keystone 5. **监控与日志**:Prometheus+Grafana、Elastic Stack 示例架构: ``` 用户请求 -> 负载均衡(HAProxy) -> 计算集群(Kubernetes/OpenStack) -> 存储集群(Ceph) ``` #### 二、关键实施步骤 1. **基础设施自动化** - 使用 **Terraform** 定义云资源模板,配合 **Ansible** 完成配置管理 - 部署 OpenStack 时建议采用 Kolla-Ansible 容器化部署方案[^3] ```bash # OpenStack 最小化部署示例 kolla-ansible deploy -i all-in-one ``` 2. **容器化与云原生** - 基于 Kubernetes 构建容器服务,集成 **KubeVirt** 实现虚拟机管理 - 参考网易数帆基于 Envoy 构建 API 网关的经验[^1],使用服务网格(如 Istio)增强微服务治理 3. **存储系统建设** - Ceph 集群部署需规划至少 3 节点,使用 **CRUSH 算法**确保数据分布 ```bash # Ceph 集群初始化命令 ceph-deploy new mon-node1 ceph-deploy install admin-node ``` 4. **安全体系构建** - 集成开源蜜罐系统如 **HFish**[^3] 实现主动防御 - 使用 **Vault** 管理密钥,**OPA** 实现策略即代码 #### 三、推荐工具链 | 分类 | 工具推荐 | 特点 | |---------------|-----------------------------------|-----------------------------------| | 基础设施即代码| Terraform/Pulumi | 多云资源统一管理 | | CI/CD | Jenkins[^2]/ArgoCD | 自动化流水线建设 | | 网络观测 | SkyWalking/Envoy Access Log | 微服务链路追踪[^1] | | 镜像管理 | Harbor | 企业级容器镜像仓库 | #### 四、学习资源与参考案例 1. **OpenStack 官方部署指南**(需实践多节点部署场景) 2. **Kubernetes 生产级实践手册**(重点关注 Ingress 与存储卷配置) 3. 阿里云 ECS 最佳实践中提到的混合云架构设计思路[^3] 4. Docker 可视化工具 Portainer 的集群管理方案[^4] #### 五、成本优化建议 1. 采用 **混合云架构**,冷数据存储使用 MinIO 对接公有云对象存储 2. 通过 **Kubernetes 垂直扩缩容**(VPA)实现资源利用率最大化 3. 参考网易数帆网关性能优化方法[^1],使用 eBPF 技术提升网络吞吐量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

网易杭研

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值