欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

手把手教你用Docker部署一个MongoDB集群

程序员文章站 2022-04-17 16:23:47
...

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中最像关系数据库的。支持类似于面向对象的查询语言,几

【编者的话】MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中最像关系数据库的。支持类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。本文介绍了如何使用Docker搭建MongoDB集群。

手把手教你用Docker部署一个MongoDB集群

本文我会向大家介绍如何使用Docker部署一个MongoDB集群,具体如下:

首先要准备三个运行的Docker服务器,这意味着你要准备一个安装了Docker的本地Vagrant Box虚拟机(系统可以使用CoreOS)或者使用AWS或者其它的你喜欢的方式。

步骤 Step1

你要拿到3台Docker服务器的IP地址,并且将下面给出的IP地址配置到所有的服务器上面,每一台服务器都要执行如下命令(记得要替换掉IP地址哦):

root@node root@node

理想情况下你并不需要这么做,这些IP都是可以通过DNS自动配置好的。但是这样会更加简单,,毕竟这只是一次安装测试。

Step2

为每个节点创建密钥文件。在其中某一台服务器上面执行如下的命令,然后把密钥文件复制到其余两个服务器的同样的位置。

在这个教程中,我将把所有的东西都放在“/home/core”文件夹中。

core root@node core root@node keyfile root@node keyfile root@node

这个密钥文件的所有者被设置成id为“999”的用户了,因为在MongoDB的Docker容器中,这个用户需要有操作密钥文件的权限。

Step3

启动node1(即第一台Docker服务器)的MongoDB容器。它会启动一个没有身份验证机制的容器,所以我们要设置一个用户。

name mongo \ db \ keyfile \ \ \

现在创建一个admin用户。我们可以连接到刚刚启动的mongoDB容器,并进入一个交互式的shell环境.

这时候,我们就进到MongoDB的Docker容器里面了,然后我们要打开一个mongo shell环境:

上面的命令可以打开mongo shell环境。执行后你会看到这样的输出:

connecting to: test see http http

切换到admin用户:

admin switched to db admin

创建一个新的site admin 用户

user pwd roles

创建成功的话你会看到如下的成功信息:

{ } ]
}

创建一个root用户:

user pwd roles

你会看到如下的成功信息:

{ } ]
}

我们已经创建好了我们以后要使用的几个用户,现在我们不会退出交互式shell环境(mongo和Docker容器的环境)。

bye root@node1 Step4

停止第一个MongoDB实例:

Step5

这次使用密钥文件启动第一台MongoDB实例(还是在node1上面操作的)。

root@node1:/# docker rm mongo root@node1:/# docker run \ --name mongo \ db \ keyfile \ \ \ \ \ \ --smallfiles \ keyfile \

注意:

  • --keyFile的路径是/opt/keyfile/mongodb-keyfile,这是正确的。这是密钥文件在Docker内部的地址,我们用-v选项将密钥文件映射到容器内部的那个路径上(即:/opt/keyfile/mongodb-keyfile)。
  • --add-host把这些信息添加到Docker容器的/etc/hosts文件中,所以我们可以使用域名而不是IP地址了。在实际的生产环境中这些信息都是DNS,这些参数都可以忽略。
  • Step6

    连接到副本集上并且安装配置好它。这还是在node1上面进行的。我们要开启另外一个新的交互式shell环境进入mongo容器,同时开启一个mongo shell环境:

    bash root@node1:/# mongo

    切换到admin用户下:

    admin switched to db admin

    因为我们已经设置了一个密码,所以这次我们不得不做身份验证。我们把密码设置为:password。

    现在我们可以开启副本集:

    Step7

    验证已经初始化的副本集的配置:

    > rs0 r { } ]
    } Step8

    在其余的两个节点启动MongoDB。