简述
本文介绍了MongoDb安装及副本集配置。
1. 准备工作
服务器数量:3
系统版本:Uuntu 18.04
MongoDB版本:Ubuntu 18.04-4.2.14
2. 安装MongoDb
① 首先设置三台服务器的ip地址,这里分别设置为:172.21.78.65、172.21.78.94、172.21.78.97,下面直接用65、94、97表示这三台服务器。
② 确定每一台服务器的信息
IP | ReplicaSet |
172.21.78.65 | ARBITER |
172.21.78.94 | SECONDARY |
172.21.78.97 | PRIMARY |
③ 将下载好的MongoDb安装包上传到三台服务器上,放在/home/adv,解压安装包
tar -zxvf mongodb-linux-x86_64-ubuntu1804-4.2.14.tgz
④ 将解压后的文件夹移动到/opt下,重命名为mongodb-4.2.14
mv mongodb-linux-x86_64-ubuntu1804-4.2.14 /opt/mongodb-4.2.14
⑤ 执行以下命令
mkdir -p /opt/mongodb-4.2.14/data /opt/mongodb-4.2.14/etc /opt/mongodb-4.2.14/logfiles /opt/mongodb-4.2.14/run
data为mongod进程存储数据目录,etc为配置文件key文件存放目录,logfiles为日志存放目录,run为pid文件存放目录
⑥ 进入/opt/mongodb-4.2.14/etc,创建mond.conf文件并编辑
vim /opt/mongodb-4.2.14/mongod.conf
⑦ 复制以下内容到mongod.conf中,各个配置的详细作用在后面会做解释
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
#
storage:
dbPath: /opt/mongodb-4.2.14/data
journal:
enabled: true
engine: wiredTiger
wiredTiger:
engineConfig:
cacheSizeGB: 2
collectionConfig:
blockCompressor: zlib
indexConfig:
prefixCompression: true
systemLog:
logAppend: true
logRotate: reopen
destination: file
path: /opt/mongodb-4.2.14/logfiles/mongod.log
net:
bindIp: 0.0.0.0
port: 27017
setParameter:
enableLocalhostAuthBypass: false
#security:
#authorization: enabled
#keyFile: /opt/mongodb-4.2.14/etc/mongodb.key
replication:
replSetName: "replicaSet"
⑧ 将MongoDb配置为系统服务,并设置为开机启动,进入/etc/system/system下创建编辑mongodb.service
vim /etc/system/system/mongodb.service
⑨ 复制以下内容到mongodb.service中
[Unit]
Description=MongoDB Database Server
Documentation=https://docs.mongodb.org/manual
After=network.target
[Service]
Type=forking
Restart=always
RestartSec=5
User=root
Group=root
PIDFile=/opt/mongodb-4.2.14/run/mongodb.pid
ExecStart=/opt/mongodb-4.2.14/bin/mongod \
--config /opt/mongodb-4.2.14/etc/mongod.conf \
--pidfilepath /opt/mongodb-4.2.14/run/mongodb.pid \
--fork
#
# Resources limits
# Recommended limits for for mongod as specified in
# http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings
#
# (file size)
LimitFSIZE=infinity
#
# (cpu time)
LimitCPU=infinity
#
# (virtual memory size)
LimitAS=infinity
#
# (locked memory)
LimitMEMLOCK=infinity
#
# (open files)
LimitNOFILE=64000
#
# (processes/threads)
LimitNPROC=64000
#
# (total threads -- user+kernel)
TasksMax=infinity
TasksAccounting=false
[Install]
WantedBy=multi-user.target
⑩ 修改mongodb.service的权限
sudo chmod +x mongodb.service
⑪ 设置为开机启动
sudo systemctl enable mongodb.service
⑫ 启动服务
sudo systemctl start mongod.service
⑬ 在65、94、97执行③-⑫操作
3. 副本集配置
① 进入任意服务器,这里选择97
/opt/mongodb-4.2.14/bin/mongo localhost:27017
② 执行如下命令
cfg={_id: 'replicaSet', members: [
{_id: 0,host: '172.21.78.97:27017'},
{_id: 1,host: '172.21.78.94:27017'},
{_id: 2,host: '172.21.78.65:27017', arbiterOnly:true}]
}
rs.initiate(cfg)
到这里不带认证的副本集就配置完成了。
若需要后期添加节点,使用
rs.add(“ip:port”)
删除节点
rs.remove(“ip:port”)
手动添加仲裁节点
rs.addArb(“ip:port”)
注意,如果节点在同一机器上,在添加的时候ip不要使用localhost,否则navicat等可视化图形工具会无法连接到副本集。
4. 权限认证登录配置
① 进入Primary节点,这里为97,登录mongo
/opt/mongodb-4.2.14/bin/mongo localhost:27017
② 为整个副本集创建用户
replicaSet:PRIMARY> use admin
switched to db admin
replicaSet:PRIMARY> db.createUser({user:"admin", pwd:"admin", roles:[{role: "userAdminAnyDatabase", db:"admin" }]})
出现以下信息表示成功
Successfully added user: {
"user" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
③ 创建普通数据库、用户
replicaSet:PRIMARY> db.auth("admin","admin")
1
replicaSet:PRIMARY> use test
switched to db test
replicaSet:PRIMARY> db.createUser({user:"test",pwd:"test",roles:[
{"role" : "readWrite","db" : "test"},
{"role" : "dbAdmin","db" : "test"},
{"role" : "dbOwner","db" : "test"},
{"role" : "userAdminAnyDatabase","db" : "admin"},
{"role" : "hostManager","db" : "admin"},
{"role" : "clusterAdmin","db" : "admin"}]})
④ 连接测试:
/opt/mongodb-4.2.14/bin/mongo localhost:27017/test -u test -p test
⑤ 创建副本集认证key文件。注意,副本集节点之间必须要用同一份keyfile,在一台机器生成,拷贝到另外两台,并且权限必须是600。
sudo openssl rand -base64 741 >> /opt/mongodb-4.2.14/etc/mongodb.key
sudo chmod 600 /opt/mongodb-4.2.14/etc/mongodb.key
⑥ 关闭MongoDb,顺序为Secondary-> Arbiter->Primary,命令如下
replicaSet:SECONDARY> use admin
switched to db admin
replicaSet:SECONDARY> db.shutdownServer()
server should be down...
⑦ 修改每一台服务器的mongd.conf,开启权限认证。打开security下的注释,如下
security:
authorization: enabled
keyFile: /opt/mongodb-4.2.14/etc/mongodb.key
⑧ 在每台服务器上启动mongodb服务
sudo systemctl start mongod.service
⑨ 使用权限认证登录primary节点
/opt/mongodb-4.2.14/bin/mongo localhost:27017/test -u test -p test
5. MongoDb新版配置文件介绍
可以参考这篇文章,里面有详细的介绍