RDS Proxy提高数据库可扩展性可用性GenAI

亚马逊云科技-RDSProxy改善数据库可扩展性GenAI

关键字: [yt, Amazon RDS Proxy, Database Scalability, Rds Proxy, Connection Pooling, Seamless Failover, Iam Authentication]

本文字数: 400, 阅读完需: 2 分钟

导读

演讲者介绍了”亚马逊云科技-RDS Proxy 改善数据库可扩展性 GenAI”。在演讲中,他阐释了亚马逊 RDS Proxy 如何协助扩展应用程序并提高其可用性,而不会影响数据库性能。具体而言,RDS Proxy 执行连接池和多路复用,以最小化数据库连接数量,提供快速无缝故障转移,并与亚马逊云科技 Secrets Manager 集成,从而获得更佳的安全性。该演讲重点阐述了 RDS Proxy 如何实现更好的应用程序可扩展性、高可用性,以及改善数据库连接的安全性。

演讲精华

以下是小编为您整理的本次演讲的精华,共100字,阅读时间大约是0分钟。

亚马逊云科技RDS Proxy 提升数据库可扩展性和可用性

本次网络研讨会的主题是利用亚马逊云科技的RDS Proxy来增强数据库的可扩展性和可用性。现代应用程序架构,包括无服务器架构,允许应用程序无缝扩展,但同时也会导致大量连接频繁打开和关闭,消耗数据库资源。本次会议将探讨如何利用RDS Proxy来扩展应用程序并提高可用性,而不会影响数据库性能。

首先简要介绍了亚马逊关系数据库服务(RDS)的基本概念。RDS是一种托管的关系数据库服务,提供流行的关系数据库引擎选择,包括开源和商业版本。亚马逊云科技在运营和扩展云中的数据库工作负载方面拥有丰富的经验。使用RDS可以免去大量管理和扩展数据库的工作,让客户专注于服务客户,并使数据库易于管理、高性能、可扩展、高可用、持久和安全合规。

接下来,讨论了构建RDS Proxy的动机。现代应用程序往往采用微服务和无服务器架构,这使得应用程序可以无缝扩展,但同时也会导致大量连接频繁打开和关闭,消耗数据库资源。例如,亚马逊云科技Lambda函数可以轻松扩展到大量并发执行,但如果所有这些函数都直接连接到后端数据库,数据库实例将大部分资源用于管理连接而非处理查询,从而降低性能。此外,应用程序还需要高可用性和能够处理数据库瞬时故障的能力。云环境中瞬时故障很常见,虽然RDS和Aurora会自动检测并执行故障转移,但大多数应用程序仍希望在发生故障时中断时间尽可能短或根本不中断。最后,应用程序还需要更好的安全控制来维护对数据库的安全访问。

在推出RDS Proxy之前,客户通常会过度配置数据库实例的计算和内存资源来处理连接高峰,并在应用程序代码中维护复杂的故障处理机制。另一种选择是在EC2上自行管理数据库代理解决方案,但这需要部署和维护额外的组件,增加了架构复杂性,而且代理本身也需要高可用性和故障处理能力。基于客户反馈,亚马逊云科技推出了全托管的RDS Proxy服务。

RDS Proxy是一种全托管、高可用的数据库代理,可以使应用程序更具可扩展性、更能容忍数据库故障,并提高安全性。它是一种完全托管的服务,无需自行部署和维护。它与MySQL和PostgreSQL完全兼容,只需将应用程序的数据库端点更改为RDS Proxy即可。

RDS Proxy的三大关键特性和优势包括:

  1. 连接池和多路复用。当数据库连接不活跃时,RDS Proxy会将其切换到另一个客户端连接上工作,从而最小化与后端数据库的连接数量,减少数据库的CPU和内存消耗。
  2. 快速无缝故障转移。在Aurora发生故障转移时,所有应用程序连接都会断开,因为数据库实例需要重启。但是通过RDS Proxy连接时,Proxy会保留非活动连接,并在新实例就绪后将连接重新路由过去,提供更快的故障转移速度,且无需等待DNS传播。
  3. 增强安全性。RDS Proxy与Amazon Secrets Manager集成,无需在代码中存储数据库凭据。它还支持强制实施IAM身份验证,所有连接都必须使用IAM身份验证token而非硬编码密码。

演讲者接着更详细地介绍了RDS Proxy的工作原理。应用程序连接到RDS Proxy,Proxy提供连接池、无缝故障转移和安全控制,然后Proxy连接到后端的RDS或Aurora数据库。RDS Proxy本身是高可用的多实例代理,跨多个可用区部署以实现与无服务器服务相同的可扩展性和高可用性。

连接池和多路复用有助于应用程序扩展。例如,MySQL使用一个线程per连接,如果应用程序直接打开100个连接,MySQL就需要创建100个线程。当应用程序以很高的速率频繁打开和关闭连接时,数据库将大量资源用于管理这些连接而非处理查询,从而降低性能。RDS Proxy通过连接多路复用来重用相同的数据库连接为多个请求服务,从而最小化与后端数据库的连接数量。无论是读写端点还是只读端点,RDS Proxy都会执行连接池和多路复用。对于Aurora集群,RDS Proxy的只读端点还会自动在只读节点之间负载均衡,并在发生拓扑变化时根据复制延迟选择合适的只读节点,确保应用程序不会读取过期数据。

RDS Proxy还可以提高应用程序的可用性。在数据库发生故障转移时,RDS Proxy会保留非活动连接,并继续接受来自应用程序的新连接请求,将它们排队等待。一旦新实例就绪,RDS Proxy会将连接重新路由过去,并处理排队的事务。相比之下,如果应用程序直接连接Aurora集群端点,则在故障转移期间所有连接都会断开。即使Aurora的故障转移时间很短(小于30秒),但由于需要等待DNS传播和下游连接池重新建立连接,总体故障转移时间可能会更长。而RDS Proxy完全了解Aurora集群拓扑,一旦检测到变化就能立即重新路由连接,因此可以提供更快的故障转移速度。

在安全性方面,RDS Proxy支持多种身份验证方式。客户可以继续使用原生的用户名和密码连接,也可以将凭据存储在Amazon Secrets Manager中,应用程序只需调用API从那里获取凭据。更安全的做法是使用IAM身份验证,应用程序首先从IAM获取一个有效期15分钟的身份验证token,然后使用该token作为密码连接RDS Proxy。通过这种方式,客户可以强制所有连接都使用IAM身份验证,避免在应用程序代码中硬编码密码。在RDS Proxy控制台中也可以轻松启用IAM身份验证的强制执行。

近期,RDS Proxy新增了跨VPC连接的支持。通常情况下,应用程序和数据库位于同一VPC内的不同子网中,可以通过安全组规则相互访问。但如果需要从另一个VPC中的应用程序访问该数据库,传统做法是使用VPC对等连接,但这种方式实际上是在两个VPC之间建立了完全的网络连通性,而不仅仅是访问数据库。有了RDS Proxy的跨VPC连接功能,只需在Proxy上启用该功能并创建一个端点,就可以允许其他VPC中的应用程序通过该端点访问Proxy,进而访问后端数据库,而无需开放两个VPC之间的完全连通性。

接下来是两个演示环节。第一个演示展示了RDS Proxy在应用程序扩展时如何对数据库的影响最小。架构包括一个EC2实例、一个Lambda函数、一个RDS Proxy和一个Aurora MySQL数据库。使用Artillery负载生成工具在EC2实例上模拟大量Lambda函数并发调用,观察Proxy和数据库的指标变化。结果显示,即使客户端连接数量激增到大量,但由于Proxy的连接池和多路复用机制,与数据库建立的连接数量保持在较少水平,对数据库的影响最小。

第二个演示展示了RDS Proxy如何提高应用程序的可用性。编写了一个小脚本,先连接Aurora集群端点,记录当前主节点的名称和时间戳,然后在控制台触发故障转移,观察应用程序重新连接的时间。接着连接RDS Proxy端点,重复上述过程。结果显示,直接连接Aurora集群端点时,故障转移包括重启主节点和DNS传播的总时间较长。而连接RDS Proxy时,故障转移发生后很短时间内应用程序就自动连接上了新主节点,中断时间大大缩短,且无需处理DNS缓存问题。

最后,演讲者分享了一些在与客户合作中学到的最佳实践:

  • 应用程序不会持续使用连接,RDS Proxy的事务级共享和负载均衡可以提高可扩展性,让CPU和内存资源用于处理查询而非管理连接。
  • 在某些情况下,如更改会话变量、显式锁定、创建临时表或使用预处理语句时,RDS Proxy会暂时停止连接多路复用(连接固定),以避免会话状态泄露。但对于字符集、时区、自动提交等设置则不会导致连接固定。
  • 如果客户端断开连接,RDS Proxy会重用其连接。在数据库故障期间,固定连接会被关闭,客户端需要重新连接并重新设置会话状态。
  • 可以在RDS Proxy上排除某些变量集,使其不导致连接固定,或者使用初始化查询为每个连接设置一致的会话状态。
  • 需要关注的监控指标包括:与数据库建立的连接数、当前借出的连接数、连接等待延迟、当前固定的连接数、数据库响应延迟等。

总的来说,RDS Proxy作为一种全托管的数据库代理服务,可以显著提高应用程序的可扩展性、可用性和安全性,同时降低对后端数据库的影响,是现代云原生应用架构中一个重要的组件。

总结

本次网络研讨会深入探讨了Amazon RDS Proxy这一全托管的数据库代理服务,它可以提高连接到Amazon RDS或Aurora数据库的应用程序的可扩展性、可用性和安全性。主要围绕着RDS Proxy如何解决现代应用程序(如无服务器架构)在处理大量数据库连接时所面临的挑战,同时确保高可用性和更好的安全性。

首先,RDS Proxy执行连接池和多路复用,最小化与后端数据库建立的连接数量。这减少了数据库的资源消耗,使其能够专注于处理查询,而非管理连接。其次,RDS Proxy提供快速无缝的故障转移,在故障转移事件期间保留非活动连接,并快速将它们重定向到新提升的实例,与直接连接相比,故障转移时间缩短了66%。第三,RDS Proxy与Amazon云科技Secrets Manager集成,并支持强制执行IAM身份验证,通过消除在应用程序代码中存储数据库凭据的需求,从而增强了安全性。

演示展示了RDS Proxy如何在维持最少数据库连接的情况下处理客户端连接的涌入,以及在数据库发生短暂故障时,如何通过在故障转移后无缝地将连接重定向到新实例来确保高应用程序可用性。网络研讨会最后总结了一些最佳实践,如监控数据库连接、借用连接和固定连接等关键指标,以及使用初始化查询或会话固定过滤器来避免连接固定。

总之,Amazon RDS Proxy成为现代应用程序的强大解决方案,在连接到Amazon RDS或Aurora数据库时实现可扩展性、高可用性和增强的安全性,从而提高整体应用程序性能和弹性。

亚马逊云科技(Amazon Web Services)是全球云计算的开创者和引领者。提供200多类广泛而深入的云服务,服务全球245个国家和地区的数百万客户。亚马逊云科技致力于成为企业构建和应用生成式AI的首选,通过生成式AI技术栈,提供用于模型训练和推理的基础设施服务、构建生成式AI应用的大模型等工具、以及开箱即用的生成式AI应用。深耕本地、链接全球 – 在中国,亚马逊云科技通过安全、稳定、可信赖的云服务,助力中国企业加速数字化转型和创新,并深度参与全球化市场。

你可能感兴趣的:(AWS)