服务器
OS:CentOS7
内存:16G
硬盘:6T
IP:192.168.1.2/192.168.1.51/192.168.1.52/192.168.1.53
其中192.168.1.2 为仲裁节点,不存储数据。
搭建过程
- 创建mongo用户
# groupadd admin
# useradd -g admin mongo
# passwd mongo
- 下载mongo安装包
$ wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.6.3.tgz
- 解压并重命名
$ tar -zxvf mongodb-linux-x86_64-rhel70-3.6.3.tgz
$ mv mongodb-linux-x86_64-rhel70-3.6.3 mongodb
- 创建
$HOME/data
、$HOME/logs
、$HOME/conf
、$HOME/.local/bin
三个目录
$ mkdir data
$ mkdir conf
$ mkdir logs
- 创建配置文件
$ vi conf/mongodb.conf
# 启动端口
port=27017
# 数据存放目录
dbpath=/home/mongo/data
# 指定日志文件
logpath=/home/mongo/logs/mongodb.log
# 日志以追加方式保存
logappend=true
# 启用日志
journal=true
# 指定pid文件
pidfilepath=/home/mongo/conf/mongodb.pid
# 后台启动
fork=true
# 最大连接数
maxConns=5000
# 允许任何IP连接
bind_ip=0.0.0.0
# 不开启验证
auth=false
# 集群名称
replSet=wd-mongodb
- 创建启动脚本
vi .local/bin/start
#!/bin/bash
echo "正在启动mongodb服务..."
$HOME/mongodb/bin/mongod -f $HOME/conf/mongodb.conf
- 创建停止脚本
$ vi .local/bin/stop
#!/bin/bash
echo "正在停止mongodb服务..."
$HOME/mongodb/bin/mongod -f $HOME/conf/mongodb.conf --shutdown
- 创建重启脚本
#!/bin/bash
$HOME/.local/bin/stop
$HOME/.local/bin/start
修改脚本文件权限:
chmod 755 .local/bin/*
- 配置开机启动
[Unit]
Description=mongodb service
After=network.target
[Service]
Type=forking
PIDFile=/home/mongo/conf/mongodb.pid
ExecStart=/home/mongo/.local/bin/start
ExecStop=/home/mongo/.local/bin/stop
ExecReload=/home/mongo/.local/bin/restart
User=mongo
Group=admin
[Install]
WantedBy=multi-user.target
集群配置
rs.initiate({_id:"wd-mongodb", members:[{_id: 0, host:"192.168.1.51:27017"}]})
rs.add("192.168.1.52:27017")
rs.add("192.168.1.53:27017")
rs.addArb("192.168.1.2:27017")
复制集开启用户验证:
- 创建一个超级用户root和普通用户dev
db.createUser({user: "root", pwd: "root@123", roles: [{role: "root", db: "admin"}]});
db.createUser({user: "dev", pwd: "dev123", roles: [{role: "readWriteAnyDatabase", db: "admin"}]});
- 修改mongodb.conf文件,添加:
keyFile=/home/mongo/conf/.keyfile
# 启动端口
port=27017
# 数据存放目录
dbpath=/home/mongo/data
# 指定日志文件
logpath=/home/mongo/logs/mongodb.log
# 日志以追加方式保存
logappend=true
# 启用日志
journal=true
# 指定pid文件
pidfilepath=/home/mongo/conf/mongodb.pid
# 后台启动
fork=true
# 最大连接数
maxConns=5000
# 允许任何IP连接
bind_ip=0.0.0.0
# 开启验证
auth=true
keyFile=/home/mongo/conf/.keyfile
# 集群名称
replSet=wd-mongodb
- 创建
.keyfile
文件
$ openssl rand -base64 100 > /home/mongo/conf/.keyfile
- 将
.keyfile
和mongodb.conf
文件复制到所有的节点 - 重启mongodb