Envoy架构概览(10):热启动,动态配置,初始化,排水,脚本

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: Envoy架构概览(10):热启动,动态配置,初始化,排水,脚本

热启动

易于操作是特使的主要目标之一。除了强大的统计数据和本地管理界面之外,Envoy还具有“热”或“实时”重启的能力。这意味着Envoy可以完全重新加载自己(代码和配置)而不会丢失任何连接。热启动功能具有以下通用架构:


  • 统计和一些锁保存在共享内存区域。这意味着在重启过程中,仪表将在两个过程中保持一致。
  • 两个活动进程使用基本的RPC协议通过unix域套接字相互通信。
  • 新进程完全初始化自己(加载配置,执行初始服务发现和健康检查阶段等),然后再请求旧进程的侦听套接字的副本。新流程开始监听,然后告诉旧流程开始排水。
  • 在排水阶段,旧的进程试图正常关闭现有的连接。如何完成取决于配置的过滤器。排水时间可通过 - 排水时间选项进行配置,并且随着排水时间的增加,排水更加积极。
  • 排水顺序后,新的特使进程告诉旧的特使进程关闭自己。这一次可以通过--parent-shutdown-time-s选项来配置。
  • 特使的热启动支持被设计成即使新的特使进程和旧的特使进程在不同的容器内运行,它也能正常工作。进程之间的通信仅使用unix域套接字进行。
  • 源代码发行版中包含以Python编写的示例重启器/父进程。这个父进程可用于标准的进程控制工具,如monit / runit /等。

动态配置

特使的架构使得不同类型的配置管理方法成为可能。部署中采用的方法将取决于实现者的需求。完全静态的配置可以实现简单的部署。更复杂的部署可以递增地添加更复杂的动态配置,缺点是实现者必须提供一个或多个基于外部REST的配置提供者API。本文档概述了当前可用的选项。


  • 顶级配置参考。
  • 参考配置。
  • Envoy v2 API概述。

完全静态

在完全静态配置中,实现者提供了一组侦听器(和过滤器链),集群以及可选的HTTP路由配置。动态主机发现只能通过基于DNS的服务发现来实现。配置重新加载必须通过内置的热启动机制进行。


虽然简单,但可以使用静态配置和优雅的热重启来创建相当复杂的部署。


仅限SDS / EDS

服务发现服务(SDS)API提供了一种更高级的机制,Envoy可以通过该机制发现上游群集的成员。 SDS已在v2 API中重命名为Endpoint Discovery Service(EDS)。在静态配置的基础上,SDS允许Envoy部署避开DNS的限制(响应中的最大记录等),并消耗更多用于负载平衡和路由的信息(例如,金丝雀状态,区域等)。


SDS / EDS和CDS

群集发现服务(CDS)API层上Envoy可以发现路由期间使用的上游群集的机制。 Envoy将优雅地添加,更新和删除由API指定的集群。这个API允许实现者构建一个拓扑,在这个拓扑中,Envoy在初始配置时不需要知道所有的上游集群。通常,在与CDS一起进行HTTP路由(但没有路由发现服务)时,实现者将利用路由器将请求转发到HTTP请求标头中指定的集群的能力。


虽然可以通过指定完全静态集群来使用没有SDS / EDS的CDS,但我们建议仍然使用SDS / EDS API来通过CDS指定集群。在内部,更新集群定义时,操作是优雅的。但是,所有现有的连接池将被排空并重新连接。 SDS / EDS不受此限制。当通过SDS / EDS添加和删除主机时,群集中的现有主机不受影响。


SDS / EDS,CDS和RDS

路由发现服务(RDS)API层,Envoy可以在运行时发现HTTP连接管理器过滤器的整个路由配置。路由配置将优雅地交换,而不会影响现有的请求。该API与SDS / EDS和CDS一起使用时,允许执行者构建复杂的路由拓扑(流量转移,蓝/绿部署等),除了获取新的Envoy二进制文件外,不需要任何特使重启。


SDS / EDS,CDS,RDS和LDS

侦听器发现服务(LDS)在Envoy可以在运行时发现整个侦听器的机制上分层。这包括所有的过滤器堆栈,直到并包含嵌入式参考RDS的HTTP过滤器。在混合中添加LDS可以使Envoy的几乎所有方面都能够进行动态配置。只有非常少见的配置更改(管理员,跟踪驱动程序等)或二进制更新时才需要热启动。


初始化

Envoy在启动时如何初始化是复杂的。本节将从高层次解释流程的工作原理。以下所有情况都发生在任何听众开始收听并接受新连接之前。


  • 在启动过程中,集群管理器会经历多阶段初始化,首先初始化静态/ DNS集群,然后是预定义的SDS集群。然后,如果适用,它将初始化CDS,等待一个响应(或失败),并执行CDS提供的集群的相同主/次初始化。
  • 如果群集使用主动健康检查,特使也做一个活跃的HC轮。
  • 集群管理器初始化完成后,RDS和LDS将初始化(如果适用)。在LDS / RDS请求至少有一个响应(或失败)之前,服务器不会开始接受连接。
  • 如果LDS本身返回需要RDS响应的侦听器,则Envoy会进一步等待,直到收到RDS响应(或失败)。请注意,这个过程通过LDS发生在每个未来的收听者身上,并被称为收听者变暖。
  • 在所有先前的步骤发生之后,听众开始接受新的连接。该流程确保在热启动期间,新流程完全能够在旧流程开始排放之前接受并处理新的连接。


排水

排水是Envoy试图优雅地脱离各种事件的连接的过程。排水发生在下列时间:


  • 服务器已通过健康检查/失败管理端点进行手动健康检查失败。有关更多信息,请参阅运行状况检查过滤器体系结
  • 服务器正在热启动。
  • 个别听众正在通过LDS进行修改或删除。

每个配置的监听器都有一个drain_type设置,用于控制何时发生排空。目前支持的值是:


默认

特使将听取上述所有三种情况(管理员流失,热启动和LDS更新/删除)的响应。这是默认设置。

modify_only

特使只会响应上述第二和第三种情况(热启动和LDS更新/删除)而排斥监听者。如果Envoy同时拥有入口和出口监听器,则此设置很有用。可能需要在出口监听器上设置modify_only,以便在尝试进行受控关闭时依靠入口监听器耗尽来执行完整的服务器耗尽时,它们只在修改期间耗尽。

请注意,虽然排水是每个听众的概念,但它必须在网络过滤器级别上得到支持。目前唯一支持正常排水的过滤器是HTTP连接管理器,Redis和Mongo。

脚本

Envoy支持实验性的Lua脚本作为专用HTTP过滤器的一部分。


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5天前
|
存储 人工智能 并行计算
2025年阿里云弹性裸金属服务器架构解析与资源配置方案
🚀 核心特性与技术创新:提供100%物理机性能输出,支持NVIDIA A100/V100 GPU直通,无虚拟化层损耗。网络与存储优化,400万PPS吞吐量,ESSD云盘IOPS达100万,RDMA延迟<5μs。全球部署覆盖华北、华东、华南及海外节点,支持跨地域负载均衡。典型应用场景包括AI训练、科学计算等,支持分布式训练和并行计算框架。弹性裸金属服务器+OSS存储+高速网络综合部署,满足高性能计算需求。
|
4月前
|
存储 SQL 消息中间件
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
72 0
|
5月前
|
设计模式 存储 人工智能
深度解析Unity游戏开发:从零构建可扩展与可维护的游戏架构,让你的游戏项目在模块化设计、脚本对象运用及状态模式处理中焕发新生,实现高效迭代与团队协作的完美平衡之路
【9月更文挑战第1天】游戏开发中的架构设计是项目成功的关键。良好的架构能提升开发效率并确保项目的长期可维护性和可扩展性。在使用Unity引擎时,合理的架构尤为重要。本文探讨了如何在Unity中实现可扩展且易维护的游戏架构,包括模块化设计、使用脚本对象管理数据、应用设计模式(如状态模式)及采用MVC/MVVM架构模式。通过这些方法,可以显著提高开发效率和游戏质量。例如,模块化设计将游戏拆分为独立模块。
302 3
|
7月前
|
NoSQL Redis
Redis 主从复制架构配置及原理
Redis 主从复制架构配置及原理
89 5
|
7月前
|
存储 分布式计算 大数据
从零到一建设数据中台 - 架构概览
从零到一建设数据中台 - 架构概览
158 1
|
6月前
|
监控 安全 API
Android项目架构设计问题之保证线上用户不会进入到本地配置页面如何解决
Android项目架构设计问题之保证线上用户不会进入到本地配置页面如何解决
43 0
|
6月前
|
JSON Android开发 数据格式
Android项目架构设计问题之在远端动态配置中添加相应配置如何解决
Android项目架构设计问题之在远端动态配置中添加相应配置如何解决
47 0
|
7月前
|
监控 算法 Java
高并发架构设计三大利器:缓存、限流和降级问题之配置Sentinel的流量控制规则问题如何解决
高并发架构设计三大利器:缓存、限流和降级问题之配置Sentinel的流量控制规则问题如何解决
111 0
|
2月前
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
3月前
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
82 3

热门文章

最新文章