繁体   English   中英

是否可以在Google App Engine Flexible中运行Postgres?

[英]Is it possible to run Postgres in Google App Engine Flexible?

是否可以在自定义Google App Engine Flexible容器中运行postgres(本质上是非HTTP服务)? 还是会被迫使用Google的Cloud SQL解决方案?

TL; DR :您可以这样做,但不能这样做。 最好将持久化数据存储外部化。

是的,可以在自定义Google App Engine Flexible容器中将PostgreSQL数据库作为微服务(在Google Cloud Platform中简称为“服务”)运行。 但是,这提出了另一个重要的问题,即为什么要在容器内运行SQL数据库。 这是一个冒险的解决方案,除非您完全确定自己在做什么以及如何进行管理。

典型的容器编排基于无状态服务,这意味着它们不打算存储持久性数据。 这种容器有时确实具有某种形式的存储,例如用于缓存或用户会话信息的NoSQL数据库。 此数据不是永久性的,在敏捷的容器化应用程序环境中重新启动或销毁实例时可能会丢失数据。 PostgreSQL数据库被用作有状态服务,不适合上述模型。 将这样的数据库放入容器中时,访问某些共享数据目录时可能会遇到诸如数据损坏或直接并发之类的问题。 另外,在Google App Engine Flexible中,无法添加共享的永久磁盘,这些卷将附加到实例并与它们一起销毁。 像您提到的Cloud SQL一样,更安全的解决方案是将SQL数据库保留在外部持久存储中。 有许多博客帖子和文章,阐述这一问题的无状态/有状态的服务,如这一个

应该提到的是,如果要在本地环境中使用容器或进行测试/开发(并且您不是在寻找数据库的持久状态),那么将PostgreSQL放入容器中应该是可以的。 此外,如果您设计了一种在实例之间拆分数据的特殊方法,则可以很好地工作,就像本文中的MySQL服务器一样。 因此,再次考虑将PostgreSQL数据库放入容器的想法,特别是要考虑到安全地将此类服务外部化的选项太多。

只是作为旁注,您没有被迫使用Cloud SQL。 该数据库可以托管在本地的另一个云提供商Compute Engine上,也可以由第三方供应商进行管理。 如果将其托管在Compute Engine中,则应用程序可以使用Compute Engine实例的内部IP与同一项目中的数据库进行通信。 使用Cloud Launcher,您可以将PostgreSQL和其他流行的数据库快速部署到Compute Engine。 查看这些Google文档 ,以获取有关使用第三方数据库的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM