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

一.搭建之前,介绍以下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.仲裁节点是一种特殊的节点,它本身并不存储数据,主要的作用是决定哪一个备节点在主节点挂掉之后提升为主节点,所以客户端不需要连接此节点。这里虽然只有一个备节点,但是仍然需要一个仲裁节点来提升备节点级别。
 
 
 
三.开始搭建集群。
如果下载速度过慢你可以在虚拟机中下载,只需要在路径前加wget即可。
 
 
 
 
2.下载完之后在 /usr/local下创建目录
# mkdir mongodb
 
 
 
 
3.进入 mongodb 目录,把下载的压缩包解压三次。
# cd mongodb/
 
 
 
 
 
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();
到这里副本集搭建完毕 。
posted @   RM-RF?  阅读(1187)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 提示词工程——AI应用必不可少的技术
· 地球OL攻略 —— 某应届生求职总结
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界
点击右上角即可分享
微信分享提示