政务网站建设和技术维护制度,质量好网站建设商家,网站开发的进度表,wordpress 中文在线留言该脚本是为了方便自己学习和工作中部署服务器从而节省时间进行编写#xff0c;目前能正常部署#xff0c;创建集群#xff0c;管理员用户#xff0c;以及连接都没问题#xff0c;但是没有开启验证#xff0c;后续找时间补充。
完整的教程请参考一下我写的技术文章。
20…该脚本是为了方便自己学习和工作中部署服务器从而节省时间进行编写目前能正常部署创建集群管理员用户以及连接都没问题但是没有开启验证后续找时间补充。
完整的教程请参考一下我写的技术文章。
2024年单服务器部署Mongodb三节点副本集保姆级教程_mongodb三节点部署-CSDN博客 按照下面流程操作
centos7.9 根目录创建一个sh目录并创建 mongodb4.4.27.sh 文件 然后 vi打开 vi mongodb4.4.27.sh 将下面的脚本复制进去再保存
然后当前目录执行 sh mongodb4.4.27.sh 下面是自动部署脚本代码
# 初始化变量
RETRY_INTERVAL5 # 检查间隔时间单位为秒
MAX_RETRIES30 # 最大重试次数# 升级系统
echo 正在升级系统...
yum update -y# 安装必要的软件包
echo 正在安装必要的软件包...
yum -y install gcc gcc-c openssl-devel zlib-devel openssl-devel pcre-devel bzip2* make# 创建节点目录
echo 正在创建节点目录...
mkdir -p /mongodbData/node01/{conf,data,logs}
mkdir -p /mongodbData/node02/{conf,data,logs}
mkdir -p /mongodbData/node03/{conf,data,logs}# 进入 mongodbData 文件夹
cd /mongodbData# 下载MongoDB并解压
echo 正在下载并安装数据库...
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.4.27.tgz
tar -zxvf mongodb-linux-x86_64-rhel70-4.4.27.tgz
mv mongodb-linux-x86_64-rhel70-4.4.27 /usr/local/share/mongodb# 环境配置
echo 正在配置环境变量...
echo export PATH/usr/local/share/mongodb/bin:$PATH /etc/profile
source /etc/profile# 验证安装情况
mongo --version# 创建配置文件
echo 正在创建配置文件/mongodbData/node01/conf/mongod.conf ...cat /mongodbData/node01/conf/mongod.conf EOFoperationProfiling:mode: all # 设置性能分析模式为记录所有操作slowOpThresholdMs: 1000 # 定义操作执行超过1000毫秒时被认为是慢操作
systemLog:destination: file # 日志输出目的地设置为文件path: /mongodbData/node01/logs/mongod.log # 指定日志文件的路径logAppend: true # 启用日志追加模式新日志将追加到现有文件中verbosity: 1 # 日志详细级别设置为1logRotate: rename # 日志轮转策略设置为重命名旧文件
storage:dbPath: /mongodbData/node01/data # 数据库文件存储路journal:enabled: true # 启用日志以支持崩溃恢复wiredTiger:engineConfig:cacheSizeGB: 4 # WiredTiger存储引擎的缓存大小设置为4GB
processManagement:fork: true # 启用分叉模式运行MongoDB服务pidFilePath: /mongodbData/node01/mongod.pid # 指定PID文件路径
net:bindIpAll: true # 监听所有网络接口port: 27017 # MongoDB服务监听的端口
replication:oplogSizeMB: 500 # 操作日志大小设置为500MBreplSetName: mongodbData # 指定复制集名称EOF
echo 正在创建配置文件/mongodbData/node02/conf/mongod.conf ...cat /mongodbData/node02/conf/mongod.conf EOFoperationProfiling:mode: all # 设置性能分析模式为记录所有操作slowOpThresholdMs: 1000 # 定义操作执行超过1000毫秒时被认为是慢操作
systemLog:destination: file # 日志输出目的地设置为文件path: /mongodbData/node02/logs/mongod.log # 指定日志文件的路径logAppend: true # 启用日志追加模式新日志将追加到现有文件中verbosity: 1 # 日志详细级别设置为1logRotate: rename # 日志轮转策略设置为重命名旧文件
storage:dbPath: /mongodbData/node02/data # 数据库文件存储路journal:enabled: true # 启用日志以支持崩溃恢复wiredTiger:engineConfig:cacheSizeGB: 4 # WiredTiger存储引擎的缓存大小设置为4GB
processManagement:fork: true # 启用分叉模式运行MongoDB服务pidFilePath: /mongodbData/node02/mongod.pid # 指定PID文件路径
net:bindIpAll: true # 监听所有网络接口port: 27018 # MongoDB服务监听的端口
replication:oplogSizeMB: 500 # 操作日志大小设置为500MBreplSetName: mongodbData # 指定复制集名称EOFecho 正在创建配置文件/mongodbData/node03/conf/mongod.conf ...cat /mongodbData/node03/conf/mongod.conf EOFoperationProfiling:mode: all # 设置性能分析模式为记录所有操作slowOpThresholdMs: 1000 # 定义操作执行超过1000毫秒时被认为是慢操作
systemLog:destination: file # 日志输出目的地设置为文件path: /mongodbData/node03/logs/mongod.log # 指定日志文件的路径logAppend: true # 启用日志追加模式新日志将追加到现有文件中verbosity: 1 # 日志详细级别设置为1logRotate: rename # 日志轮转策略设置为重命名旧文件
storage:dbPath: /mongodbData/node03/data # 数据库文件存储路journal:enabled: true # 启用日志以支持崩溃恢复
processManagement:fork: true # 启用分叉模式运行MongoDB服务pidFilePath: /mongodbData/node03/mongod.pid # 指定PID文件路径
net:bindIpAll: true # 监听所有网络接口port: 27019 # MongoDB服务监听的端口
replication:oplogSizeMB: 500 # 操作日志大小设置为500MBreplSetName: mongodbData # 指定复制集名称EOFecho 休眠几秒钟...
sleep 10# 启动MongoDB实例
echo 正在启动MongoDB实例...
mongod -f /mongodbData/node01/conf/mongod.conf mongod -f /mongodbData/node02/conf/mongod.conf mongod -f /mongodbData/node03/conf/mongod.conf# 配置MongoDB集群
echo 正在配置MongoDB集群...
mongo --eval rs.initiate({_id: mongodbData, members: [{_id: 0, host: 127.0.0.1:27017}, {_id: 1, host: 127.0.0.1:27018}, {_id: 2, host: 127.0.0.1:27019, arbiterOnly: true}]});echo 休眠几秒钟...
sleep 15# 验证集群状态
echo 正在验证集群状态...
mongo --eval rs.status();echo 休眠几秒钟...
sleep 10# 初始化复制集如果尚未初始化
mongo --eval rs.initiate()# 检查复制集状态的函数
check_replica_set_status() {echo 检查复制集状态...mongo --quiet --eval rs.status() | grep ok : 1return $?
}# 初始化重试次数计数器
retries0# 循环检查复制集状态
until check_replica_set_status; doretries$((retries1))if [ $retries -eq $MAX_RETRIES ]; thenecho 超过最大重试次数复制集可能未成功初始化。exit 1fiecho 复制集尚未就绪等待${RETRY_INTERVAL}秒后重试...sleep $RETRY_INTERVAL
doneecho 复制集已成功初始化。
echo 复制集已成功初始化。
echo 复制集已成功初始化。# 从这里开始执行需要复制集就绪的其他操作例如创建用户等。# 休眠几秒钟等待复制集初始化完成
echo 休眠几秒钟...
sleep 10echo 创建管理员角色...
echo 创建管理员角色...
echo 创建管理员角色...mongo --port 27017 admin --eval db.createUser({user:root,pwd:root_jY_2021,roles:[{role:readWriteAnyDatabase,db:admin},{role:dbAdminAnyDatabase,db:admin},{role:userAdminAnyDatabase,db:admin}]}); db.createUser({user:suroot,pwd:suroot_jY_2021,roles:[{role:clusterAdmin,db:admin},{role:clusterManager,db:admin},{role:clusterMonitor,db:admin}]}); echo 休眠几秒钟...
sleep 5echo 检查管理员角色...
echo 检查管理员角色...
echo 检查管理员角色...mongo --port 27017 admin --eval db.auth(root, root_jY_2021); db.system.users.find(); echo 休眠几秒钟...
sleep 10# 关闭仲裁节点 (27019)
echo 正在关闭仲裁节点(27019)...
mongo --port 27019 admin --eval db.shutdownServer()echo 休眠几秒钟...
sleep 10# 关闭从节点 (27018)
echo 正在关闭从节点(27018)...
mongo --port 27018 admin --eval db.auth(suroot, suroot_jY_2021); db.shutdownServer()echo 休眠几秒钟...
sleep 30# 最后关闭主节点 (27017)
echo 正在关闭主节点(27017)...
mongo --port 27017 admin --eval db.auth(suroot, suroot_jY_2021); db.shutdownServer()echo 休眠几秒钟...
sleep 30# 生成keyFile
echo 正在生成keyFile并分发...
openssl rand -base64 756 /mongodbData/node01/conf/access.key
chmod 400 /mongodbData/node01/conf/access.key
cp /mongodbData/node01/conf/access.key /mongodbData/node02/conf/
cp /mongodbData/node01/conf/access.key /mongodbData/node03/conf/# 再次启动MongoDB实例以应用安全设置
mongod -f /mongodbData/node01/conf/mongod.conf mongod -f /mongodbData/node02/conf/mongod.conf mongod -f /mongodbData/node03/conf/mongod.confsleep 30# mongod -f /mongodbData/node01/conf/mongod.conf
# mongod -f /mongodbData/node02/conf/mongod.conf
# mongod -f /mongodbData/node03/conf/mongod.confecho 部署结束。