如何将本地应用程序连接到AWS Aurora Serverless 堡垒/跳跃主机 AWS站点到站点VPN 直接连接

问题描述

我们有很多本地应用程序,每个应用程序都运行自己的本地MysqL服务器。我们的工作量很轻,偶尔会有一些活动(B2B商业模型在每月的某些特定时间使用该应用程序更有利可图,因此在那几天我们看到使用高峰)。我们认为通过将所有数据库移动到一个服务器/集群中来简化基础架构是一个好主意,经过一番讨论后,决定购买托管解决方案比尝试建立和维护我们自己的MysqL集群要好(无我们当中有DBA)。

我们进行了深入的研究,最终选择了Amazon aurora Serverless作为其自动扩展功能的可靠候选者,因此与我们研究的替代方案(AWS MysqL RDS和DigitalOcean管理的MysqL)相比,(可能)降低了成本),因为我们的工作量通常很轻,偶尔会有一些活动。

但是,据我所知,不可能仅从本地应用程序简单地连接到AWS aurora Serverless(例如,参见Not able connect Amazon Aurora Serverless from SQL client),所以我的问题是:

  1. 解决此问题的最佳实践是什么?我们是否应使用站点站点VPN将本地主机连接到云?这样会不会使我们付出更多的代价?
  2. aurora Serverless是否真的是最好的解决方案,还是我们应该回到Amazon RDS或DigitalOcean的托管MysqL集群,这两个都允许分配公共IP,但是它们都不会自动扩展(这意味着我们需要根据我们的高峰使用量购买一个等级,并可能浪费大量金钱,因为它将在一个月的大部分时间里几乎处于闲置状态)?

我们想要实现的是一个简单的,一劳永逸的MysqL集群设置,该集群可以由其他人管理,理想情况下可以自动扩展,并且不会花费大笔成本,也不会比当前更难管理本地解决方案。

我们不是反对云的人,但是我们也不想为了简化数据库基础架构而突然将所有东西都突然迁移到云中。

要投入额外的精力,我们不管理自己的防火墙-因此设置站点站点VPN可能很棘手,需要与第三方(我们的网络提供商)进行协调。理想情况下,如果可能的话,我也想避免这种麻烦。

解决方法

您是正确的,您无法直接从连接到Aurora Serverless(AS)。原因是AS 无法公开。来自docs

不能为 Aurora Serverless数据库群集提供公共IP地址。您只能基于Amazon VPC服务的虚拟私有云(VPC)内部访问Aurora Serverless数据库集群。

您还应该知道many other limitations的AS,其中一些是:没有副本,也没有IAM身份验证。

Q1与AS的连接

几个选项,用于连接到SA或无法从Internet访问的其他服务(例如RDS代理,ElasticSearch域)。

堡垒/跳跃主机

最常用于测试和开发的最便宜,最即席的选项是使用堡垒/跳跃主机。使用此选项,您可以将ssh隧道设置到该堡垒,然后将其连接到AS。

但是,这显然不适合用于可靠访问,但是我认为至少应该在答案中提到这一点。

AWS站点到站点VPN

正如您已经提到的,

AWS Site-to-Site VPN是另一个选择。显然,这是启用从本地到VPC的访问的更好方法。

但是令人担忧的是成本,因为your charged 每小时$ 0.05 每次数据传输

每小时的价格不是很多。 1个月大约$ 3.6 /月:

24 hours x 30 days x $0.05 = $3.6

数据传输更难以估计,因为它取决于您的实际需求。例如,如果您估计您每月将从AS中获取100GB的数据(入站流量是免费的),则您每月将支付大约$ 8.91(前1GB是免费的):

99GB * $0.09 = $8.91

假设上述情况,您每月需要支付的费用约为$ 12.51。此不包括 AS价格本身。

但是,由于提到了防火墙设置问题,因此设置和管理起来可能会比较麻烦,然后再受益。

直接连接

AWS Direct Connect最昂贵,但最可靠且私密。只是想提一下,因为这可能不适合您的用例。

第二季度AS的适用性

AS的一种用例是Infrequently used applications

您有一个每天或每周仅几分钟几次使用的应用程序,例如低容量的博客网站。使用Aurora Serverless,您只需支付每秒消耗的数据库资源。

您还需要考虑AS冷启动,例如报告为herehere的情况下可能会出现问题。

从您的问题尚不清楚,AS的使用模式将是什么,或者冷启动是否会带来问题。但是基于上述问题,即缺乏对AS的公共访问权限,由于防火墙而导致设置VPN困难的问题,我会倾向于使用常规的Aurora MySQL或RDS (无法对DigitalOcean进行评论)。

原因是您可以对其进行公开访问,它的设置速度非常快,价格已知,没有冷启动问题,并且它是托管服务。另外,它还支持autoscaling for storage,因此您无需担心。

此外,您还可以从小型数据库实例(t3。小型或较小)开始,然后在需要时进行大容量扩展,或者添加只读副本以减轻读取密集型工作负载的负担。 / p>

示例费用为:

  • Aurora MySQL,t3.small和100 GB的初始存储$ 39.93(详细信息here):

  • RDS MySQL,t3.small和100 GB:36.32美元(详细信息here)。

以上内容不包括任何只读副本,Multi-AZ设置或RDS或Aurora提供的其他额外功能。您可以根据自己的需要使用calculator.aws进行自己的估算。对于RDS,您可以使用比t3.small更小的实例,例如t2.micro。

同时,通常不建议通过Internet公开您的生产级别数据库。因此,您要么将其保留为私有状态,要么使用VPN来通过Internet对其进行私有访问,从而再次使您告终。但是,通过正确设置安全组网络ACL ,您可以限制其对单个工作站或工作场所IP范围的公共访问。如果VPN并非真正的选择,那么这将减少拥有数据库公共IP的风险。

P.S。

我建议您独立验证所提供的价格和详细信息,以免出错。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...