《Linux运维总结:基于Ubuntu 22.04操作系统+x86_64架构CPU部署二进制mongodb 7.0.14分片集群》

总结:整理不易,如果对你有帮助,可否点赞关注一下?

更多详细内容请参考:《Linux运维篇:Linux系统运维指南》


一、简介

1、应用场景
当您遇到如下问题时,可以使用分片集群解决:
a、 存储容量受单机限制,即磁盘资源遭遇瓶颈。
b、 读写能力受单机限制,可能是CPU、内存或者网卡等资源遭遇瓶颈,导致读写能力无法扩展。

2、分片集群组成部分
MongoDB分片集群由以下组件构成:
shard(分片):每个分片都包含分片数据的一个子集, 每个分片都必须作为一个副本集进行部署
mongos(路由):mongos充当查询路由器,在客户端应用程序和分片集群之间提供接口。mongos可以支持对冲读,从而最大限度地降低延迟。
config(配置服务):配置服务器存储集群的元数据和配置设置, 配置服务器必须部署为副本集(CSRS)

3、生产配置
在生产集群中,确保数据是冗余的,并且系统具有高可用性。对于生产分片集群部署,请考虑以下事项:
a、将配置服务器部署为3节点副本集
b、将每个分片部署为3成员副本集
c、部署一个或多个mongos 路由器
如下图所示:
在这里插入图片描述

4、自管理部署的操作清单
说明:以上检查清单和 Development Checklist(开发检查清单)列表提供了部分建议,它们有助于避免在生产 MongoDB 部署中出现问题。


二、部署规划

2.1、环境信息

主机IP 主机名 操作系统 内核版本 Mongodb版本 服务启动用户
192.168.1.111 config.kvxt.com 22.04.4 LTS (Jammy Jellyfish) 5.15.0-113-generic 7.0.14 mongodb
192.168.1.112 shard1.kvxt.com 22.04.4 LTS (Jammy Jellyfish) 5.15.0-113-generic 7.0.14 mongodb
192.168.1.113 shard2.kvxt.com 22.04.4 LTS (Jammy Jellyfish) 5.15.0-113-generic 7.0.14 mongodb
192.168.1.114 mongos.kvxt.com 22.04.4 LTS (Jammy Jellyfish) 5.15.0-113-generic 7.0.14 mongodb

2.2、服务分布

1、集群内部通信安全:keyFile 主要用于确保集群成员(包括 mongos、分片成员和配置服务器)之间的通信安全。所有集群成员都需要访问相同的密钥文件,以验证彼此的身份。
2、mongos作为路由层,其主要职责是接收客户端请求并将这些请求转发到适当的分片或配置服务器。mongos不直接存储数据,也不参与数据的读写操作。
3、mongod 实例(包括分片成员和配置服务器)负责数据的实际存储和管理。因此,它们需要进行身份验证和授权,以确保只有经过认证的用户才能访问数据。

总结:mongos(路由节点)比mongod(配置节点+分片节点)少了authorization:enabled的配置。


主机IP 集群角色 端口信息 实例名称 是否使用KeyFile鉴权文件 是否开启认证方式运行
192.168.1.111 config 17101 config-rs-1
192.168.1.111 config 17102 config-rs-2
192.168.1.111 config 17103 config-rs-3
----
192.168.1.112 shared 17201 shard1-rs-primary
192.168.1.112 shared 17202 shard1-rs-secondary
192.168.1.112 shared 17203 shard1-rs-arbiter
----
192.168.1.113 shared 17301 shard2-rs-primary
192.168.1.113 shared 17302 shard2-rs-secondary
192.168.1.113 shared 17303 shard2-rs-arbiter
----
192.168.1.114 mongos 17401 mongos-route1
192.168.1.114 mongos 17402 mongos-route2

三、安装前准备

注意事项:
1、要避免因 IP 地址变更而更新配置,请使用DNS主机名而非IP地址。在配置副本集成员或分片集群成员时,使用DNS主机名而非IP地址尤为重要。
2、在水平分割网络配置下,请使用主机名而非 IP地址来配置集群。从 MongoDB 5.0开始,仅配置了IP地址的节点将无法通过启动验证,因而不会启动。


3.1、部署建议


3.2、配置主机名

说明:以下操作需根据部署规划在各个节点上执行。

# 1、192.168.1.111主机
hostnamectl set-hostname config.kvxt.com
# 2、192.168.1.112主机
hostnamectl set-hostname shard1.kvxt.com
# 3、192.168.1.113主机
hostnamectl set-hostname shard2.kvxt.com
# 4、192.168.1.114主机
hostnamectl set-hostname mongos.kvxt.com

3.3、配置hosts解析

说明:以下操作需在mongodb分片集群所有主机上执行。

vim /etc/hosts
192.168.1.111 config.kvxt.com	
192.168.1.112 shard1.kvxt.com	
192.168.1.113 shard2.kvxt.com	
192.168.1.114 mongos.kvxt.com	

3.4、系统参数配置

说明:以下操作需在mongodb分片集群所有主机上执行。

1、很多操作系统默认将该值设置为7200 秒(两小时)。对于MongoDB,使用较短的keepalive值(大约为120 秒(两分钟))通常会获得更好的结果。

vim /etc/sysctl.conf
net.ipv4.tcp_keepalive_time = 120

2、如果客户端与服务器之间或分片集群或副本集成员之间出现长时间暂停(暂停时间超过两分钟),随后出现网络超时或套接字错误,请检查受影响系统的tcp_retries2值。默认情况下,大多数 Linux 操作系统将此值设置为15,而 Windows将其设置为5。对于MongoDB,可以使用较低的tcp_retries2 值(大约为 5(12 秒)或更低)体验更好的结果。

vim /etc/sysctl.conf
net.ipv4.tcp_retries2 = 8

3、为您的部署配置充足的文件句柄数 (fs.file-max)、内核进程 ID (PID) 限制 (kernel.pid_max)、每个进程的最大线程数 (kernel.threads-max) 以及每个进程的最大内存映射区域数 (vm.max_map_count)。对于大型系统,建议首先采用以下值:

vim /etc/sysctl.conf
fs.file-max = 98000
kernel.pid_max = 64000
kernel.threads-max = 64000
vm.max_map_count=131060

4、mongos或mongod接受的最大并行连接数(maxIncomingConnections),windows默认为100000,Linux默认为RLIMIT_NOFILE * 0.8,所以需要设置合理的文件描述符大小限制。

vim /etc/security/limits.conf
root soft nofile 65535
root hard nofile 65535
mongodb soft nofile 65535
mongodb hard nofile 65535

3.5、创建启动用户

说明:以下操作需在mongodb分片集群所有主机上执行。

groupadd --gid 1300 mongodb
useradd -u 1300 -g 1300 -d /home/mongodb -s /usr/sbin/nologin -m mongodb

3.6、创建相关目录

说明:以下操作需根据部署规划在各个节点上执行。

1、192.168.1.111主机

mkdir -p /opt/mongodb-shared-cluster/ssl 
mkdir -p /opt/mongodb-shared-cluster/config-rs/{config1,config2,config3}/{data,conf.d,logs}
chown -R mongodb:mongodb /opt/mongodb-shared-cluster

2、192.168.1.112主机

mkdir -p /opt/mongodb-shared-cluster/ssl -p

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1539465.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

VSCode语法提示的配置

ctrlshiftP打开Command Palette,运行C/Cpp: Edit configurations...生成c_cpp_properties.json c_cpp_properties.json是什么? 这个文件主要是用于VSCode语法提示的配置,例如:指定 include 路径,问题匹配类型等。CtrlShiftP打开C…

课题分享:宿舍管理系统小程序,基于微信小程序+SSM+mysql

一、前言介绍 互联网概念的产生到如今的蓬勃发展,用了短短的几十年时间就风靡全球,使得全球各个行业都进行了互联网的改造升级,标志着互联网浪潮的来临。在这个新的时代,各行各业都充分考虑互联网是否能与本行业进行结合&#xf…

【Verilog学习日常】—牛客网刷题—Verilog快速入门—VL21

根据状态转移表实现时序电路 描述 某同步时序电路转换表如下,请使用D触发器和必要的逻辑门实现此同步时序电路,用Verilog语言描述。 电路的接口如下图所示。 输入描述: input A , input clk , …

chorme浏览器 您的连接不是私密连接

‌当浏览器显示“您的连接不是私密连接,攻击者可能会试图从 localhost 窃取您的信息(例如:密码、消息或信用卡信息)”的警告时,这通常意味着您正在尝试访问的网站的安全证书存在问题,可能是因为它使用的是自…

C++学习指南(六)----list

欢迎来到繁星的CSDN。本期内容主要包括,list的介绍、使用以及与vector的优缺点。 一、什么是list 在先前的C语言学习中,我们接触到了顺序表和链表,而在C中,这正好对应了vector(动态增长顺序表)和l…

1网络安全的基本概念

文章目录 网络安全的基本概念可以总结为以下几个方面: 网络安全的需求: 信息安全的重要性:信息安全是计算机、通信、物理、数学等领域的交叉学科,对于社会的发展至关重要。信息安全的目标:主要包括保密性、完整性、可用…

【Linux】yum、vim、gcc使用(超详细)

Linux中常见的软件安装方式 --------- 下载&&安装 a、yum/apt b、rpm安装包安装 c、源码安装 yum 关于 yum 的所有操作必须保证主机(虚拟机)网络畅通!!! 可以通过 ping 指令验证: ping www.baidu.com 安装软件 yum 会自动找到都有哪些软件包需要下载…

Leetcode 93-复原 IP 地址

有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 ‘.’ 分隔。 例如:“0.1.2.201” 和 “192.168.1.1” 是 有效 IP 地址,但是 “0.011.255.245”、“192.168.…

【爆炸】BB机,BP机,寻呼系统基础知识,物理层讲解

本页介绍寻呼系统基础知识。其中提到了寻呼机使用的数字协议并描述了数字寻呼接收器。 寻呼是一种单向通信系统。寻呼系统向携带小型电池供电设备(称为寻呼机)的个人广播信号或消息。这是与员工和/或客户沟通的非常重要的方式。让我们看看寻呼系统的工作…

IP包头分析

IP包头 选择自己的网卡,开始抓包 ping一个字节大点的数据,方便查看包 选择数据包,并过滤icmp协议 查看抓到的包,分析 IP包头范围:20-60 首部长度:定义包头的长度 总长度:表示当前数据的长度…

【模板进阶】模板的万能引用

一、类型的区别和基本定义 1.1类型的基本定义 首先先看一个最简单例子: //类型的区别和基本定义 void func(const int& abc) { } //abc的类型为const int&这里的 a b c abc abc被推导为什么类型? 显然可见,为 c o n s t i n t &am…

mysql使用sql函数对json数组的处理

MySQL从5.7版本开始增加了对JSON数据类型的支持。你可以使用->>操作符和JSON_EXTRACT函数来访问JSON数据中的值。 但是,对于JSON数组,如果你想要获取数组中的所有元素,MySQL并没有直接的函数来返回数组中的所有元素作为单独的行。不过…

PDF产品册营销推广利器FLBOOK

在互联网高速发展的时代,营销推广已成为企业拓展市场的重要手段。而一款优秀的营销工具,可以为企业带来事半功倍的推广效果。今天,就为大家介绍一款集创意与实用于一体的PDF产品册营销推广利器——FLBOOK,帮助企业轻松提升品牌影响…

算法-查找算法(顺序查找二分查找)

3.查找算法 查找也称为搜索,就是从数据中找出满足特定条件的元素。 常见的查找算法:顺序查找、二分查找。 3.1 顺序查找算法 顺序查找算法又称为线性查找,是一种比较简单的查找算法,是将数据一项一项的按照顺序逐个查找&#x…

电力电容器、电子电容器的区别

电力电容器和电子电容器在用途、结构、工作环境以及电气性能等方面有显著的区别。以下是它们的主要区别: 1、用途和应用场景 电力电容器: 主要用于电力系统中,主要功能是进行无功功率补偿,提高功率因数,改善电网的电…

mybatisplus介绍以及使用(上)

目录 一、概念 1、什么是mybatisplus 2、为什么要使用mybatisplus 二、mybatisplus的使用 1、安装 2、常用注解 3、条件构造器 一、概念 1、什么是mybatisplus MyBatis-Plus(简称MP)是一个基于MyBatis的增强框架,旨在简化开发、提高…

云端启航,探索微生物奥秘——美格基因云组学分析全新升级!

在这个信息爆炸的时代,我们深知高效的数据处理对于科研的重要性。为了帮助您更好地挖掘微生物世界的无限可能,美格基因凭借在弹性云计算领域的深厚积累,构建了一个强大的云生态系统。这一系统不仅整合了云组学、云工具、云数据库、前沿工具等…

人脸活体检测系统源码分享

人脸活体检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

Spring底层架构源码解析(三)

目录 ApplicationContext AnnotationConfigApplicationContext ClassPathXmlApplicationContext 类型转换 PropertyEditor ConversionService BeanPostProcessor FactoryBean MetadataReader、ClassMetadata、 AnnotationMetadata ExcludeFilter,Inclu…

【2025】基于微信小程序的人工智能课程学习平台的设计与实现(源码+文档+解答)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…