MongoDB 2.6配置副本集,支持端口号修改和用户登录认证

mongoDB系列之(二):mongoDB 副本集

Mongodb2.6副本集验证部署和认证

副本集有以下特点:

1. 最小构成是:primary,secondary,arbiter,一般部署是:primary,2 secondary。

2. 成员数应该为奇数,如果为偶数的情况下添加arbiter,arbiter不保存数据,只投票。

3. 最大50 members,但是只能有 7 voting members,其他是non-voting members。

注意:配置mongo副本集的时候,不能先添加登陆授权用户,但是可以先修改端口号。

修改每一台机器的配置文件/etc/mongo.conf,增加副本集名称

#replSet=setname
replSet=wangyunpeng

然后重起每一台mongo的服务

service mongod stop
service mongod start

此时再通过MongoVUE工具访问每一个mongo服务器里面的集合,会提示:cannot currently read from this replSet *****错误。

在其中一台数据的节点上登陆mongodb数据库

mongo 127.0.0.1:27017/admin

指定副本集的名字为wangyunpeng和数据节点、仲裁者

config_repl=
{
    "_id" : "shoespie",
    "members" : [
        {
            "_id" : 0,
            "host" : "10.53.0.40:18181",
            "priority" : 10
        },
        {
            "_id" : 1,
            "host" : "10.53.0.41:18181",
            "priority" : 9
        },
        {
            "_id" : 2,
            "host" : "10.53.0.45:18181",
            "priority" : 9 数据节点 (或 "arbiterOnly" : true 仲裁者)
        }
    ]
}
rs.initiate(config_repl);

MongoDB 2.6配置副本集,支持端口号修改和用户登录认证_第1张图片

 

MongoDB 2.6配置副本集,支持端口号修改和用户登录认证_第2张图片

查看成功之后的机器信息

MongoDB 2.6配置副本集,支持端口号修改和用户登录认证_第3张图片

仲裁者的信息

MongoDB 2.6配置副本集,支持端口号修改和用户登录认证_第4张图片

配置玩副本集之后开始用户认证,需要配置两个用户,一个是系统用户,一个是数据库管理员用户。配置完之后,配置信息将同步到其他节点。

配置完用户验证之后,停掉副本集,先用openssl生成密码文件,

openssl rand -base64 741 > mongodb-keyfile

赋予权限600,文件才能被调用

chmod 600 mongodb-keyfile

保存好文件,修改所有者和所有组,

chown -R mongod:mongod mongodb-keyfile

然后在节点配置文件加入启动调用认证文件参数 vim /etc/mongo.conf,如:

keyFile = /data/mongo/mongodb-keyfile

然后将mongodb-keyfile逐一拷贝到每一个从的机器上,然后启动副本,只用经过密码文件认证的节点才能加入。数据库操作也需要密码认证,大大提高了安全性。

cd /data/mongo/
openssl rand -base64 741 > mongodb-keyfile
chmod 600 mongodb-keyfile
chown -R mongod:mongod mongodb-keyfile

vim /etc/mongo.conf
keyFile=/data/mongo/mongodb-keyfile

这样就不用修改/etc/mongo.conf文件的nuauth=false和auth=true也能行了,修改也没有错。

 

同期动作确认

在主库上插入一条记录操作

在从库上查看数据已经同期,直接查会抱错,需要使用db.getMongo().setReadPref("secondaryPreferred")命令

wangyunpeng:SECONDARY> use shoespie_website
wangyunpeng:SECONDARY> show collections
2016-01-25T21:02:07.585-0500 error: { "$err" : "not master and slaveOk=false", "code" : 13435 } at src/mongo/shell/query.js:131

wangyunpeng:SECONDARY> db.getMongo().setReadPref("secondaryPreferred")
wangyunpeng:SECONDARY> use shoespie_website
wangyunpeng:SECONDARY> show collections

3. 读写分离

主库,从库都支持读操作。但是,默认情况读也是从主库来读。

从库可以通过设置ReadPreference打开支持读操作,ReadPreference有几种模式:

Primary                   #从主的读,默认

primaryPreferred      #基本上从主的读,主不可用时,从从的读

secondary                #从从的读

secondaryPreferred   #基本上从从的读,从不可用时,从主的读

nearest                    #从网络延迟最小的读

基本上常用的是,Primary,secondary,nearest

副本集的设定中可以通过Tag把成员归类,通过下面方法指定读的类型:

1,程序连接的时候,指定读的类型ReadPreference

2,用mongo命令连接,只对当前连接有效

wangyunpeng:SECONDARY> db.getMongo().setReadPref('secondaryPreferred')

 

你可能感兴趣的:(MongoDB 2.6配置副本集,支持端口号修改和用户登录认证)