Ent*_*noX 4 mysql database high-availability kubernetes statefulset
我有一个运行Multipe应用程序(服务)的Kubernetes环境。现在,我有点困惑如何设置MySQL数据库实例。
根据不同的来源,每个微服务都应该有自己的数据库。我应该在HA模式下创建一个运行多个数据库的MySQL状态集还是为每个运行一个数据库的应用程序(服务)部署一个单独的MySQL实例。
我的第一个想法是第一选择,因此HA总体上应在哪里使用?希望听到一些与此不同的看法。
有点主观的问题,但这是我们设置的内容。希望这可以帮助您建立案例。我敢肯定有人会有不同的意见,这可能同样有效:
我们部署了约70个微服务,每个微服务都有自己的数据库(“架构”)和自己的JDBC URL(通过服务定义)。每个微服务都有其自己的端点和凭据,我们不会在微服务之间共享这些凭据。因此,实际上,就模式而言,我们一直使设计在微服务之间完全独立。
但是,在部署方面,我们选择使用一个数据库实例来托管所有数据库(或“方案”)。从技术上讲,我们可以将每个数据库部署在其自己的数据库实例上,但出于以下几个主要原因,我们选择不这样做:
因此,我的建议是使用单个数据库实例(Docker或其他),但保持数据库/方案完全独立,并且除“所有者”微服务外,任何微服务都无法访问。
如果要将MySQL部署为Docker容器,请使用StatefulSetfor持久性。定义一个外部组件,pvc这样无论您的Pod甚至集群发生什么情况,您都可以始终保留数据。当然,如果您运行“主动-主动”,则需要确保节点之间的集群,但是我们确实以“主动-被动”模式运行它,因此replica如果我们仅使用MySQL Docker容器替代方案,则将计数保持为1用于我们的测试环境,以节省不需要的外部DBaaS服务的成本。