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

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介: 高可用架构实例:在多云和多区域中穿行(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




相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
2月前
|
存储 SQL 关系型数据库
Mysql高可用架构方案
本文阐述了Mysql高可用架构方案,介绍了 主从模式,MHA模式,MMM模式,MGR模式 方案的实现方式,没有哪个方案是完美的,开发人员在选择何种方案应用到项目中也没有标准答案,合适的才是最好的。
183 3
Mysql高可用架构方案
|
5月前
|
存储 Cloud Native 关系型数据库
PolarDB 高可用架构设计与实践
【8月更文第27天】 在现代互联网应用中,数据库作为核心的数据存储层,其稳定性和可靠性尤为重要。阿里云的 PolarDB 作为一款云原生的关系型数据库服务,提供了高可用、高性能和自动化的特性,适用于各种规模的应用。本文将详细介绍 PolarDB 的高可用架构设计,并探讨其实现数据安全性和业务连续性的关键技术。
124 0
|
2月前
|
存储 负载均衡 Kubernetes
混合云和多云策略:混合云架构设计详解
混合云和多云策略:混合云架构设计详解
98 1
|
2月前
|
Kubernetes 关系型数据库 MySQL
Kubernetes入门:搭建高可用微服务架构
【10月更文挑战第25天】在快速发展的云计算时代,微服务架构因其灵活性和可扩展性备受青睐。本文通过一个案例分析,展示了如何使用Kubernetes将传统Java Web应用迁移到Kubernetes平台并改造成微服务架构。通过定义Kubernetes服务、创建MySQL的Deployment/RC、改造Web应用以及部署Web应用,最终实现了高可用的微服务架构。Kubernetes不仅提供了服务发现和负载均衡的能力,还通过各种资源管理工具,提升了系统的可扩展性和容错性。
142 3
|
4月前
|
Cloud Native Java 编译器
将基于x86架构平台的应用迁移到阿里云倚天实例云服务器参考
随着云计算技术的不断发展,云服务商们不断推出高性能、高可用的云服务器实例,以满足企业日益增长的计算需求。阿里云推出的倚天实例,凭借其基于ARM架构的倚天710处理器,提供了卓越的计算能力和能效比,特别适用于云原生、高性能计算等场景。然而,有的用户需要将传统基于x86平台的应用迁移到倚天实例上,本文将介绍如何将基于x86架构平台的应用迁移到阿里云倚天实例的服务器上,帮助开发者和企业用户顺利完成迁移工作,享受更高效、更经济的云服务。
110 13
将基于x86架构平台的应用迁移到阿里云倚天实例云服务器参考
|
5月前
|
运维 监控 关系型数据库
【一文搞懂PGSQL】7. PostgreSQL + repmgr + witness 高可用架构
该文档介绍了如何构建基于PostgreSQL的高可用架构,利用repmgr进行集群管理和故障转移,并引入witness节点增强网络故障检测能力。repmgr是一款轻量级的开源工具,支持一键部署、自动故障转移及分布式节点管理。文档详细描述了环境搭建步骤,包括配置postgresql参数、安装与配置repmgr、注册集群节点以及配置witness节点等。此外,还提供了故障手动与自动切换的方法及常用命令,确保集群稳定运行。
|
5月前
|
数据挖掘 关系型数据库 MySQL
Serverless高可用架构的解决方案体验
Serverless高可用架构的解决方案体验
170 6
|
5月前
|
弹性计算 运维 关系型数据库
云上Serverless高可用架构一键部署体验与测评
在数字化转型背景下,Serverless架构因其实现业务敏捷、降低成本及提升服务可靠性而备受青睐。本文以阿里云Serverless应用引擎(SAE)为核心,展示了一种高可用、低成本且易于扩展的解决方案。通过单地域双可用区部署,构建了具备自动伸缩与故障恢复能力的架构。借助阿里云的一键部署功能,大幅简化了搭建流程,实现了快速部署,并通过性能与成本分析验证了其优势。对比传统ECS,SAE在资源利用与运维效率上表现更佳,特别适合平均负载较低的应用场景。
|
5月前
|
弹性计算 运维 关系型数据库
Serverless高可用架构解决方案评测
Serverless高可用架构方案提供卓越效能与极简运维体验,支持服务托管、弹性伸缩及按量付费,有效降低成本并优化性能。一键部署快速启动,流程直观,文档详实;但在高级配置与特定场景实践方面指导有限。方案采用双可用区部署确保高可用性,自动故障切换保障服务连续。成本模型按需计费,减轻企业负担。功能上集成监控、日志与负载均衡,简化运维,加速上线。性能方面,秒级弹性伸缩保证资源高效匹配负载。总体而言,此方案竞争力强,特别推荐给初创公司及需灵活应对流量波动的场景。
174 2
|
5月前
|
运维 监控 负载均衡
如何构建高可用的系统基础架构
【8月更文挑战第15天】构建高可用的系统基础架构是一个复杂而系统的工程,需要综合考虑设计原则、关键技术和实践策略等多个方面。通过冗余设计、分布式架构、自动化与智能化等技术的运用,可以显著提升系统的可用性和稳定性。同时,加强运维团队的能力建设和制定完善的高可用性策略也是确保系统高可用性的重要保障。希望本文能为读者在构建高可用系统时提供有益的参考和借鉴。

热门文章

最新文章