目标:
在三个节点(服务器)上部署mongondb,并建立集群
一:资源下载
mongondb安装包下载,下附下载地址:
https://www.mongodb.com/download-center#production
二:创建mongodb用户
新建mongodb的用户:
# useradd mongodb
三:解压安装mongodb:
将下载后的压缩包放置到服务器解压:
这里解压即可,无需安装, 图为解压之后的文件
# tar -zxvf mongodb-linux-x86_64-rhel62-3.4.4.tgz
其他两个节点也是一样,将mongodb解压到服务器上
mongodb-linux-x86_64-rhel62-3.4.4/
在该目录下新建 conf 用来存放配置文件,并在该conf目录下新建 mong.conf 配置文件,三个节点都要做
四:配置文件:
配置文件结构:
-conf目录下的
--mongo.conf mongodb的配置文件
--mongodb_keyfile mongodb集群认证文件
需要创建这两个配置文件(三个节点都要做):
mongodb集群认证文件生成>>>>>>>(生成的认证文件放到三个节点):
一次生成,放到三个节点上
openssl rand -base64 1024> /data/mongodb-keyfile
mongo.conf 配置文件内容如下:
复制粘贴,然后修改关键信息即可
———————————————————— mongod.conf——————————————————————–
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /opt/mongodata/log/mongod.log # 数据库日志目录(必须指定)
# Where and how to store data.
storage:
dbPath: /opt/mongodata/data # 数据存放目录(必须指定)
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:
# how the process runs
processManagement:
fork: true # fork and run in background
pidFilePath: /opt/mongodb/conf/cecond_mongod.pid #location of pidfile 该文件启动mongo自动生成
# network interfaces
net:
port: 37017 #端口
# bindIp: 127.0.0.1,127.0.0.128,127.0.0.129 # Listen to local interface only, comment to listen on all interfaces.
security:
keyFile: /opt/mongodb/conf/cecond_mongodb_keyfile #mongo集群的认证文件
#operationProfiling:
replication:
replSetName: replset #此为集群的统一名称,三个节点都一样
#sharding:
主要修改的内容项:
path: /opt/mongodata/log/mongod.log #日志目录
dbPath: /opt/mongodata/data #数据目录
pidFilePath: /opt/mongodb/conf/cecond_mongod.pid #pid
port: 37017 #端口
keyFile: /opt/mongodb/conf/cecond_mongodb_keyfile#认证(为之后建立集群准备)
replSetName: replset #集群名(为之后建立集群准备)
五:mongdb集群建立:
确保三个节点成功安装并启动mongodb之后,就可以配置集群
任意节点登陆mongodb执行
# mongo –port=37017 # 登录
三个节点进行勾连:
执行以下语句:
> rs.initiate(
{
_id : “replset0”,
members: [
{ _id : 0, host : “仲裁节点IP:37017”, arbiterOnly : true }, //仲裁节点
{ _id : 1, host : “主节点IP:37017” }, //主节点
{ _id : 2, host : “副节点IP:37017” } //副节点
]
}
)
在进行副本集勾连时报错如下:
这里没有贴 ErrorMessage大概意思就是说其中一个节点拒绝连接,反正记得按照下面步骤把这个关闭就好
原因:
防火墙、SELINUX阻挡了连接
解决:
1、关闭防火墙: centos7的防火墙是firewall,注意命令和.6的不一样。
2、关闭SELINUX: >>>> vi /etc/sysconfig/selinux ;
末尾追加 SELINUX=disabled
六:查看集群状态
在三个节点都启动了Mongodb之后执行rs.status()检查状态:
结果如下:
rs.status();{
“set” : “newco”,
“date” : ISODate(“2014-05-20T18:10:53Z”),
“myState” : 1,
“members” : [
{
“_id” : 0,
“name” : “replset “, #集群名称
“health” : 1, #状态
“state” : 2,
“stateStr” : “SECONDARY“, #节点类型
“uptime” : 1149,
“optime” : Timestamp(1399640630, 1),
“optimeDate” : ISODate(“2014-05-09T13:03:50Z”),
“lastHeartbeat” : ISODate(“2014-05-20T18:10:51Z”),
“lastHeartbeatRecv” : ISODate(“2014-05-20T18:10:52Z”),
“pingMs” : 0,
“syncingTo” : “replset ”
},
{
“_id” : 1,
“name” : “replset “,
“health” : 1,
“state” : 2,
“stateStr” : “SECONDARY”,
“uptime” : 1033,
“optime” : Timestamp(1399640630, 1),
“optimeDate” : ISODate(“2014-05-09T13:03:50Z”),
“lastHeartbeat” : ISODate(“2014-05-20T18:10:51Z”),
“lastHeartbeatRecv” : ISODate(“2014-05-20T18:10:52Z”),
“pingMs” : 1,
“syncingTo” : “rreplset ”
},
{
“_id” : 2,
“name” : “replset “,
“health” : 1,
“state” : 1,
“stateStr” : “PRIMARY”,
“uptime” : 1649,
“optime” : Timestamp(1399640630, 1),
“optimeDate” : ISODate(“2014-05-09T13:03:50Z”),
“self” : true
}
],
“ok” : 1
}
七,创建用户:
> use admin
switched to db admin
初始化数据库:
> db.createUser(
… {
… user: “dba”,
… pwd: “dba”,
… roles: [ { role: “userAdminAnyDatabase”, db: “admin” } ]
… }
… ) #用户授权
> use admin
> use db.auth(“dba”,”dba”); # 登录
创建用户:
> db.createUser(
… {
… user: “ root “,
… pwd: “ root“,
… roles: [ { role: “root“, db: “admin” } ]
… }
… ) #创建用户
八,安装时出现的问题:
一:数据库文件权限问题
由于操作时,可能使用了root此时需要修改文件的权限
root】# chown -R mongodb:mongodb /mongo安装目录
root】# chown -R mongodb:mongodb /home/mongodb
二:mongodb启动时mongodb_keyfile权限问题:
# su – mongodb
# mongod -f /mongodb安装目录/conf/mongo.conf
可能会报错
ERROR: child process failed, exited with error number 1
检查配置文件是否写对,检查配置对应的目录是否创建,检查目录权限
博主在cat mongodb 的日志发现是权限问题,mongodb_keyfile 权限太大
这里将其权限改为666
chmod -R 666 /mongodb安装目录/conf/mongodb_keyfile
之后重启OK!!
九:Mongodb客户端使用工具:
例如:Nosql Manager for Mongodb、Navicat for Mongodb