本文共 3870 字,大约阅读时间需要 12 分钟。
原文:Running MongoDB as a Microservice with Docker and Kubernetes
作者:Andrew Morgan译者:徐雷MongoDB是NoSQL排名第一的数据库,Docker是最流行的容器引擎,Kubernetes是谷歌开源的容器编排工具!Kubernetes和Docker使MongoDB的开发运维部署变得更加简单和强大。1、Docker背景介绍想快速安装MongoDB吗?现在只需要执行一个Docker命令,就能快速启动一个轻量级,独立的沙盒;在多个不同的服务器环境中搭建集群,快速部署相同的应用?使用Docker容器会非常的简单,构建自己的Docker容器映像,让开发,测试,运营和支持团队启动相同的环境克隆。Docker容器正在彻底改变整个软件生命周期:从最早的技术实验和概念证明到开发,测试,部署和支持。Kubernetes工具可以管理多个Docker容器的创建,升级和高可用性。K8s业务流程还控制容器如何连接以从多个微服务容器构建复杂的应用程序。Docker容器和K8s编排已经成为DevOps团队的最爱,现在广泛融入到持续集成(CI)和持续交付(CD)工作流程中。本文深入探讨了在Docker容器中运行和编排MongoDB所面临的额外挑战,并介绍这些挑战的解决办法。**如果要Linux实战Docker安装Mongodb可以参考我写的文章。《Linux实战Docker容器安装MongoDB,阿里Docker镜像仓库加速》。2、MongoDB容器的注意事项使用Docker容器和K8S运行MongoDB额外注意事项:3、使用Docker和Kubernetes实现MongoDB Replica Set副本集群
如上所述,当使用诸如Kubernetes之类的编排工具部署时,MongoDB等分布式数据库需要特别小心。本节将进一步详细介绍这一点。我们首先在单个Kubernetes集群中创建整个MongoDB副本集群(通常位于单个数据中心内 -- 显然不提供地理冗余)。实际上,很少需要更改配置来支持跨多个中心的集群架构,这些步骤将在后面介绍。Replica Set副本集群的每个成员将作为单独的pod运行,其中一个服务公开外部IP地址和端口。这个“固定”的IP地址很重要,因为外部应用程序和其他副本集成员可以依赖它,在重新编排pod时保持地址不变。
下图说明了其中一个pod以及关联的Replication Controller和服务。
图1: MongoDB Replica Set副本集群成员配置为Kubernetes Pod并作为服务公开
配置Kubernetes Pod步骤如下:下图显示了Replica Set副本集群的第二个成员的配置。
图2:第二个MongoDB副本集群成员配置为Kubernetes Pod只有这些配置不一样,其他90%的配置是相同的:4、多个可用区MongoDB Replica Set副本集群
上面创建的副本集存在当机风险,因为一切都在同一个GCE集群中运行,本质上在同一可用区中。如果发生可用区脱机的重大事故,则整个MongoDB副本集将不可用。如果需要做地理空间的分布式冗余,可以在三个不同的可用区域或区域中运行三个窗格。创建三个可用区域的分布式副本集群,并不需要太多的配置修改--只需要创建三个集群。每个群集都需要自己的Kubernetes YAML文件,该文件为集群中的单个节点定义pod,Replication Controller和服务。
图5:在多个可用区域上运行的副本集5、扩展阅读要了解有关Docker容器和K8s编排的更多信息 - 包括所涉及的技术及其提供的业务优势 - 请阅读“启用微服务:容器和编排说明”白皮书。这个白皮书还提供了在Google容器引擎中的Docker和Kubernetes上启动并运行本文中描述的副本集群的完整说明。6、参考资料原文地址:,
作者:Andrew Morgan,MongoDB的首席产品营销经理。 博客(clusterdb.com)@andrewmorgan
《Linux实战Docker容器安装MongoDB,阿里Docker镜像仓库加速》
译者:徐雷,MongoDB中文社区联席主席、核心专家组成员,阿里云栖课堂Java讲师,阿里云大学MongoDB讲师,《MongoDB实战》第2版译者。
阿里巴巴Java群超过3800人
直播地址:Java技术进阶群
进群方式:钉钉扫码入群阿里巴巴MongoDB群转载地址:http://lutla.baihongyu.com/