当前位置: 首页 > news >正文

MongoDB-部署PSA(一主一从一仲裁)架构复制集群

目录

    • 环境信息
    • 环境准备
    • mongoDB配置&部署
    • 复制集群搭建

环境信息

IP端口节点
10.0.0.127017
10.0.0.227017
10.0.0.327017仲裁

环境准备

1.关闭THP

  • Transparent Huge Pages 简称 THP。透明大页面(THP)是一种Linux内存管理系统,通过使用更大的内存页面,可以减少具有大量内存的计算机上的Translation Lookaside Buffer(TLB)查找的开销。但是,数据库工作负载通常在THP上表现不佳,因为它们往往具有稀疏而不是连续的内存访问模式。 您应该在Linux机器上禁用THP以确保使用MongoDB获得最佳性能。
# 创建规则目录
root # mkdir /etc/tuned/no-thp
#创建规则配置文件
root # vim /etc/tuned/no-thp/tuned.conf
[main]
include=virtual-guest
[vm]
transparent_hugepages=never
#启动该规则(重启后可生效)
root # tuned-adm profile no-thp
#临时生效方法
root # echo 'never' >/sys/kernel/mm/transparent_hugepage/enabled
root # echo 'never' >/sys/kernel/mm/transparent_hugepage/defrag
#查看当前THP是否关闭(necer表示关闭)
root # cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
root # cat /sys/kernel/mm/transparent_hugepage/defrag
always madvise [never]

2.创建MongoDB用户,并禁止登录。

root # groupadd mongodb 
root # useradd  -r -g mongodb -s /bin/false mongodb

3.设置mongodb用户的ulimit

cat> /etc/security/limits.d/mongodb.conf <<EOF
mongodb soft nofile 65535
mongodb hard nofile 65535
mongodb soft nproc 65535
mongodb hard nproc 65535
mongodb soft memlock unlimited 
mongodb hardmemlock unlimited
EOF

4.安装MongoDB所需要的依赖包

root # yum install cyrus-sasl cyrus-sasl-gssapi cyrus-sasl-plain krb5-libs libcurl libpcap lm_sensors-libs net-snmp net-snmp-agent-libs openldap openssl rpm-libs tcp_wrappers-libs -y

mongoDB配置&部署

1.创建MongoDB目录

root # mkdir /data/mongodb
root # mkdir /data/mongodb/base
root # mkdir /data/mongodb/{data,conf,log}
root # mkdir /data/mongodb/data/27017
root # mkdir /data/mongodb/conf/27017
root # mkdir /data/mongodb/log/27017
#目录结构
root # tree /data/mongodb/
/data/mongodb/
├── base
├── conf
│   ├── 27017
├── data
│   ├── 27017
└── log├── 27017

2.下载并解压mongodb安装包

root # wget https://downloads.mongodb.com/linux/mongodb-linux-x86_64-enterprise-rhel70-5.0.28.tgz
root # tar xf mongodb-linux-x86_64-enterprise-rhel70-5.0.28.tgz  -C /data/mongodb/base/ --strip-components=1
#对mongodb目录进行授权
root # chown -R mongodb.mongodb /data/mongodb/

3.添加mongodb环境变量

[root@MongoDB~]# vim /etc/profile
export MONGODB_HOME=/data/mongodb/base
export PATH=$MONGODB_HOME/bin:$PATH
[root@MongoDB~]# source /etc/profile

4.添加mongodb的keyfile文件

#进入到conf目录
root # cd /data/mongodb/conf/27017
#生成keyfile文件
root # openssl rand -base64 756 >keyfile
#对keyfile文件进行授权
root # chmod 400 keyfile 
#将keyfile文件传输到其他两个节点的conf目录,三个节点的keyfile文件需保持一致
root # scp keyfile root@10.0.0.2: /data/mongodb/conf/27017
root # scp keyfile root@10.0.0.3: /data/mongodb/conf/27017

5.配置mongodb的conf文件

  • 配置文件需要修改项
    • 复制集群名称:replSetName: test
    • 监听地址:bindIp
主:
cat > /data/mongodb/conf/27017/mongodb.conf << EOF
systemLog:destination: filepath: "/data/mongodb/log/27017/mongodb.log"logAppend: true
storage:dbPath: "/data/mongodb/data/27017"directoryPerDB: true					#设置为true,修改数据目录存储模式,每个数据库的文件存储在DBPATH指定目录的不同的文件夹中。使用此选项,可以配置的MongoDB将数据存储在不同的磁盘设备上,以提高写入吞吐量或磁盘容量。默认为falsejournal:enabled: true						#启用操作日志,以确保写入持久性和数据的一致性,会在dbpath目录下创建journal目录commitIntervalMs: 100
operationProfiling:slowOpThresholdMs: 200mode: slowOpslowOpSampleRate: 1
processManagement:fork: truepidFilePath: "data/mongodb/data/27017/mongod.pid"
net:port: 27017bindIp: 127.0.0.1,10.0.0.1 #填写本地地址以及本机ip
replication:oplogSizeMB: 20480replSetName: test	#复制集名称
security:authorization: enabledkeyFile: "/data/mongodb/conf/27017/keyfile"
EOF副本:
cat > /data/mongodb/conf/27017/mongodb.conf << EOF
systemLog:destination: filepath: "/data/mongodb/log/27017/mongodb.log"logAppend: true
storage:dbPath: "/data/mongodb/data/27017"directoryPerDB: truejournal:enabled: truecommitIntervalMs: 100
operationProfiling:slowOpThresholdMs: 200mode: slowOpslowOpSampleRate: 1
processManagement:fork: truepidFilePath: "data/mongodb/data/27017/mongod.pid"
net:port: 27017bindIp: 127.0.0.1,10.0.0.2 
replication:oplogSizeMB: 20480replSetName: test
security:authorization: enabledkeyFile: "/data/mongodb/conf/27017/keyfile"
EOF仲裁:
cat > /data/mongodb/conf/27017/mongodb.conf << EOF
systemLog:destination: filepath: "/data/mongodb/log/27017/mongodb.log"logAppend: true
storage:dbPath: "/data/mongodb/data/27017"directoryPerDB: truejournal:enabled: truecommitIntervalMs: 100
operationProfiling:slowOpThresholdMs: 200mode: slowOpslowOpSampleRate: 1
processManagement:fork: truepidFilePath: "data/mongodb/data/27017/mongod.pid"
net:port: 27017bindIp: 127.0.0.1,10.0.0.3
replication:oplogSizeMB: 20480replSetName: test
security:authorization: enabledkeyFile: "/data/mongodb/conf/27017/keyfile"
EOF

6.启动MongoDB

#分别启动三台mongodb,先启动主,再到从,再到仲裁。
root # mongod --config /data/mongodb/conf/27017/mongodb.conf 

复制集群搭建

1.初始化主节点,登录mongodb的10.0.0.1:27017节点

root # mongo 127.0.0.1 -port 27017
#执行初始化主节点SQL
> rs.initiate()
test:SECONDARY> rs.isMaster().ismaster
#查看复制集状态
test:PRIMARY> rs.status().members

2.配置用户认证

  • 创建用户规范
    • 管理用户为admin,密码为admin,认证库默认为admin
#登录mongodb的27017节点
root # mongo 127.0.0.1 -port 27017
#进入admin库
test:PRIMARY> use admin
#创建admin用户,密码为admin,认证库为admin
test:PRIMARY> db.createUser({user:"admin",pwd:"admin",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})
#认证这个用户
test:PRIMARY> db.auth("admin","admin")
#为admin这个用户授予最高权限
test:PRIMARY>  db.grantRolesToUser("admin",[{role:"root",db:"admin"}])
#查看admin用户的权限信息
test:PRIMARY> db.getUser("admin")
#退出登录
cpos:PRIMARY> exit

3.添加副本和仲裁节点,添加副本以及仲裁节点,必须使用管理员权限的用户进行登录执行。

#使用admin用户登录
[root@MongoDB/data/mongodb/conf/27017]# mongo -port 27017 -u "admin" -p "admin" --authenticationDatabase "admin"
#添加副本
test:PRIMARY> rs.add("10.0.0.2:27017")
#添加仲裁节点
test:PRIMARY> rs.addArb("10.0.0.3:27017")
#查看集群状态
test:PRIMARY> rs.status().members
[{"_id" : 0,"name" : "10.0.0.1:27017","health" : 1,"state" : 1,"stateStr" : "PRIMARY","uptime" : 1304,"optime" : {"ts" : Timestamp(1638327035, 1),"t" : NumberLong(1)},"optimeDate" : ISODate("2024-09-01T02:50:35Z"),"syncSourceHost" : "","syncSourceId" : -1,"infoMessage" : "","electionTime" : Timestamp(1638326325, 2),"electionDate" : ISODate("2024-09-01T02:38:45Z"),"configVersion" : 3,"configTerm" : 1,"self" : true,"lastHeartbeatMessage" : ""},{"_id" : 1,"name" : "10.0.0.2:27017","health" : 1,"state" : 2,"stateStr" : "SECONDARY","uptime" : 72,"optime" : {"ts" : Timestamp(1638327025, 1),"t" : NumberLong(1)},"optimeDurable" : {"ts" : Timestamp(1638327025, 1),"t" : NumberLong(1)},"optimeDate" : ISODate("2024-09-01T02:50:25Z"),"optimeDurableDate" : ISODate("2024-09-01T02:50:25Z"),"lastHeartbeat" : ISODate("2024-09-01T02:50:35.324Z"),"lastHeartbeatRecv" : ISODate("2024-09-01T02:50:35.421Z"),"pingMs" : NumberLong(0),"lastHeartbeatMessage" : "","syncSourceHost" : "10.0.0.1:27017","syncSourceId" : 0,"infoMessage" : "","configVersion" : 3,"configTerm" : 1},{"_id" : 2,"name" : "10.0.0.3:27017","health" : 1,"state" : 7,"stateStr" : "ARBITER","uptime" : 30,"lastHeartbeat" : ISODate("2024-09-01T02:50:35.401Z"),"lastHeartbeatRecv" : ISODate("2024-09-01T02:50:35.661Z"),"pingMs" : NumberLong(0),"lastHeartbeatMessage" : "","syncSourceHost" : "","syncSourceId" : -1,"infoMessage" : "","configVersion" : 3,"configTerm" : 1}
]

相关文章:

MongoDB-部署PSA(一主一从一仲裁)架构复制集群

目录 环境信息环境准备mongoDB配置&部署复制集群搭建 环境信息 IP端口节点10.0.0.127017主10.0.0.227017从10.0.0.327017仲裁 环境准备 1.关闭THP Transparent Huge Pages 简称 THP。透明大页面&#xff08;THP&#xff09;是一种Linux内存管理系统&#xff0c;通过使用…...

CSS中 特殊类型的选择器 伪元素如何使用

一、什么是伪元素 在 CSS 中&#xff0c;伪元素是一种特殊类型的选择器&#xff0c;它允许你为元素的特定部分添加样式&#xff0c;而这些部分在 HTML 文档中并不实际存在。伪元素通常用于创建装饰性效果&#xff0c;如添加边框、背景、阴影等&#xff0c;而不需要额外的 HTML…...

科技信贷业务怎么寻找客户?

在科技信贷业务领域&#xff0c;寻找客户的痛点主要集中在以下几个方面&#xff1a; 1.风险评估难题&#xff1a;科技型企业尤其是初创企业&#xff0c;往往缺乏足够的历史数据和抵押物&#xff0c;这使得金融机构在评估其信用风险时面临较大挑战。由于科技企业的研发周期长、…...

VM中创建CentOS 7及VM中如何修改DHCP的IP网段

一、创建虚拟机 1新建Centos虚拟机 2类型选择 3版本兼容性选择 4镜像选择 5安装系统选择 6虚拟机的创建路径&#xff08;选择C盘以外且不包含中文名称的路径&#xff09; 7硬件配置选择 网络类型的选择&#xff08;通常情况下选择NAT模式&#xff09; 8剩下的全部按推荐走&…...

mybatis#{}与${}的区别,mybatis关联查询,mybatis动态sql

1.#{}与${}的区别 #{}是占位符&#xff0c;是采用预编译的方式向sql中传值&#xff0c;可以防止sql注入如果我们往sql中传值&#xff0c;可以使用这个&#xff0c;例如这个delete语句 ${}将内容直接拼接到sql语句中&#xff0c;一般不用于传值&#xff0c;可以当作列名&#x…...

K8S(Kubernates) 知识目录

1. 一文了解K8S&#xff08;Kubernates&#xff09; 2. K8S CNI CRI CSI 3. K8S Helm 4. K8S Harbor 5. K8S Operator 6. K8S 服务网格 7. K8S 存储 8. K8S 容器调度 9. K8S 探针 10. K8S Watch 11. K8S 版本发版 12. K8S 资源管理CPU&内存 13. K8S Flannel 1…...

基于Java+SpringBoot+Vue+MySQL的失物招领管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于SpringBootVue的失物招领管理系统【附源码文档】、前后…...

Mybatis链路分析:JDK动态代理和责任链模式的应用

背景 此前写过关于代理模式的文章&#xff0c;参考&#xff1a;代理模式 动态代理功能&#xff1a;生成一个Proxy代理类&#xff0c;Proxy代理类实现了业务接口&#xff0c;而通过调用Proxy代理类实现的业务接口&#xff0c;实际上会触发代理类的invoke增强处理方法。 责任链功…...

【Spring Boot 3】【Web】解析获取HTTP请求参数

【Spring Boot 3】【Web】解析获取HTTP请求参数 背景介绍开发环境开发步骤及源码工程目录结构背景 软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历中,每次学习新技术总是要…...

conda换源是什么?

换源对于我们在国内的python使用者来说是非常有必要的&#xff0c;之前讲了pip如何换源。 pip更换为国内镜像源的步骤&#xff0c;为什么要更换镜像源 那现在讲一下conda如何换源。 conda换源&#xff08;清华源&#xff09; 有时候&#xff0c;conda虽然和pip共用一个本地…...

英文缩写大全(IT 领域和电子行业制造领域)

英文缩写大全&#xff08;IT 领域和电子行业制造领域&#xff09; 前言一、计算机通用二、WINDOWS三、LINUX四、编程语言1. 前端 / 设计2. JAVA / Android3. PHP4. Python 四、电子行业制造领域五、常识 前言 本文收集了各类英文缩写大全&#xff0c;方便查阅&#xff0c;主要…...

如何将图片左右翻转?8种方法来将图片进行左右翻转

如何将图片左右翻转&#xff1f;在现代数字化的图像处理过程中&#xff0c;图片的方向调整是常见的操作之一。左右翻转图片不仅可以改变图像的视觉效果&#xff0c;还可以用于修正拍摄时的角度问题&#xff0c;或者满足特定设计和排版需求。比如&#xff0c;当你拍摄的照片由于…...

linux:ln用法详解

文章目录 1. 描述2. 语法2.1 硬链接&#xff08;Hard Link&#xff09;2.2. 符号链接&#xff08;Symbolic Link / Soft Link&#xff09; 3. ln 命令的常用选项4. 例子 1. 描述 在 Linux 系统中&#xff0c;ln 命令用于创建硬链接&#xff08;Hard Link&#xff09;或符号链接…...

0基础跟德姆(dom)一起学AI Python进阶02-Python面向对象高级

1 [重点]定义类的几种语法 方式1&#xff1a;类名 在上一章节的学习过程中&#xff0c;我们都使用了这种定义类的语法&#xff1a; properties class 类名: 代码 ... 例如&#xff0c;使用该方式来定义一个老师类。 python # 1.class 类名: # pass class Te…...

【深度学习】softmax 回归的从零开始实现与简洁实现

前言 小时候听过一个小孩练琴的故事&#xff0c;老师让他先弹最简单的第一小节&#xff0c;小孩练了两天后弹不出。接着&#xff0c;老师让他直接去练更难的第二小节&#xff0c;小孩练习了几天后还是弹不出&#xff0c;开始感觉到挫败和烦躁了。 小孩以为老师之后会让他从简…...

Sollong、IO.NET和 Solana,为何参加 WebX 2024活动?

东京王子花园塔酒店 ChainCatcher_携手 DPCapital_XYZ与WebX_Asia共同打造“世界のStaking最大级集结|Tokyo站”盛会&#xff0c;为全球Staking爱好者与行业精英搭建交流合作桥梁&#xff01;全球顶尖Staking项目方、知名区块链机构、行业领袖与企业家将齐聚东京&#xff0c;共…...

3个免费好用的网站,可以转换PDF,提取MP3

今天分享的三个网站&#xff0c;分别用于文件转换PDF&#xff0c;QMC转MP3格式和配色网站。 TOPDF 这个网站是一个在线PDF转换工具&#xff0c;可以快速将文本文件、演示文稿、电子表格和图片转换为PDF格式。它支持多种文件格式&#xff0c;如AZW3、BMP、CHM、CSV、DjVu、DOC、…...

PHP智能匹配轻松预订自习室在线订座系统小程序源码

智能匹配&#xff0c;轻松预订——自习室在线订座系统 &#x1f4da;【开篇&#xff1a;告别排队&#xff0c;迎接智能学习新时代】&#x1f4da; 还在为找不到合适的自习室座位而烦恼吗&#xff1f;是不是每次去图书馆或自习室都要提前好久去排队占位&#xff1f;现在&#…...

构建高效医护人员排班系统:Spring Boot框架的优势

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理医护人员排班系统的相关信息成为必然。开发…...

深度学习——引言

一、机器学习的关键因素 1.1 数据 每个数据集由一 个个样本组成&#xff0c;大多情况下&#xff0c;数据遵循独立同分布。通常每个样本由一组特征属性组成。 好的数据集 { 数据样本多 正确的数据 ( g a r b a g e i n , g a r b a g e o u t ) 好的数据集 \begin{cases} 数据…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

EtherNet/IP转DeviceNet协议网关详解

一&#xff0c;设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络&#xff0c;本网关连接到EtherNet/IP总线中做为从站使用&#xff0c;连接到DeviceNet总线中做为从站使用。 在自动…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...