如何使用容器实现生产级别的MongoDB sharding集群的一键交付

作者介绍

魏世江
希云联合创始人、CTO,负责基于Docker的自动化服务管理平台的后端研发工作。擅长Docker相关技术、PasS平台架构及企业自动化运维系统的设计及开发。创业之前在新浪SAE平台任技术经理,从09年SAE立项至13年下半年的四年多时间里,一直负责SAEPasS平台各种基于Web的服务管理系统的设计及开发,在DevOps方面积累了丰富的经验。Docker引擎代码贡献者,在Docker开源项目中代码贡献量全球排名50名左右。

开篇

Mongo在很早就支持了replication set和sharding集群。经过了这么多年的沉淀,Mongo集群的成熟度已经非常稳定,被大量公司用到自己的生产环境下。如何使用容器技术来实现Mongo集群的一键式交付部署,屏蔽底层实现的细节,是很多人关心的话题。

本文将给大家介绍基于进程的容器技术实现Mongo sharding集群的一键部署,充分展现了容器的强大威力。

什么是Mongo sharding集群

Mongo(mongodb.com)作为流行的文档数据库,有很多有趣的特性,比如内置failover、支持文件存储、支持mapreduce以及可以在服务器端直接运行js脚本,当然我们今天最关心的是它内置的sharding功能。分布式系统的设计向来具有很高的挑战,在最近一些年,随着互联网的发展,分布式的实践逐步开始得到推广和重视。

如果要深入了解Mongo sharding的原理,参考:

https://docs.mongodb.com/manual/sharding

集群编排规划

mongo集群涉及到多个服务,包括:

  • configdb, sharding集群的中心配置,是一个replicaset集群,监听在27019端口
  • mongos, 作为sharding集群的访问和管理入口,监听在27017端口
  • mongo slices,数据分片节点
  • mongo replicaset,每个数据分片是一个replicaset集群,用于保障没有单点,并提供自动failover能力
  • mongo express, mongodb的管理dashboard

拓扑图

本次部署,configdb3台,mongo数据节点12台,分成4个分片,每个分片1主2从

00

首先准备mongo镜像

Mongo官方已经提供了Mongo 3.2的镜像,可以用来作为Mongo集群的镜像.为了减少后续维护工作,我们尽可能不构建自己的镜像。

下面我们按照mongo sharding官方的部署文档,一步步编排集群。

https://docs.mongodb.com/manual/tutorial/deploy-shard-cluster/

部署的顺序是:configdb -> mongos -> mongo-replicaset/mongo-slices -> mongo-express

部署mongo configdb

准备configdb的配置文件

# cat mongo-config.conf

systemLog:
   verbosity: 0

operationProfiling:
   slowOpThresholdMs: 3000

processManagement:
   fork: false

storage:
   dbPath: /data/db
   journal:
      enabled: true
   engine: wiredTiger

replication:
   replSetName: {
  {.ReplSetName}}

sharding:
   clusterRole: configsvr

net:
   port: 27019

准备 configdb集群的初始化js脚本

# cat configdb-init.js
{
  { $s := service "mongo-configsvr" }}
config = {
    _id : "{
   {.ReplSetName}}",
     members : [
     {
  {range $c := $s.Containers }}{_id :
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值