时事通讯




MongoDB,遇见Kubernetes


kubernetes和docker一起改变了分布式系统打包和部署的方式。

在过去,部署多节点分布式系统是一个重大努力。通常,需要专门的硬件,并且需要专用的网络配置允许节点进行通信。然后需要一个艰苦的软件安装过程和配置来建立分布式系统。通常需要几周或几个月。

虚拟化的出现降低了这种复杂性。不需要购买专用的硬件,只需启动一个具有适当配置的新虚拟机。然而,分布式软件安装的所有复杂性仍然存在。

Docker为虚拟化环境提供了一个更方便的模型,但它本身并没有解决任何与容器之间交互相关的问题。然而,通过为部署小型虚拟化组件(容器)提供一个标准模型,docker为定义和部署分布式系统提供了更好的模式。

Kubernetes已经成为编排基于容器的应用程序的最流行的框架。编制包括创建、配置、扩展和管理多个容器化微服务,以交付集成的分布式应用程序。使用Kubernetes,可以轻松地部署和迁移复杂的应用程序拓扑。

数据库服务器传统上在虚拟化和集装箱环境的范围之外存在于某种程度上。传统的单片数据库服务器需要专用于高速持久存储的访问,这很难在虚拟化环境中提供。因此,传统数据库服务器趋于在单个大型主机上运行,​​因此它们不容易符合集装箱化横向扩展架构。

然而,现代数据库越来越多地是由跨多个节点运行的多个进程组成的分布式系统。Cassandra、CockroachDB和MongoDB都是很少部署为单实例数据库服务器的数据库例子。

对于MongoDB,即使是最简单的部署,通常也是一个由单个主节点和多个从节点组成的副本集。更高级的MongoDB部署包括多个“分片”副本集,连同路由器(mongos)进程和一个包含配置信息的特殊副本集。最简单的MongoDB分片部署将包括至少10个进程运行在相同数量的节点上。

手动设置分布式MongoDB集群是一个复杂和错误的过程。但是,MongoDB提供了一个Kubernetes运算符,它允许在Kubernetes集群中易于易于建立这样的部署。“运算符”是一个控制器程序,在Kubernetes集群中运行,并包含用于建立MongoDB集群拓扑的MongoDB特定逻辑。只需要使用配置文件提供运算符,操作员将执行REST-MAT​​ION和配置MongoDB节点,设置最佳实践安全性,并处理节点之间的连接。

使用Kubernetes操作符,可以在几分钟内启动一个复杂的分片MongoDB集群。由于Kubernetes可以在所有的云平台上使用,包括本地的,甚至是桌面的,所以可以轻松地配置测试和生产环境。此外,基于Kubernetes的MongoDB集群可以在物理Kubernetes平台的约束下按需扩展。Kubernetes还监视容器的运行状况,并将重新启动任何故障节点。

MongoDB公司为MongoDB的社区版提供了一个Kubernetes运营商,为企业版提供了另一个运营商。企业版运营商包括对企业特性的支持,如备份和高级安全特性。

对于那些正在使用MongoDB Atlas云服务的用户,MongoDB也为Atlas提供了一个Kubernetes运营商。该运营商允许从Kubernetes环境中访问Atlas基于云的服务。尽管Atlas本身并不运行在Kubernetes集群中,但运营商允许Kubernetes环境中的应用程序提供Atlas数据库服务。

Percona还提供了一个Kubernetes运营商来支持他们发布的MongoDB。MongoDB的Percona发行版是一个开源发行版,包含了MongoDB企业版的许多特性。Percona提供基于此分布支持的专业服务。Percona Kubernetes运营商支持MongoDB公司运营商的所有特性以及一些附加功能。如果您希望在Kubernetes环境中运行MongoDB, Percona操作员绝对值得研究。