假设我们正在为产品使用微服务架构,我们决定使用'数据库服务'模型,并由AWS等提供商部署在云服务器中。 将数据库作为开发和测试环境的容器运行是很方便的。
但是可以在生产环境中实施!如果是这样,它会有多安全? 或者将云解决方案作为AWS RDS-DB使用是恰当的!!
答案 0 :(得分:3)
我们在生产中使用我们的数据库(本地企业应用程序)。很多人。它非常稳定,部署也很简单。当然我们的数据库没有压力;我们处理数百个并发用户,而不是成千上万。我们只是确保容器有足够的RAM并且监控得很好。
如果我们确实需要将整个VM专用于db,那么我会跳过docker。
答案 1 :(得分:1)
根据以下链接,在生产中使用数据库容器不是一个好主意。 但正如我所经历的那样;如果您将容器与应用隔离并定期更新容器并管理网络内容,则似乎没有问题。
链接:https://www.quora.com/Is-it-not-advisable-to-use-database-in-Docker-container
答案 2 :(得分:1)
当您使用Database Per Service Model for Microservice时,在生产中,完美的解决方案可以是AWS RDS数据库实例,现在您有两种方法:
您可以创建单个RDS实例,并且可以为同一RDS上的不同服务创建不同的数据库,这将节省大量成本,但您需要处理数据库连接并加载您将基于数据库的数据库您必须选择像4xlarge等RDS实例类型,更好的实例类型将提供更多的连接,以及它可以有效处理的更多数据库负载。
第二个解决方案可以创建多个RDS实例,RDS实例的数量将相当于您的微服务计数,因为每个服务将独立地为其数据库使用一个RDS实例,这不是有效的解决方案,它将导致大量的成本和此解决方案将使用AWS RDS实例。
答案 3 :(得分:0)
此blog post列出了一些不应在容器中运行生产数据库的原因。它还引用了another blog post,描述了更新docker和不稳定的存储驱动程序时遇到的问题。
这里的要点归结为:
躲藏存储驱动程序。当您将数据库状态写入主机系统时,这可能不是问题,但是例如Docker明确鼓励用户使用卷来实现这一目的(请参见docs:引文:“卷是保存数据的最佳方法在Docker中”)。在正常情况下,它也许可以正常工作,但是诸如电源故障或读取错误之类的极端情况又如何呢?
在生产中管理数据库非常困难。许多公司采用专职DBA来确保生产数据库的平稳运行。 devops范式(每个开发人员都在容器中创建大量DB服务器)使DBA几乎无法完成其工作。那就是说DBA甚至可以访问这些DB。
总结:容器适合于某些任务,而对其他任务则是个坏主意。在容器中运行生产数据库是这些坏主意之一。