mongod安装及多实例副本集部署
mongod for centos7安装及多实例部署1.获取mongodb包官网:https://www.mongodb.com/try选择software--->community server,选择redhat-centos7版本,tag包[root@www opt]# lsmongodb-linux-x86_64-rhel70-4.2.13.tgz2.基本配置1.解压缩#解压缩包tar
·
mongod for centos7安装及多实例部署
1.获取mongodb包
官网:
https://www.mongodb.com/try
选择software--->community server,选择redhat-centos7版本,tag包
[root@www opt]# ls
mongodb-linux-x86_64-rhel70-4.2.13.tgz
2.基本配置
1.解压缩
#解压缩包
tar -xf mongodb-linux-x86_64-rhel70-4.2.13.tgz
#移动目录
mv mongodb-linux-x86_64-rhel70-4.2.13 /usr/local/
#重命名
mv mongodb-linux-x86_64-rhel70-4.2.13/ mongodb
2.创建日志目录、配置文件目录、数据存放目录
#日志目录
#master--主节点
#slave--从节点
#arbiter--仲裁节点
mkdir -p /usr/local/mongodb/logs/master
mkdir -p /usr/local/mongodb/logs/slave
mkdir -p /usr/local/mongodb/logs/arbiter
#配置文件
mkdir -p /etc/mongodb/master
mkdir -p /etc/mongodb/slave
mkdir -p /etc/mongodb/arbiter
#数据存放目录
mkdir -p /usr/local/mongodb/data/master
mkdir -p /usr/local/mongodb/data/slave
mkdir -p /usr/local/mongodb/data/arbiter
3.配置多实例配置
三个实例配置
cat /etc/mongodb/master/mongodb_master.conf
systemLog:
destination: file
path: /usr/local/mongodb/logs/master/mongodb.log
storage:
dbPath: /usr/local/mongodb/data/master
net:
port: 27017
bindIp: 0.0.0.0
processManagement:
fork: true
cat /etc/mongodb/slave/mongodb_slave.conf
systemLog:
destination: file
path: /usr/local/mongodb/logs/slave/mongodb.log
storage:
dbPath: /usr/local/mongodb/data/slave
net:
port: 27018
bindIp: 0.0.0.0
processManagement:
fork: true
cat /etc/mongodb/arbiter/mongodb_arbiter.conf
systemLog:
destination: file
path: /usr/local/mongodb/logs/arbiter/mongodb.log
storage:
dbPath: /usr/local/mongodb/data/arbiter
net:
port: 27019
bindIp: 0.0.0.0
processManagement:
fork: true
配置解释说明
#mongo单实例基本配置
systemLog:
destination: file
#日志路径
path: /usr/local/var/log/mongodb/mongo.log
#日志追加
logAppend: true
storage:
#数据路径
dbPath: /usr/local/var/mongodb
net:
#端口
port: 27110
#允许所有机器访问
bindIp: 0.0.0.0
security:
#开启认证
authorization: enabled
processManagement:
#守护进程启动
fork: true
#配置副本集名称
replication:
replSetName: zdvictory
4.配置环境变量
vim /etc/profile
#mongodb
export PATH="$PATH:/usr/local/mongodb/bin"
source /etc/profile
5.启动多实例
mongod -f /etc/mongodb/master/mongodb_master.conf
mongod -f /etc/mongodb/slave/mongodb_slave.conf
mongod -f /etc/mongodb/arbiter/mongodb_arbiter.conf
netstat -tunpl|grep mongod
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 47752/mongod
tcp 0 0 127.0.0.1:27018 0.0.0.0:* LISTEN 47820/mongod
tcp 0 0 127.0.0.1:27019 0.0.0.0:* LISTEN 47878/mongod
6.连接多实例
[root@www bin]# pwd
/usr/local/mongodb/bin
#逐一连接到实例
/mongo --host 192.168.13.59 --post 27017
/mongo --host 192.168.13.59 --post 27018
/mongo --host 192.168.13.59 --post 27019
#同时连接到多实例
mongo 127.0.0.1:27017,127.0.0.1:27018,127.0.0.1:27019
7.关闭多实例
1.通过命令关闭
mongod --shutdown --dbpath /usr/local/mongodb/data/master
mongod --shutdown --dbpath /usr/local/mongodb/data/slave
mongod --shutdown --dbpath /usr/local/mongodb/data/arbiter
#参数说明
--shutdown 关闭
--dbpath 指定数据路径
备注:mongod 命令的 shutdown 选项能干净的关闭 MongoDB 服务。
2.通过kil关闭
kill -2 PID 或 kill -15 PID
建议不要使用 ”kill -9 pid“,因为如果 MongoDB 运行在没开启日志(--journal)的情况下, 可能会造成数据损失。
8.配置mongodb副本集群
修改配置文件
#配置所有实例的副本集,修改配置文件即可
replication:
replSetName: zdvictory
#重启实例
关闭
mongod --shutdown --dbpath /usr/local/mongodb/data/master
mongod --shutdown --dbpath /usr/local/mongodb/data/slave
mongod --shutdown --dbpath /usr/local/mongodb/data/arbiter
启动
mongod -f /etc/mongodb/master/mongodb_master.conf
mongod -f /etc/mongodb/slave/mongodb_slave.conf
mongod -f /etc/mongodb/arbiter/mongodb_arbiter.conf
在任意1台实例修改
登陆任一mongodb节点添加创建集群:
mongo -host 192.168.13.59 --port 27017
mongo -host 192.168.13.59 --port 27018
mongo -host 192.168.13.59 --port 27019
#这里初始化是1台主、1台从、1太选举
config = {
"_id":"zdvictory", #这个名字要和实例配置文件中的一致
"members":[
{"_id":0,"host":"192.168.13.59:27017",priority:1},
{"_id":1,"host":"192.168.13.59:27018"},
{"_id":2,"host":"192.168.13.59:27019",arbiterOnly:true}
]
}
#配置1从2从
config = {
"_id":"zdvictory",
"members":[
{"_id":0,"host":"192.168.13.59:27017",priority:1},
{"_id":1,"host":"192.168.13.59:27018"},
{"_id":2,"host":"192.168.13.59:27019"}
]
}
#初始化
rs.initiate(config)
各实例状态查看
#可以检查各实例的状态
zdvictory:PRIMARY> rs.status()
"members" : [
{
"_id" : 0,
"name" : "192.168.13.59:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"_id" : 1,
"name" : "192.168.13.59:27018",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"_id" : 2,
"name" : "192.168.13.59:27019",
"health" : 1,
"state" : 7,
"stateStr" : "ARBITER",
#这里就说明副本集群部署完成了
9.开启主从安全认证
创建管理用户和最高权限用户
#在主库进行操作
切换到admin库
zdvictory:PRIMARY> use admin
switched to db admin
#userAdminAnyDatabase:授权在所有的数据库上管理User的权限,只在admin中可用
zdvictory:PRIMARY> db.createUser({user:"admin",pwd: "zdadmin123",roles:[{ role:"userAdminAnyDatabase", db:"admin" }]})
Successfully added user: {
"user" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
#root :超级账户权限,只在admin中可用
zdvictory:PRIMARY> db.createUser({user: "root",pwd: "zdroot123",roles: [ { role: "root", db: "admin" }]})
Successfully added user: {
"user" : "root",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}
#创建拥有者权限账号
use orcl
db.createUser({user:"orcladmin",pwd:"pwd123",roles:[{"role":"dbOwner","db":"orcl"}]})
#尝试用这两个用户进行验证登录
zdvictory:PRIMARY> db.auth('admin','zdadmin123');
1
成功
use admin
zdvictory:PRIMARY> db.auth('root','zdroot123');
1
成功
生成mongodb.key文件
#创建加密文件
touch /usr/local/mongodb/mongodb.keyfile
#产生加密信息
openssl rand -base64 756 > /usr/local/mongodb/mongodb.keyfile
#控制keyFile的权限
chmod 600 /usr/local/mongodb/mongodb.keyfile
将mongodb.key文件发给其他两个从库节点
scp mongodb.keyfile root@192.168.13.90:/usr/local/mongodb/
scp mongodb.keyfile root@192.168.13.91:/usr/local/mongodb/
开启三个节点的安全认证
====mongpdb1=====
systemLog:
destination: file
path: /usr/local/mongodb/logs/master/mongodb.log
storage:
dbPath: /usr/local/mongodb/data/master
net:
port: 27017
bindIp: 0.0.0.0
processManagement:
fork: true
security:
#authorization: enabled
keyFile: /usr/local/mongodb/mongodb.keyfile
replication:
replSetName: zdvictory
====mongodb2=====
systemLog:
destination: file
path: /usr/local/mongodb/logs/slave1/mongodb.log
storage:
dbPath: /usr/local/mongodb/data/slave1
net:
port: 27017
bindIp: 0.0.0.0
processManagement:
fork: true
security:
# authorization: enabled
keyFile: /usr/local/mongodb/mongodb.keyfile
replication:
replSetName: zdvictory
====mongodb3=====
systemLog:
destination: file
path: /usr/local/mongodb/logs/slave2/mongodb.log
storage:
dbPath: /usr/local/mongodb/data/slave2
net:
port: 27017
bindIp: 0.0.0.0
processManagement:
fork: true
security:
# authorization: enabled
keyFile: /usr/local/mongodb/mongodb.keyfile
replication:
replSetName: zdvictory
重启三个节点
1.关闭三个节点
mongod --shutdown --dbpath /usr/local/mongodb/data/master
mongod --shutdown --dbpath /usr/local/mongodb/data/slave
mongod --shutdown --dbpath /usr/local/mongodb/data/arbiter
#参数说明
--shutdown 关闭
--dbpath 指定数据路径
备注:mongod 命令的 shutdown 选项能干净的关闭 MongoDB 服务。
2.启动三个节点
mongod -f /etc/mongodb/master/mongodb_master.conf
mongod -f /etc/mongodb/slave/mongodb_slave.conf
mongod -f /etc/mongodb/arbiter/mongodb_arbiter.conf
3.进入master进行安全认证
[root@mongodb1 master]# mongo --host 192.168.13.89 --port 27017
MongoDB shell version v4.2.13
connecting to: mongodb://192.168.13.89:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("c7d69258-0cb5-4c0b-a0d7-0c21ef47491b") }
MongoDB server version: 4.2.13
#返回1说明验证成功
zdvictory:PRIMARY> db.auth('admin','zdadmin123');
1
zdvictory:PRIMARY> use admin
switched to db admin
zdvictory:PRIMARY> db.auth('root','zdroot123');
1
通过mongodb客户端连接
输入miongo的ip、端口,自定i名称
填写配置mongo认证的账户密码
测试连接ok,登录即可
更多推荐
已为社区贡献1条内容
所有评论(0)