linux-mongodb集群搭建(单机三台)

参考文档:https://blog.csdn.net/zhangcongyi420/article/details/92738646
https://blog.csdn.net/supermapsupport/article/details/78953080
一. 搭建之前,介绍以下 mongodb 集群的几种搭建方式:
(1). 首先集群方式有三种:Replica Set(副本集)、Sharding(分片集)、Master-Slave(主从)三种方式。
 
(2). 三种模式各有优劣,适用于不同的场合,属 Replica set(副本集)应用最为广泛,主从模式现在用的较少,sharding 模式最为完备,但配置维护较为复杂。
 
(3).Master/Slave(主从)
先说最后一个,是 Master/Slave,不是 Slaver。这种方式基本上不再推荐使用,只能从 Master 复制数据到 Slave,并不提供高可用,一旦 Master 结点出故障就比较难处理。具体细节就不说了,反正已经不推荐使用。
 
(4).Replica Set(副本集)
1. 即常说的副本集。副本集的主要目标有几个:
2. 高可用(主要目标):当一个结点故障时自动切换到其他结点;
3. 数据冗余(主要目标):数据复制到 n 个结点上,增加数据安全性,同时为高可用提供基础;
4. 功能隔离(次要目标):使用不同的结点隔离某些有特殊需求的功能,比如使用一个结点进行 OLAP 运算(大规模资源占用),使用一个结点在远程做灾备(性能要求不如本地高),读写分离等等主节点举有读写权限,而从节点只有读权限;
 
(5).Sharded Cluster(分片集)
1. 即分片集。分片集的主要设计目标是:
2. 水平扩展:当一台服务器满足不了需求的时候,我们可以选择垂直扩展(增加服务器硬件),它虽然简单,但很容易达到极限,并且面临成本高等明显缺点。成本更低的方式是使用 n 台服务器组成集群来满足系统需求。这就是分片集的主要设计目标;
3. 缩短响应时间:因为可以把数据分散到多台服务器上,自然每台服务器的处理压力减小,处理时间就会缩短;
4. 这里会出现一个问题:假设每台服务器出故障的机率是 x%,那么 n 台服务器有一台出现故障的机率就是 x% * n,如果不做高可用设计,集群出现故障的概率就会随机器数量成正比增长,这在工程上是不能接受的。幸运的是我们已经有了解决高可用的方案,也就是复制集。所以 MongoDB 的分片集群要求每一个片都是复制集(当然测试环境也可以使用单结点,生产环境不推荐)。
 
 
 
 
二. 这里我们为了保证 mongodb 的高可用性,就给大家主要写 Replica Set(副本集)。
 
0
1. 首先我们这里搭建集群需要三个 mongdb,Mongodb(M) 表示主节点,Mongodb(S) 表示备节点,Mongodb(A) 表示仲裁节点。主备节点存储数据,仲裁节点不存储数据。客户端同时连接主节点与备节点,不连接仲裁节点。
 
2. 默认设置下,主节点提供所有增删查改服务,备节点不提供任何服务。但是可以通过设置使备节点提供查询服务,这样就可以减少主节点的压力,当客户端进行数据查询时,请求自动转到备节点上。这个设置叫做 Read Preference Modes,同时 Java 客户端提供了简单的配置方式,可以不必直接对数据库进行操作。
 
3. 仲裁节点是一种特殊的节点,它本身并不存储数据,主要的作用是决定哪一个备节点在主节点挂掉之后提升为主节点,所以客户端不需要连接此节点。这里虽然只有一个备节点,但是仍然需要一个仲裁节点来提升备节点级别。
 
 
 
三. 开始搭建集群。
1. 首先在官网下载 mongodb https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.13.tgz
如果下载速度过慢你可以在虚拟机中下载,只需要在路径前加 wget 即可。
 
 
 
 
2. 下载完之后在 /usr/local 下创建目录
# mkdir mongodb
 
 
 
 
3. 进入 mongodb 目录,把下载的压缩包解压三次。
# cd mongodb/
# tar -zxvf mongodb-linux-x86_64-4.0.13.tgz
 
 
 
 
 
4. 解压三个 mongdb 后改名字更好区分主从节点和仲裁节点
# mv mongodb-linux-x86_64-4.0.13.tgz /usr/local/mongodb/master
# mv mongodb-linux-x86_64-4.0.13.tgz /usr/local/mongodb/slaver
# mv mongodb-linux-x86_64-4.0.13.tgz /usr/local/mongodb/arbiter
 
 
 
 
 
5. 然后 cd {/master/slaver/arbiter} 给这三个节点都创建一个 data 目录, 和配置文件
data 目录:
# cd {/master/slaver/arbiter}
# mkdir -p data/db ----db 是用来存放数据
# mkdir -p data/logs ----logs 存放日志
-------- 继续在 logs 目录创建文件 mongodb.log
 
配置文件:
# cd bin/
# 进入 bin 目录下创建配置文件 mongodb.conf,配置文件内容如下:
dbpath =/usr/local/mongodb/master/data/db
logpath =/usr/local/mongodb/master/data/logs/mongodb.log
logappend = true
noprealloc=true
replSet = test
port = 27017
fork = true
bind_ip=0.0.0.0
其他两个节点配置只需要修改三个地方 dbpath 、logpath、port
 
 
 
 
 
 
 
6. 做完了上述的配置基本上就可以了,下面我们就来启动三个 mongodb
/usr/local/mongodb/master/bin/mongod -f /usr/local/mongodb/master/bin/mongodb.conf -- 启动
 
 
 
 
 
 
7. 启动之后进入 mongodb 客户端(需要环境变量支持)
# mongo ---- 进入客户端
# config = {
"_id":"test",
"members":[
{"_id":0,"host":"192.168.222.133:27017"},
{"_id":1,"host":"192.168.222.133:27018"},
{"_id":2,"host":"192.168.222.133:27019", arbiterOnly:true}
]
} ----- 创建副本集
--- arbiterOnly:true 仲裁节点。
 
#没报错就执行 # rs.initiate(config) 使集群 config 配置生效
 
#查看是否生效 # rs.status();
到这里副本集搭建完毕 。