Mongodb集群搭建过程及常见错误

Replica Sets
MongoDB 支持在多个机器中经过异步复制达到故障转移和实现冗余。多机器中同一时刻只 有一台是用于写操做。正是因为这个状况,为 MongoDB 提供了数据一致性的保障。担当  Primary 角色的机器能把读操做分发给 slave。
Replica Sets的结构很是相似一个集群。因 为它确实跟集群实现的做用是同样的, 其中一个节点若是出现故障, 其它节点立刻会将业务接过来而无须停机操做。
下面以本机为例介绍一下集群的部署过程,以及部署过程当中常见的注意点及错误
本例环境是Linux操做系统,mongodb版本:mongodb-linux-x86_64-2.6.1.tgz,Vmwre虚拟机,虚拟机IP:192.168.169.129,集群以本机不一样端口模拟三台服务器。
1.集群主要分为三个节点master主节点,slaver备用节点,arbiter仲裁节点
创建数据文件夹
mkdir -p /mongodb/data/master
mkdir -p /mongodb/data/slaver
mkdir -p /mongodb/data/arbiter

 

ps:三个目录分别对应主,备,仲裁节点
2.创建配置文件夹
1)master.conf
    打开编辑器:
vi /etc/master.conf

按i 输入下列配置linux

dbpath=/home/mongodb/data/master  
logpath=/home/mongodb/log/master.log
logappend=true
replSet=rep1
port=10000
fork=true
journal=true

完成以后按esc  》》 :  >>wq>>回车mongodb

2)slaver.conf
编辑器打开和保存按上边的步骤,下边只写详细内容
dbpath=/home/mongodb/data/slaver
logpath=/home/mongodb/log/slaver.log
logappend=true
replSet=rep1
port=10001
fork=true
journal=true

3)arbiter.conf数据库

dbpath=/home/mongodb/data/arbiter
logpath=/home/mongodb/log/arbiter.log
logappend=true
replSet=rep1
port=10002
fork=true
journal=true
smallfiles=true

参数解释:服务器

dbpath:数据存放目录app

logpath:日志存放路径异步

logappend:以追加的方式记录日志编辑器

replSet:replica set的名字spa

port:mongodb进程所使用的端口号,默认为27017操作系统

fork:之后台方式运行进程日志

journal:写日志

smallfiles:当提示空间不够时添加此参数

其余参数

pidfilepath:进程文件,方便中止mongodb

directoryperdb:为每个数据库按照数据库名创建文件夹存放

bind_ip:mongodb所绑定的ip地址

oplogSize:mongodb操做日志文件的最大大小。单位为Mb,默认为硬盘剩余空间的5%

noprealloc:不预先分配存储

3.启动Mongodb   

cd /home/mongodb/bin

 

启动服务

./mongod -f /etc/master.conf

./mongod -f /etc/slaver.conf

./mongod -f /etc/arbiter.conf

 有这样的提示说明启动成功

若是是下列的提示说明启动失败

启动失败的缘由有不少,检查完配置文件,若是没有错误,可打开相应的配置文件查看详细的错误信息

cat /etc/master.conf

最多见的一个错误就是磁盘空间不足,会提示这样的错误

由于Mongodb的日志文件是成2g的增加,因此所需空间比较大,这时你能够在配置文件里添加这样的一个配置
smallfiles=true。
所有三个服务所有启动成功以后

4.配置主(master),备(slaver),仲裁(arbiter)节点

能够经过客户端链接mongodb,也能够直接在三个节点中选择一个链接mongodb。

./mongo 192.168.169.129:10000   #ip和port是某个节点的地址

>use admin

>cfg={ _id:"rep1", members:[ {_id:0,host:'192.168.169.129:10000',priority:2}, {_id:1,host:'192.168.169.129:10001',priority:1},
{_id:2,host:'192.168.169.129:10002',arbiterOnly:true}] };
>rs.initiate(cfg) #使配置生效
{
        "set" : "rep1",
        "date" : ISODate("2014-09-05T02:44:43Z"),
        "myState" : 1,
        "members" : [
                {
                        "_id" : 0,
                        "name" : "192.168.169.129:10000",
                        "health" : 1,
                        "state" : 1,
                        "stateStr" : "PRIMARY",
                        "uptime" : 200,
                        "optime" : Timestamp(1357285565000, 1),
                        "optimeDate" : ISODate("2013-01-04T07:46:05Z"),
                        "self" : true
                },
                {
                        "_id" : 1,
                        "name" : "192.168.169.129:10001",
                        "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",
                        "uptime" : 200,
                        "optime" : Timestamp(1357285565000, 1),
                        "optimeDate" : ISODate("2013-01-04T07:46:05Z"),
                        "lastHeartbeat" : ISODate("2013-01-05T02:44:42Z"),
                        "pingMs" : 0
                },
                {
                        "_id" : 2,
                        "name" : "192.168.169.129:10002",
                        "health" : 1,
                        "state" : 7,
                        "stateStr" : "ARBITER",
                        "uptime" : 200,
                        "lastHeartbeat" : ISODate("2013-01-05T02:44:42Z"),
                        "pingMs" : 0
                }
        ],
        "ok" : 1
}
 
配置过程当中可能还会出现其余的一些错误,不过均可以去查看相应的日志文件,去解决。
相关文章
相关标签/搜索