Centos7 下 MongoDB4.0.0 的安装及复制集配置
su root
关闭防火墙(当然也可以选择仅开放端口)
systemctl stop firewalld.service
systemctl disable firewalld.service
=================================MongoDB安装===============================================
1.下载源文件
(官网下载地址:https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.0.tgz)
也可以到mongodb官网下载
2.创建源文件存放目录
mkdir -p /data/software/
3.创建mongodb安装目录
cd /usr/local
mkdir mongodb
3.上传源文件到/data/software/目录下
rz
mv mongodb-linux-x86_64-4.0.0.tgz /data/software/
4.解压文件到/usr/local/mongodb下
tar -zxvf mongodb-linux-x86_64-4.0.0.tgz
mv mongodb-linux-x86_64-4.0.0/* /usr/local/mongodb/
5.创建mongodb相关目录
cd /usr/local/mongodb/
mkdir data ##数据目录
mkdir logs ##日志目录
mkdir etc ##配置文件目录
6.修改linux 最大文件限制数
echo ulimit -n 65535 >>/etc/profile
source /etc/profile
7.上传配置文件mongodb.conf到/usr/local/mongodb/etc/目录下
rz ##注意:此时先不要加security.keyFile属性,防止mongodb复制集没有权限
8.添加mongodb环境变量
echo 'export PATH=/usr/local/mongodb/bin:$PATH' >> /etc/profile
source /etc/profile
9.启动mongodb
mongod -f /usr/local/mongodb/etc/mongodb.conf
=================================MongoDB复制集模式部署============================================
注:mongodb4.0.0已不支持主从模式, 这里部署为replica sets(复制集),可以部署多台服务
1.启动两台机器上的mongodb服务
mongod -f /usr/local/mongodb/etc/mongodb.conf
2.在主节点添加节点
mongo
rs.status() ##查看复制集状态
var cfg={_id:'energy-rc',members:[{_id:0,host:'172.16.2.78:27017'},{_id:1,host:'172.16.2.77:27017'}]}
rs.initiate(cfg) ##初始化复制集
rs.status()
exit
3.主从节点重启,并添加keyfiles
注:复制集的权限和单机的访问权限不同,官方支持两种方式:
1)Keyfiles文件方式;2)x.509方式
这里采用的是第一种方式
4.主从节点分别关闭
mongod --shutdown -f /usr/local/mongodb/etc/mongodb.conf
5.此时加入security.keyFile属性
openssl rand -base64 756 > energy-rc.key ##生成keyfiles文件
chmod 400 energy-rc.key ##设置只读权限
mv energy-rc.key /usr/local/mongodb/ ##移动到mongodb.conf中定义的security.keyFile属性值
cd /usr/local/mongodb/
ls ##查看是否移动成功
6.启动主、从节点服务
mongod -f /usr/local/mongodb/etc/mongodb.conf
7.在主节点创建超级用户
mongo
show dbs
use admin
db.createUser({ user: "admin", pwd: "energy", roles: [{ role: "root", db: "admin" }] })
8.在主节点插入数据,验证从节点是否成功
use energy_battery
db.cell.insert({"_id":"1"})
9.如果有多个节点,可以通过如下命令添加、移除节点
rs.status()
rs.remove("172.16.2.77:27017")
rs.add("172.16.2.77:27017")
=============================================================================================
附:mongodb.conf
#mongod.conf
#for documentation of all options, see:
#http://docs.mongodb.org/manual/reference/configuration-options/
systemLog:
destination: file
logAppend: true
path: /usr/local/mongodb/log1/mongodb.log
storage:
dbPath: /usr/local/mongodb/data1/
journal:
enabled: true
processManagement:
fork: true
pidFilePath: /usr/local/mongodb/mongod.pid
timeZoneInfo: /usr/share/zoneinfo
net:
port: 27017
bindIp: 0.0.0.0
replication:
replSetName: energy-rc
security:
keyFile: /usr/local/mongodb/energy-rc.key
参考资料:
https://docs.mongodb.com/manual/tutorial/enforce-keyfile-access-control-in-existing-replica-set/