1. MongoDB简介
MongoDB是一个开源的分布式文档存储数据库,使用C++编写,支持Linux、Windows、OS X操作系统,社区广泛!
MongoDB 的数据结构非常灵活,数据以 BSON(一种二进制形式的 JSON)的形式存储在文档中。MongoDB的灵活性允许开发者使用各种编程语言进行数据交互,其中包括 C、C++、Java、Python、Ruby、Perl、PHP、JavaScript 等语言。MongoDB 支持主从复制和自动分片,提供了表达查询和业务逻辑的丰富文档级别的查询器。
在云计算、大数据应用和社交网络等领域,MongoDB已经成为非常受欢迎的解决方案,且越来越多的人关注在这插件对ARM平台的安装与部署上。
2. 安装MongoDB
2.1 下载MongoDB
由于ARM架构系统比较少,官方可能并没有提供ARM64的下载包,因此你可以从官网上下载 tarball 格式的压缩包进行安装。
2.2 解压MongoDB
下载完成之后,我们解压MongoDB。
$ tar -zxvf mongodb-linux-aarch64-ubuntu1804-4.0.0.tgz
解压后我们可以看到两个文件夹,bin文件夹中包含了启动MongoDB服务的命令。
2.3 配置MongoDB
解压之后,我们需要进行 MongoDB 的配置。当然,现在我们还没有创建配置文件,我们可以手动创建一个 mongodb.conf 配置文件,然后用文本编辑器编辑我们的文件。
编辑步骤如下:
在需要安装mongoDB的目录下新建mongoDB配置文件
编辑配置文件并保存
下面是默认配置文件的示例:
port = 27017
dbpath = /data/db/
logpath = /var/log/mongodb/mongod.log
auth = true
journal = true
各参数解析如下:
port - 监听的端口
dbpath - 数据库存储目录
logpath - 日志输出目录和文件名
auth - 是否需要身份验证,true为需要验证
journal - 是否持久化
2.4 启动MongoDB
配置好以后,我们就需要启动 MongoDB 了。
命令如下:
mongod --config /xxx/xxx/mongodb.conf
2.5 连接MongoDB
上面的步骤启动 MongoDB 之后,我们就可以用 MongoDB 的客户端连接了。
命令如下:
mongo
3. 部署MongoDB
3.1 选择部署方式
选择合适的部署方式可以使我们的 MongoDB 更加稳定、灵活、方便管理、提供性能等。
根据部署方式的不同,MongoDB的管理方法也是有所不同的,目前常见的部署方式有:
基于单机环境的mongodb部署:适合存储增长缓慢的应用、需要垂直扩展(增加内存、硬盘等资源)
基于复制集的mongodb部署:适合数据的可用性要求高、读取比写入频繁的应用
基于分片集群的mongodb部署:适合数据量非常大、读写同时进行、业务增长快速的环境
3.2 基于复制集的MongoDB安装与部署
基于复制集的MongoDB包括了主副本模式和多副本模式,为了保证数据安全,这里我们介绍比较常用的 multi-arbiter 架构。
3.2.1 架构介绍
multi-arbiter架构主要是将两个数据节点配置成副本集的Primary和Secondary,在多节点的架构上添加了Arbiter节点,实现了复制集的“3节点最佳实践”模式。
3.2.2 架构图示
multi-arbiter架构的图示如下所示:
3.2.3 构造多副本集群的步骤:
敲开MongoDB的39017,27017和29017端口所属的防火墙
创建多节点副本集群
添加Arbiter(仲裁节点)
修改/rsArbiter/run.sh
使用mongo命令检查复制集的状态
3.2.4 修改服务器的hosts,请务必进行此步操作
在进行多数据节点(含Arbiter)的创建和连接之前,请一定先确认服务器的hosts是否正确并修改为合适的主机名,否则后续操作可能会失败。
vim /etc/hosts
在编辑页面中进行主机名的确认与修改,如下:
127.0.0.1 localhost
192.168.xxx.10 mongodb1
192.168.xxx.11 mongodb2
192.168.xxx.12 mongodb3
192.168.xxx.13 arbi1
3.2.5 创建多节点副本集群
standalone模式:启动mongod,创建由一个mongod数据库实例组成的复制集,稍有不慎就可能会遇到各种问题。
replication模式:启动并分别设置多个mongod实例,然后将它们组成复制集。这样,因为多个mongod提供了高可用性,所以我们省去了不少烦恼。
这里我们的需求是创建一个由2个数据节点和1个仲裁节点构成的“multi-arbiter”架构的复制集群。我们可以考虑采用以下的几条指令来实现:
mkdir /rs0
mkdir /rs1
mkdir /rsArbiter
```
启动mongodb实例
```
mongod --dbpath /rs0 --replSet rs0 --port 29017
mongod --dbpath /rs1 --replSet rs0 --port 27017
mongod --dbpath /rsArbiter --replSet rs0 --port 39017 --oplogSize 50
3.2.6 添加Arbiter
添加过程如下:
mongo --port 29017
rs.add("mongodb3:27017")
rs.addArb("arbi1:39017")
rs.status()
3.2.7 修改/rsArbiter/run.sh
通过修改/etc/mongod.conf文件,我们可以改变mongdod启动时的默认设置。在编辑文件之前,我们需要确保mongo所在的路径已经加入到$PATH环境变量中。先在终端中执行:
PATH=$PATH:/path/to/mongo/bin
在之后的提示符下,执行如下命令编辑cfg/primary.dat文件:
vim cfg/primary.dat
将下列命令复制粘贴到204行到最后:
while [ true ]
do
mongo --port 39017 --eval "var rs = rs.status().members; var found = false; for(var i in rs) {var node = rs[i]; if(node.stateStr.endsWith('(primary)')) found = true ;} if (!found) rs.addArb('arbi1:39017'); sleep 10;"
done
3.2.8 使用mongo命令检查复制集的状态
[root@mongodb1 ~]#mongo --port 39017
mongos>rs.status()
4 总结
通过本文,我们了解了在ARM架构下架构MongoDB的安装与部署方法,同时了解了基于复制集的MongoDB安装与部署
基于复制集的MongoDB可以通过构造multi-arbiter结构(包括两个数据节点、一个仲裁节点)来实现分布式数据节点的部署,保障了大规模数据应用的高可扩展性、安全性和灾备性。在部署过程中,需要注意一些基本的配置,例如开放端口、启动mongodb实例等,并且可以进行集群状态的检查,提升集群的运维便利性。