1.本次搭建使用三台centos7主机搭建集群,关闭防火墙和selinux服务
2.主机信息如下图所示
主机名称 | IP | Port | Service |
A | 10.1.60.114 | 27017 | mongodb |
B | 10.1.60.115 | 27017 | mongodb |
C | 10.1.60.118 | 27017 | mongodb |
3.从官网下载mongodb安装包(我这里下载的是6.0.5版本的tgz包)
Install MongoDB Community Kubernetes Operator | MongoDB
4.创建mongodb目录并将安装包放到目录下解压(以下所有操作没有特殊标明的都要在三台主机上执行)
mkdir /etc/mongodb
tar -zxvf /etc/mongodb/mongodb-linux-x86_64-rhel70-6.0.5.tgz /etc/mongodb/
mv /etc/mongodb/mongodb-linux-x86_64-rhel70-6.0.5 /etc/mongodb/mongodb
ls /etc/mongodb
5. 创建mongodb存放数据目录和配置文件目录
cd /etc/mongodb/mongodb
mkdir data
mkdir conf
6.编辑mongodb配置文件
vi conf/mongodb.conf
systemLog:
destination: file
logAppend: true #以追加的形式写入日志
path: /etc/mongodb/mongodb/mongodb.log #存放mongodb日志文件
storage:
dbPath: /etc/mongodb/mongodb/data #mongodb存放数据目录
journal:
enabled: true #journal是一种用于持久化写入操作的机制。当MongoDB执行写入操作时,它会先将操作写入journal文件,然后再写入到数据文件中。这样可以确保在发生故障或崩溃时,MongoDB可以从journal文件中恢复数据,并保证数据的一致性和完整性
processManagement:
fork: true #在后台启动mongodb服务
pidFilePath: /etc/mongodb/mongodb/mongodb.pid #存放mongodb服务的pid
net:
port: 27017 #mongodb客户端端口
bindIp: 0.0.0.0
replication:
replSetName: "rs" #副本集名称
7.启动mongodb服务
bin/mongod --config conf/mongodb.conf
bin/mongod --config conf/mongodb.conf --shutdown 此条是mongodb停止服务命令
8.安装mongosh服务(mongodb的6.0.5版本没有自带的客户端)
参考:
安装mongodb客户端_Apex Predator的博客-CSDN博客
9.初始化副本集(在任意节点执行即可)
/etc/mongodb/mongosh-1.8.1-linux-x64/bin/mongosh --port 27017
rs.initiate({
_id:"rs" #填写配置文件中设置的副本集名称
members:[
{_id:0,host:"10.1.60.114:27017"},
{_id:1,host:"10.1.60.115:27017"},
{_id:2,host:"10.1.60.118:27017",arbiterOnly:true} #配置仲裁节点
]})
10.查看副本集状态
rs.status()
可以看到副本集成功分配了主节点和备节点还有仲裁节点
11.测试副本集主备切换
把主节点的服务先关闭,模拟主节点宕机
bin/mongod --config config/mongodb.conf --shutdown
登录114节点查看副本集状态
/etc/mongodb/mongosh-1.8.1-linux-x64/bin/mongosh --host 10.1.60.114 --port 27017
rs.status()
可以看到115节点服务状态不正常,114变更为了主节点,写入查询更新等操作在新的主节点上也正常,这里就不展示了,我已经测试过了
现在将115节点恢复看一下副本集状态
bin/mongod --config conf/mongodb.conf
/etc/mongodb/mongosh-1.8.1-linux-x64/bin/mongosh --port 27017
rs.status()
可以看到115节点服务恢复正常后,变成了备节点,114依然是主节点