高可用架构实例:在多云和多区域中穿行(2)

简介: 高可用架构实例:在多云和多区域中穿行(2)

这是单个AZ内部的结构:


微信图片_20220123190303.jpg


在这种情况下,我们使用两个AWS区域:us-west-2(主集群)和us-west-1(备份集群)。在正常情况下,所有请求都将转到us-west-2,由三个单独的可用区域提供服务。


这就是我们实现高可用性的方式:所有服务(包括数据库)都在每个可用区(AZ)上运行实例。如果一个AZ由于数据中心故障而关闭,我们仍有两个AZ来处理来自的请求。如果整个区域出现故障或出现错误,我们可以更新Route53以故障转移到us-west-1并恢复操作。

我们通过在每个AWS可用区域上运行所有服务实例来实现高可用性

我们在服务故障转移方面有不同的成熟度级别:某些服务,例如用户搜索v2(在Elasticsearch上构建缓存)可能有效,但数据稍有延迟;另外,核心功能保持按预期工作。

在数据层中,我们使用:

  • MongoDB的跨区域集群。
  • PostgreSQL的RDS复制。
  • Elasticsearch的每个区域的群集具有自动快照和恢复,定期运行以解决缺少跨区域群集的问题。


我们每年至少进行一次故障演练,我们有手册和自动化,以帮助新的基础设施工程师快速了解如何做到这一点以及产生什么影响。

(编者:每年至少一次故障演练,对于真正发生区域不可用的时候指导意义是否足够?)


我们的部署通常由Jenkins节点触发; 根据服务,我们使用Puppet,SaltStack和/或Ansible来更新单个节点或节点组,或者我们更新AMI并为不可变部署创建新的自动缩放组。 我们为新旧服务部署了不同类型的部署。维护文档和监控应该统一的内容,在我们需要维护自动化的同时,作用上很大程度上显得微乎其微。

自动化测试

除了每个项目的单元测试覆盖率外,我们还提供多个功能测试套件,可在各种环境中运行; 我们在部署到生产之前在预生产环境中运行它,并在完成部署后再次在生产环境中运行它们以确保一切正常。

亮点:

  • 在不同的项目中有数千个单元测试。
  • 每分钟执行Pingdom来探测核心功能。
  • 我们在每次部署之前和之后都使用Selenium和基于CodeceptJS的功能测试。 功能测试套件测试不同的API端点,身份验证流程,身份提供程序等等。

除了每个项目的单元测试覆盖率外,我们还有多个功能测试套件,可在各种环境中运行:在部署到生产之前进行分段,在完成部署后再次进行生产。


CDN

直到2017年,我们在多个地区使用NGINX,Varnish和EC2节点运行我们自己定制的CDN。从那时起,我们转向CloudFront,这给了我们几个好处,包括:

  • 更多位置接入,这意味着我们的客户延迟更少。
  • 降低维护成本。
  • 配置更简单。

有一些缺点,比如我们需要运行Lambdas来执行某些配置(比如将自定义标头添加到PDF文件等等)。 不过,好处远远大于这些。

Extend

(译者补充:Extend [https://goextend.io/]是Auth0开发的一个平台,用于实现SaaS的自定义和集成)

我们提供的功能之一是能够通过身份验证规则或自定义数据库连接将自定义代码作为登录事务的一部分运行。 这些功能由Extend提供支持,Extend是一个可扩展性平台,由Auth0开发,现在也被其他公司使用。 通过Extend,我们的客户可以在这些脚本和规则中编写他们想要的任何内容,允许他们扩展配置文件,规范化属性,发送通知等等。


我们专门为Auth0扩展了集群; 他们使用EC2自动扩展组,Docker容器和自定义代理的组合来处理来自租户的请求,每秒处理数千个请求并快速响应负载变化。 有关如何构建和运行它的更多详细信息,请查看有关如何构建自己的无服务器平台的帖子。


监控

我们使用不同工具的组合来监控和调试问题:

  • CloudWatch
  • DataDog
  • Pingdom的
  • SENTINL


我们的绝大多数警报都来自CloudWatch和DataDog。

我们倾向于通过TerraForm配置CloudWatch警报,我们在CloudWatch上保留的主要监视器是:


  • 来自主负载均衡器的HTTP错误。
  • 目标组中的不健康实例。
  • SQS处理延迟。


CloudWatch是基于AWS生成的指标(如来自负载均衡器或自动扩展组的指标)的最佳警报工具。 CloudWatch警报通常发送给PagerDuty,从PagerDuty发送到Slack / phones。


DataDog是我们用来存储时间序列指标并采取行动的服务。 我们从Linux机箱,AWS资源,现成服务(如NGINX或MongoDB)以及我们构建的自定义服务(如我们的Management API)发送指标。

我们有很多DataDog监视器。 几个例子:


  • $环境中$ service的响应时间增加。
  • $ instance($ ip_address)中$ volume的空间不足。
  • $ environment / $ host($ ip_address)上的$ process问题。
  • $environment下$service的处理时间增加。
  • NTP在$ host($ ip_address)上漂移/关闭时钟问题。
  • MongoDB副本设置在$ environment上发生了变化。


从上面的示例中可以看出,我们监控了低级指标(如磁盘空间)和高级指标(如MongoDB副本集更改,例如如果主节点定义发生更改,则会提醒我们)。 我们做了很多,并在一些服务周围有一些非常复杂的监视器。

DataDog警报的输出非常灵活,我们通常会将它们全部发送给Slack,只向那些应该“唤醒人们”的人发送给PagerDuty(如错误峰值,或者我们确定会对客户产生影响的大多数事情)。


对于日志记录,我们使用Kibana和SumoLogic; 我们使用SumoLogic来记录审计跟踪和许多AWS生成的日志,我们使用Kibana来存储来自我们自己的服务和其他“现成”服务(如NGINX和MongoDB)的应用程序日志。


未来


随着业务发展,我们的平台增长了,而且我们的工程组织规模不断扩大:我们有许多新团队建立自己的服务,并且需要自动化,工具和可扩展性指导。 考虑到这一点,这些是我们不仅要扩展我们的平台而且要扩展我们的工程实践的举措:

构建PaaS风格的平台:正如前面所提到的,今天我们有不同的自动化和部署流程;这会造成混乱并为工程师设置了障碍,因为很难在没有涉及太多存储库的情况下进行实验和扩展。我们正在开发一个平台的PoC(目前运行在ECS之上),工程师可以在其中配置YAML文件并将其部署以获取计算资源,监控,日志记录,备份等等。所有这些都无需明确配置。这项工作还处于早期阶段,可能仍会发生很大变化(EKS?)。但是,鉴于我们不断扩大的规模和可扩展性限制,我们认为我们正在采取正确的方向。


为每个新的PR(pull request)实施冒烟测试:除了单元测试(已经在每个新PR上运行),我们希望在可能的情况下在短暂环境中运行集成测试。


将我们的日志记录解决方案集中到一个提供商这可能意味着远离Kibana并仅使用SumoLogic,但我们仍需要评估功能集,数据量等。


自动化指标:现在我们的指标数据太多是手动的:在部署时添加与代码相关的指标调用,并使用DataDog界面构建仪表板和监视器。如果我们使用标准格式和命名,我们可以自动构建仪表板/监视器,从日志中提取度量而不是显式添加对代码的调用等等。


原文地址:https://auth0.com/blog/auth0-architecture-running-in-multiple-cloud-providers-and-regions/


这篇文章是由Auth0的网站SER Dirceu Pereira Tiegs撰写的,最初发表于Auth0。

相关文章
|
5月前
|
SQL 监控 关系型数据库
MySQL主从复制:构建高可用架构
本文深入解析MySQL主从复制原理与实战配置,涵盖复制架构、监控管理、高可用设计及性能优化,助你构建企业级数据库高可用方案。
|
6月前
|
运维 监控 搜索推荐
MSE ZooKeeper:Flink 高可用架构的企业级选择
本文深入解析了 Apache Flink 架构中 ZooKeeper 的核心作用,包括 Leader 选举、Checkpoint 管理、作业协调及配置管理等关键功能,并结合金融风控与电商推荐等典型场景,分析了 ZooKeeper 在实际应用中的技术实现。
|
4月前
|
运维 监控 安全
公链开发中的高可用架构设计要点
本指南提供公链高可用架构的可复用流程与模板,涵盖目标拆解、先决条件、分步执行、故障排查及验收标准,结合跨链DApp与量化机器人案例,提升落地效率与系统稳定性。
|
5月前
|
存储 监控 NoSQL
Redis高可用架构全解析:从主从复制到集群方案
Redis高可用确保服务持续稳定,避免单点故障导致数据丢失或业务中断。通过主从复制实现数据冗余,哨兵模式支持自动故障转移,Cluster集群则提供分布式数据分片与水平扩展,三者层层递进,保障读写分离、容灾切换与大规模数据存储,构建高性能、高可靠的Redis架构体系。
|
9月前
|
监控 Linux 应用服务中间件
Linux多节点多硬盘部署MinIO:分布式MinIO集群部署指南搭建高可用架构实践
通过以上步骤,已成功基于已有的 MinIO 服务,扩展为一个 MinIO 集群。该集群具有高可用性和容错性,适合生产环境使用。如果有任何问题,请检查日志或参考MinIO 官方文档。作者联系方式vx:2743642415。
3059 57
|
7月前
|
文字识别 运维 监控
架构解密|一步步打造高可用的 JOCR OCR 识别服务
本文深入解析了JOCR OCR识别服务的高可用架构设计,涵盖从用户上传、智能调度、核心识别到容错监控的完整链路,助力打造高性能、低成本的工业级OCR服务。
311 0
架构解密|一步步打造高可用的 JOCR OCR 识别服务
|
8月前
|
存储 缓存 分布式计算
高内存场景必读!阿里云r7/r9i/r8y/r8i实例架构、性能、价格多维度对比
阿里云针对高性能需求场景,一般会在活动中推出内存型r7、内存型r9i、内存型r8y和内存型r8i这几款内存型实例规格的云服务器。相比于活动内的经济型e和通用算力型u1等实例规格,这些内存型实例在性能上更为强劲,尤其适合对内存和计算能力有较高要求的应用场景。这些实例规格的云服务器在处理器与内存的配比上大多为1:8,但它们在处理器架构、存储性能、网络能力以及安全特性等方面各有千秋,因此适用场景也各不相同。本文将为大家详细介绍内存型r7、r9i、r8y、r8i实例的性能、适用场景的区别以及选择参考。
|
10月前
|
消息中间件 存储 设计模式
RocketMQ原理—5.高可用+高并发+高性能架构
本文主要从高可用架构、高并发架构、高性能架构三个方面来介绍RocketMQ的原理。
3105 21
RocketMQ原理—5.高可用+高并发+高性能架构
|
11月前
|
存储 弹性计算 运维
阿里云通用算力型U1实例怎么样?u1实例技术架构、场景适配与优惠价格参考
阿里云服务器ECS 通用算力型u1实例2核4G,5M固定带宽,80G ESSD Entry盘,企业用户专享优惠价格199元1年,很多用户关心这个款云服务器怎么样?阿里云通用算力型U1实例自推出以来,凭借独特的"均衡算力+智能调度"设计理念,在IaaS市场开辟出差异化的竞争赛道。本文将通过技术架构解析、典型场景适配分析、全生命周期成本测算三个维度,全面解构这款热门云服务器实例的核心价值,以供参考和选择。
|
11月前
|
存储 开发框架 缓存
YashanDB实例架构
YashanDB实例架构