单服务器部署mongodb数据库三节点集群详细教程
单服务器部署三节点mongodb数据库详细教程参考链接: https://www.cnblogs.com/xshrim/p/9798504.html注意:多服务器和单服务器各项配置和操作略有不同,需要区分清楚,本教程使用的是mongodb 4.2.11版本。测试的服务器配置为一台 1核 2G内存 40G SSD硬盘的阿里云服务器,系统是CentOS 7.9目录单服务器部署三节点mongodb数据库
单服务器部署mongodb数据库三节点集群详细教程
参考链接: CentOS7.4搭建基于用户认证的MongoDB4.0三节点副本集集群详细文档 - xshrim - 博客园
注意:
多服务器和单服务器各项配置和操作略有不同,需要区分清楚,
本教程使用的是mongodb 4.2.11版本。
测试的服务器配置为 1核CPU,2G内存 40G ssd硬盘 的阿里云服务器,系统为CentOS 7.9版本
目录
第一步, 创建目录结构。
节点规划:
节点名 | 节点用途 | 节点IP | 节点端口 | 集群名称 |
node01 | 主节点(PRIMARY) | 127.0.0.1 | 27017 | mongodbData |
node02 | 从节点(SECONDARY) | 127.0.0.1 | 27018 | mongodbData |
node03 | 仲裁节点(ARBITER) | 127.0.0.1 | 27019 | mongodbData |
数据库安装目录:(3个节点)
目录 | 用途 |
/website/mongodbData | //这里是集群目录,也是存放下载安装包的目录 |
/website/mongodbData/node01 | //主节点(PRIMARY)目录 |
/website/mongodbData/node01 | //从节点(SECONDARY)目录 |
/website/mongodbData/node01 | //仲裁节点(ARBITER)目录 |
目录规划:node01(节点名)目录下需要创建以下三个子目录,三个节点(node01、node02、node03)都需要创建:
目录 | 用途 |
/node01/data | Mongo集群数据文件目录 |
/node01/logs | Mongo集群系统日志目录 |
/node01/conf | Mongo集群配置文件目录 |
第二步, 安装数据库及配置环境。
三节点mongodb安装及配置均需要执行以下操作步骤:
1 | 下载 | |
2 | 解压 | |
3 | 安装 | |
4 | 环境配置 | |
5 | 使配置生效 | |
6 | 查看安装情况 | |
如果打印以下信息泽成功:
|
第三步, 创建和部署配置文件mongod.conf
注意1:三个节点下的mongod.conf除了路径与端口不同,其它都一样。
端口 | 所在上级目录 |
27017 | node01 |
27018 | node02 |
27019 | node03 |
注意2:security部分和setParameter部分的参数,用于启用集群用户认证, 需要先注释掉, 等集群搭建完成再启用。也就是在未创建完成密钥之前注释。即是几个#号后面是注释的内容。
#security: |
完整的mongod.conf文件(这个是XX项目数据库的设置)内容如下:
systemLog: |
注意的错误情况
创建mongod.conf文件时,一定要注意文件内容是否按照上面每一行的空格严格编写,如果不是,则容易出现错误。
第二个问题是 data 还有 logs 文件没有创建
mongod.conf文件存放相关目录如下:
/website/mongodbData/node01/conf/mongod.conf
/website/mongodbData/node02/conf/mongod.conf
/website/mongodbData/node03/conf/mongod.conf
第四步, 执行启动命令,启动三个数据库(无用户登录认证)。
相关目录与mongod.conf也放置好后,依次执行以下三个启动命令:
注意:此时是无验证的启动,暴露全部的数据库给任意登录的用户进程操作,非常危险,所以第八步开始,用于配置和启用有用户登录的认证
|
注意的错误情况
执行 命令时出现以下情况,是因为可能确实data文件夹和logs文件夹,增加后解决
about to fork child process, waiting until server is ready for connections.
forked process: 21988
ERROR: child process failed, exited with 1
To see additional information in this output, start without the "--fork" option.
注意报错的地方2:
下面报这个错误是因为conf配置表的空格问题
Unrecognized option: path
try 'mongod --help' for more information
第五步, 配置集群
进入其中一个节点(主节点)的mongo控制台, 配置集群(务必保证节点防火墙关闭或开放mongo服务端口).
仅在一个节点执行命令进入mongo控制台: mongo 127.0.0.1:27017
方法:
1 | 生成集群配置变量并加入3个节点配置 | |
2 | 根据变量配置集群 | |
3 | 查看集群是否配置成功 | |
4 | 退出shell | |
第六步, 添加用户
集群配置完成后, 仍然在主节点的mongo控制台中添加三个用户:数据库管理员, 集群管理员和访问特定数据库的用户.
仅在一个节点执行命令进入mongo控制台: mongo 127.0.0.1:27017
1 | 使用内置的admin库 | |
2 | 创建数据库管理员 | |
3 | 创建集群管理员 | |
4 | 切换到testdb数据库,(不用事先创建) | |
5 | 创建特定库的特定用 | |
6 | 切换到admin数据库 | |
7 | 查看创建的用户 | |
8 | 退出shell | 同时按下Ctrl+C |
注意事项:
- MongoDB的用户和数据库是绑定的, 必须指定某个用户归属于哪个数据库, 即在roles字段的每个role中指定db字段.
- 数据库管理员通常需要具有读写,管理任意数据库和管理任意用户的role, 后续可以登录此用户进行数据库和用户的增删改查.
- 集群管理员通常需要具有集群管理和集群监控的role, 只有集群管理员可以关闭集群.
- 普通用户根据用途不同可以对特定或者多个数据库拥有各种不同的role, 本例中的test用户既可以读写testdb库, 同时也是testdb库的管理员.
- 主节点上添加的用户应该能够在从节点上查询到(需要先键入rs.slaveOk()命令).
第七步,关闭数据库
用户添加完成后需要关闭所有节点(先关闭仲裁和从节点, 再关闭主节点, 避免主节点切换):
关闭三个节点,按顺序执行执行:
1-1 | 进入仲裁节点执行命令 | |
1-2 | 进入数据库 | |
1-3 | 关闭mongo后台进程 | |
1-4 | 退出shell | |
2-1 | 进入从节点执行命令 | |
2-2 | 进入数据库 | |
2-3 | 关闭mongo后台进程 | |
2-4 | 退出shell | |
3-1 | 进入主节点执行命令 | |
3-2 | 进入数据库 | |
3-3 | 关闭mongo后台进程 | |
3-4 | 退出shell | |
第八步,生成keyFile
keyFile的长度必须在6-1024个字符之间。keyFile的用途是作为所有mongod后台进程允许加入集群的凭证, 所有集群中的节点共用一个keyFile, 避免其他mongod非法加入集群):
仅在一个节点执行(本机执行),步骤如下:
1 | 生成keyFile并放入node01(主节点) | |
2 | 设置keyFile文件为只读 | |
3 | 将keyFile复制到node02(从节点) | |
4 | 将keyFile复制到node03(仲裁节点) | |
第九步,修改mongod.conf文件,取消注释信息
完成后取消三个节点mongod.conf文件中security与setParameter部分的注释,然后重新启动即是带权限的方式了,之前的都是没有权限的启动
|
第十步,再次启动三个节点的数据库,开启用户登录认证
依次启动主节点, 从节点和仲裁节点的mongod后台进程:
|
第十一步,再次登录数据库,验证创建的用户是否正常
进入主节点执行命令: mongo 127.0.0.1:27017
操作一:
1 | 使用内置的admin数据库 | use admin |
2 | 使用数据库管理员认证 | db.auth('root', 'root_jY_2021') |
3 | 退出shell | 同时按下Ctrl+C |
操作二:
1 | 使用内置的admin数据库 | use admin |
2 | 切换到集群管理员用户 | db.auth('root', 'root_jY_2021') |
3 | 查看创建的用户 | db.auth('suroot', 'suroot_jY_2021') |
4 | 退出shell | 同时按下Ctrl+C |
操作三:
1 | 切换到testdb数据库 | use testdb |
2 | 切换到切换到test用户 | db.auth('test', 'test') |
3 | 退出shell | 同时按下Ctrl+C |
至此, 单服务器下基于用户认证的MongoDB4.2.11三节点副本集集群环境已经搭建完成,下面连接数据库.
第十二步,远程连接数据库:
方法一:
使用Studio 3T可视化工具远程连接(超级管理员)配置如下,只需要连接单节点
方法二:
let MongoClient=require('mongodb').MongoClient;
let mongoUrl="mongodb://root:root_jY_2021@xx.xx.xx.xx:27017/admin";
MongoClient.connect(mongoUrl,{ useNewUrlParser: true,useUnifiedTopology: true }, async function(err, pt_clientObj) {
if(err) {console.error("发生错误",err);}
let client = pt_clientObj.db();
console.log("连接成功");
});
更多推荐
所有评论(0)