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

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

Auth0为所有技术栈上的任一平台(移动,Web,本机)应用程序提供身份验证,授权和单点登录服务。身份验证对绝大多数应用程序至关重要。我们从一开始就设计了Auth0,以便它可以在任何地方运行:在我们的云上,在您的云上,甚至在您自己的私有基础架构上。


在这篇文章中,我们将更多地讨论我们的公共SaaS部署,并简要介绍auth0.com背后的基础架构以及我们用于保持高可用性并保持运行的策略。


从那以后在Auth0中发生了很多变化。这些是一些亮点:


  • 我们从每月处理数百万次到每月15亿次登录,为数千名客户提供服务,包括FuboTV,Mozilla,JetPrivilege等。
  • 我们实施了新功能,如自定义域,扩展的bcrypt操作,大大改进的用户搜索等等。
  • 为了扩展我们的组织和处理日益增长,服务数量由原有的10个增加到30个。
  • 云资源的数量也大幅增长; 我们曾经在一个环境(美国)中拥有几十个节点,现在我们在四个环境(美国,美国-2,欧盟,澳大利亚)上拥有超过一千个节点。
  • 我们决定为每个环境使用单一云提供商,并将所有公共云基础架构迁移到AWS。


核心服务架构


微信图片_20220123190157.jpg


核心服务由不同的层组成:

核心应用层:自动扩展运行不同服务的服务器组(身份验证,管理API,多因素身份验证API等等)。

数据存储层:MongoDB,Elasticsearch,Redis和PostgreSQL的集群,为不同的应用程序和功能存储各种数据集。

传输/队列层:Kinesis流和RabbitMQ,SNS和SQS队列。

基本服务层:速率限制,bcrypt集群,功能标志等服务。

路由层:AWS负载均衡器(来自AWS的ALB,NLB和ELB)以及一些运行NGINX作为代理的节点。

高可用

2014年,我们使用了多云架构(使用Azure和AWS,在Google云上使用了一些额外的资源),并且多年来为我们提供了很好的服务。随着我们的使用(和负载)迅速增加,我们发现自己越来越依赖AWS资源。

首先,我们将我们环境中的主要区域切换到AWS,将Azure保留为灾备。当我们开始使用更多AWS资源(如Kinesis和SQS)时,我们开始难以在两个提供程序中保留相同的功能集。 随着我们的需求的日益增长,我们会继续在Azure部署一些新功能。如果部署在AWS上的服务全部不可用,我们仍然可以使用Azure群集支持核心身份验证功能。

(编者:多云环境保持同步增加功能,复杂度问题)

在2016年发生一些故障后,我们决定最终融入AWS。我们停止了与保持服务和自动化平台无关的所有工作,并聚焦于以下内容:


  • 在AWS内部启用主备,每个区域使用多个区域和至少3个可用区。


  • 增加AWS特定资源的使用,例如自动扩展组(而不是使用固定的节点集群),应用程序负载平衡器(ALB)等。


  • 编写更好的自动化:我们改进了自动化,完全采用基础架构作为代码,使用TerraForm和SaltStack来配置新的Auth0环境(以及替换现有的环境)。这使我们能够从每秒约300次登录的部分自动化环境发展到每秒执行超过3.4万次登录的全自动环境; 使用新工具可以更容易地向上扩展(并且只要有意义就向下扩展)。我们实现的自动化水平并不完美,但允许我们以更加便捷的方式发展到新的地区并创造新的环境。


  • 编写更好的脚本文件:我们看到除了自动化之外,我们还需要更好的脚本文件,以便理解,管理和响应与我们不断增长的服务网格相关的事件。这大大提高了可扩展性和可靠性,同时也允许我们让新人可以更快的上手。


我们来看看我们的美国环境架构。我们有这个总体结构:


微信图片_20220123190218.jpg




相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
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。
3186 57
|
7月前
|
文字识别 运维 监控
架构解密|一步步打造高可用的 JOCR OCR 识别服务
本文深入解析了JOCR OCR识别服务的高可用架构设计,涵盖从用户上传、智能调度、核心识别到容错监控的完整链路,助力打造高性能、低成本的工业级OCR服务。
332 0
架构解密|一步步打造高可用的 JOCR OCR 识别服务
|
8月前
|
存储 缓存 分布式计算
高内存场景必读!阿里云r7/r9i/r8y/r8i实例架构、性能、价格多维度对比
阿里云针对高性能需求场景,一般会在活动中推出内存型r7、内存型r9i、内存型r8y和内存型r8i这几款内存型实例规格的云服务器。相比于活动内的经济型e和通用算力型u1等实例规格,这些内存型实例在性能上更为强劲,尤其适合对内存和计算能力有较高要求的应用场景。这些实例规格的云服务器在处理器与内存的配比上大多为1:8,但它们在处理器架构、存储性能、网络能力以及安全特性等方面各有千秋,因此适用场景也各不相同。本文将为大家详细介绍内存型r7、r9i、r8y、r8i实例的性能、适用场景的区别以及选择参考。
|
10月前
|
消息中间件 存储 设计模式
RocketMQ原理—5.高可用+高并发+高性能架构
本文主要从高可用架构、高并发架构、高性能架构三个方面来介绍RocketMQ的原理。
3157 21
RocketMQ原理—5.高可用+高并发+高性能架构
|
11月前
|
存储 弹性计算 运维
阿里云通用算力型U1实例怎么样?u1实例技术架构、场景适配与优惠价格参考
阿里云服务器ECS 通用算力型u1实例2核4G,5M固定带宽,80G ESSD Entry盘,企业用户专享优惠价格199元1年,很多用户关心这个款云服务器怎么样?阿里云通用算力型U1实例自推出以来,凭借独特的"均衡算力+智能调度"设计理念,在IaaS市场开辟出差异化的竞争赛道。本文将通过技术架构解析、典型场景适配分析、全生命周期成本测算三个维度,全面解构这款热门云服务器实例的核心价值,以供参考和选择。
|
11月前
|
存储 开发框架 缓存
YashanDB实例架构
YashanDB实例架构