架构MongoDB在ARM架构的安装与部署

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实例等,并且可以进行集群状态的检查,提升集群的运维便利性。

数据库标签