当前位置:首页 > 数据库 > mongodb主从仲裁节点配置

mongodb主从仲裁节点配置

2022年09月16日 10:13:52数据库4

环境介绍

  • 系统:CentOS 6.9
  • MongoDB版本:mongodb-linux-x86_64-rhel62-3.4.10

  • 设备3台:172.16.10.42(27020端口),172.16.10.90(27020端口),172.16.10.199(27020端口),如果没有足够设备也可部署同一台设备上面,只需要修改端口即可。

准备工作

  • 同步系统时间:保证各个机器的时间一致,可使用/usr/sbin/ntpdate time.nist.gov 进行系统时间同步,在系统任务中添加新的任务 crontab -e
    0 12 * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1

  • 配置同时允许打开的文件最大数
    查看系统允许同时打开文件的最大数 :ulimit -a
    查看系统允许的最大句柄文件数:cat /proc/sys/fs/file-max
    修改允许最大打开文件数,修改之后会永久生效,在【/etc/security/limits.conf】中,增加下面的代码:
    * soft nofile 65536
    * hard nofile 65536

  • 保证3台设备相互之间网络访问可达

  • 防火墙打开27020端口
  1. /sbin/iptables -I INPUT -p tcp --dport 27020 -j ACCEPT #开放端口
  2. /etc/init.d/iptables save # 保存修改
  3. service iptables restart # 重启防火墙,修改生效复制代码

准备安装

  • 选择MongoDB存放位置,例如: /home/mongodb
  • 使用cd 命令cd /home/mongodb 进入mongodb 目录,下载MongoDB 压缩包 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.4.10.tgz
  • 解压文件 tar -xzvf mongodb-linux-x86_64-rhel62-3.4.10.tgz 到当前目录下
  • 创建数据存放文件夹 mkdir data,创建日志存放文件夹 mkdir log
  • 分配机器172.16.10.42(主节点),172.16.10.90(从节点),172.16.10.199(arb仲裁节点)

安装MongoDB主节点

  • 在mongdb 目录下新建mongod.conf文件,编辑如下内容
  1. systemLog:
  2. destination: file
  3. path: /home/mongodb/ log/mongod.log #日志存放位置
  4. logAppend: true #以追加的形式写入日志
  5. storage:
  6. dbPath: /home/mongodb/data #数据存放地址
  7. journal:
  8. enabled: true
  9. directoryPerDB: true #每个数据库单独一个目录
  10. processManagement:
  11. fork: true
  12. pidFilePath: /home/mongodb/mongod.pid #进程文件存放位置
  13. net:
  14. port: 27020 #mongo 占用的端口号
  15. setParameter:
  16. failIndexKeyTooLong: false复制代码
  • 启动mongdb服务 /home/mongodb/mongodb-linux-x86_64-rhel62-3.4.10/bin/mongod --config /home/mongodb/mongod.conf

  • 控制台连接mongo /home/mongodb/mongodb-linux-x86_64-rhel62-3.4.10/bin/mongo 127.0.0.1:27020 ,必须指定端口号,因为默认的端口为27017

  • 创建管理员帐号

  1. use admin; #进入admin数据库,系统自带
  2. db.createUser(
  3. {
  4. user: "admin",
  5. pwd: "admin",
  6. roles: [ "__system","backup","clusterAdmin","dbAdminAnyDatabase","readWriteAnyDatabase","userAdminAnyDatabase" ]
  7. }
  8. ); #创建用户,并分配用户角色复制代码
  • 查询上一步操作创建的用户 db.system.users.find({"user":"admin"})
    查询结果如下:
  • 关闭mongodb 服务 /home/mongodb/mongodb-linux-x86_64-rhel62-3.4.10/bin/mongod --config /home/mongodb/mongod.conf --shutdown

  • 生成keyfile文件 openssl rand -base64 741 > /home/mongodb/mongodb.keyfile

  • 修改主节点mongd.conf文件为如下内容

  1. systemLog:
  2. destination: file
  3. path: /home/mongodb/ log/mongod.log
  4. logAppend: true
  5. storage:
  6. dbPath: /home/mongodb/data
  7. journal:
  8. enabled: true
  9. directoryPerDB: true
  10. processManagement:
  11. fork: true
  12. pidFilePath: /home/mongodb/mongod.pid
  13. net:
  14. port: 27020
  15. setParameter:
  16. failIndexKeyTooLong: false
  17. security:
  18. keyFile: /home/mongodb/mongodb.keyfile # 使用keyfile认证
  19. authorization: enabled
  20. replication:
  21. replSetName: mongodb_set #名称可以自定义,但是必须保证主节点、从节点、仲裁节点统一复制代码

安装MongoDB从节点、仲裁节点

  • 同理在172.16.10.90,172.16.10.199 /home/mongodb 目录下新建 data、log目录

  • 拷贝主节点 (172.16.10.42) /home/mongodb 目录下的 mongodb.keyfilemongod.conf文件以及 mongodb-linux-x86_64-rhel62-3.4.10 文件夹 到从节点已经仲裁节点的/home/mongodb 目录下

  • 修改仲裁节点` mongod.conf`` 文件内容如下

  1. systemLog:
  2. destination: file
  3. path: /home/mongodb/ log/mongod.log
  4. logAppend: true
  5. storage:
  6. dbPath: /home/mongodb/data
  7. journal:
  8. enabled: false # 仲裁节点本地不保存数据
  9. directoryPerDB: true
  10. processManagement:
  11. fork: true
  12. pidFilePath: /home/mongodb/mongod.pid
  13. net:
  14. port: 27020
  15. setParameter:
  16. failIndexKeyTooLong: false
  17. security:
  18. keyFile: /home/mongodb/mongodb.keyfile # 使用keyfile认证
  19. authorization: enabled
  20. replication:
  21. replSetName: mongodb_set #名称可以自定义,但是必须保证主节点、从节点、仲裁节点统一复制代码

配置主节点、从节点、仲裁节点

  • 分别在三台设备上执行 /home/mongodb/mongodb-linux-x86_64-rhel62-3.4.10/bin/mongod --config /home/mongodb/mongod.conf 启动mongodb服务

  • 控制台连接主节点(172.16.10.42)mongo /home/mongodb/mongodb-linux-x86_64-rhel62-3.4.10/bin/mongo 127.0.0.1:27020 -u admin -p , 使用admin帐号密码登录mongodb

  • 初始化副本集配置
  1. use admin;
  2. config={_id: "mongodb_set",members:[{_id:0,host:"172.16.10.42","priority":20}]}
  3. rs.initiate(config); 复制代码

确认返回的是{ "ok" : 1 }
上面config里面,是当前主节点对外的ip,即从节点以及仲裁节点能够访问到的ip
查看集群节点的状态:rs.status();

  • 添加仲裁节点

rs.addArb("172.16.10.199:27020");

  • 添加从节点

rs.add("172.16.10.90:27020");

  • 查看集群配置rs.config();
    显示结果如下
  1. mongodb_set:PRIMARY> rs. config()
  2. {
  3. "_id" : "mongodb_set",
  4. "version" : 4,
  5. "protocolVersion" : NumberLong(1),
  6. "members" : [
  7. {
  8. "_id" : 0,
  9. "host" : "172.16.10.42:27020",
  10. "arbiterOnly" : false,
  11. "buildIndexes" : true,
  12. "hidden" : false,
  13. "priority" : 20,
  14. "tags" : {
  15.  
  16. },
  17. "slaveDelay" : NumberLong(0),
  18. "votes" : 1
  19. },
  20. {
  21. "_id" : 1,
  22. "host" : "172.16.10.199:27020",
  23. "arbiterOnly" : true,
  24. "buildIndexes" : true,
  25. "hidden" : false,
  26. "priority" : 1,
  27. "tags" : {
  28.  
  29. },
  30. "slaveDelay" : NumberLong(0),
  31. "votes" : 1
  32. },
  33. {
  34. "_id" : 2,
  35. "host" : "172.16.10.90:27020",
  36. "arbiterOnly" : false,
  37. "buildIndexes" : true,
  38. "hidden" : false,
  39. "priority" : 1,
  40. "tags" : {
  41.  
  42. },
  43. "slaveDelay" : NumberLong(0),
  44. "votes" : 1
  45. }
  46. ],
  47. "settings" : {
  48. "chainingAllowed" : true,
  49. "heartbeatIntervalMillis" : 2000,
  50. "heartbeatTimeoutSecs" : 10,
  51. "electionTimeoutMillis" : 10000,
  52. "catchUpTimeoutMillis" : 60000,
  53. "getLastErrorModes" : {
  54.  
  55. },
  56. "getLastErrorDefaults" : {
  57. "w" : 1,
  58. "wtimeout" : 0
  59. },
  60. "replicaSetId" : ObjectId("59f82d3d21b782e865dc270a")
  61. }
  62. } 复制代码
  • 修改从节点为只读节点
    获取当前配置,修改之后重新写入配置
  1. cfg = rs.conf();
  2. cfg.members[2].priority=0
  3. rs.reconfig(cfg); 复制代码
  • 修改从节点为永远不可能被选为主节点(非必须)
    获取当前配置,修改之后重新写入配置
  1. cfg = rs.conf();
  2. cfg.members[2].votes=0
  3. rs.reconfig(cfg); 复制代码

所有配置到此结束

转载于:https://juejin.im/post/59f91decf265da43231a48bc

 
https://blog.csdn.net/weixin_33691817/article/details/91431611
 
 
 

作者:seasonzone
来源链接:https://www.cnblogs.com/seasonzone/p/14399311.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/database/41786.html

标签: MongoDB
分享给朋友:

“mongodb主从仲裁节点配置” 的相关文章

Spring Boot WebFlux 集成 Mongodb 数据源操作

Spring Boot WebFlux 集成 Mongodb 数据源操作

WebFlux 整合 Mongodb 前言 上一讲用 Map 数据结构内存式存储了数据。这样数据就不会持久化,本文我们用 MongoDB 来实现 WebFlux 对数据源的操作。 什么是 MongoDB ? 官网:https://...

Spring Batch 读 10 万条记录,写到 MongoDB

实践内容 从 MariaDB 一张表内读 10 万条记录,经处理后写到 MongoDB 。 具体实现 1、新建 Spring Boot 应用,依赖如下: <!-- Web 应用 -->...

springboot整合mongodb changestream

前言 changestream是monggodb的3.6版本之后出现的一种基于collection(数据库集合)的变更事件流,应用程序通过db.collection.watch()这样的命令可以获得被监听对象的实时变更 想必对mysql主从复...

mongodb与mysql命令对比

mongodb与mysql命令对比 传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB是由数据库(database)、集合(collection)、文档对象(document)三个层次组成。MongoDB对于关...

WebFlux 集成 Thymeleaf 、 Mongodb 实践 - Spring Boot(六)

WebFlux 集成 Thymeleaf 、 Mongodb 实践 - Spring Boot(六)

这是泥瓦匠的第105篇原创 文章工程: JDK 1.8 Maven 3.5.2 Spring Boot 2.1.3.RELEASE 工程名:springboot-webflux-5-thymeleaf-mong...

MongoDB与Mysql常用命令解释

原文 本文旨在介绍MongoDB,Mysql的常用命令:将MongoDB 和传统的关系型数据库的常用命令对照起来学习,更加便于记忆和理解。 MongoDB是由数据库(database/repository)、集合(collection)、文档对象(documen...

JAVA单例MongoDB工具类

我经常对MongoDB进行一些基础操作,将这些常用操作合并到一个工具类中,方便自己开发使用。 没用Spring Data、Morphia等框架是为了减少学习、维护成本,另外自己直接JDBC方式的话可以更灵活,为自己以后的积累留一个脚印。   JAVA驱动版本...

MongodB数据库安装教程

MongodB数据库安装教程

MongodB数据库安装教程 1 官网下载msi安装文件 官网地址:[传送门](MongoDB Community Download | MongoDB) 阿里云盘:「mongodb-windows-x86_64-5.0.5-s...

Centos7下yum安装mongodb

Centos7下yum安装mongodb

Centos7下yum安装mongodb 简介 MongoDB 是一个基于分布式 文件存储的NoSQL数据库 由C++语言编写,运行稳定,性能高 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案 查看官方网站...

linux (centos)下安装 mongodb  v3.2 笔记

linux (centos)下安装 mongodb v3.2 笔记

  1.下载mongodb      默认都是64位的,这个有点尴尬。。。  centos系统 64位地址: https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel6...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。