Назад | Перейти на главную страницу

Аутентификация в сегментированном кластере Mongodb

У меня есть общий кластер mongo и наборы реплик:

Набор реплик ShardA:

A1. 10.77.14.241 

A2. 10.77.14.242

AA. 10.77.14.243 Arbiter

Некоторые параметры /etc/mongod.conf:

#bind_ip=127.0.0.1
auth=true
replSet=ShardB
keyFile=/srv/mongodb/mongodb-keyfile

Набор реплик ShardB:

B1. 10.77.14.244 

B2. 10.77.14.245

BA. 10.77.14.246 Arbiter

Некоторые параметры /etc/mongod.conf:

#bind_ip=127.0.0.1
auth=true
replSet=ShardB
keyFile=/srv/mongodb/mongodb-keyfile

Серверы Config и Mongos:

C1. 10.77.14.247

C2. 10.77.14.248

C3. 10.77.14.249

Все экземпляры config mongod и mongos запускаются в /etc/rc.local:

mongod --configsvr  --logpath /var/log/mongodb/mongod.log --keyFile /srv/mongodb/mongodb-keyfile --fork
mongos --configdb 10.77.14.247:27019,10.77.14.248:27019,10.77.14.249:27019 --port 40000 --logpath /data/mongos.log --keyFile /srv/mongodb/mongodb-keyfile --fork

Наборы реплик работают правильно. Если я вставляю документы в первичный член, он реплицируется на вторичном члене.

У меня следующая проблема: на любом арбитре, конфигурации mongod, mongos -

use admin   
switched to db admin    
mongos> db.auth({user: 'admin', pwd: '12345678'})    
Error: 18 Authentication failed.
0

Следовательно, я не могу вставлять документы в БД через монго.

Нужно ли включать шардинг админки БД?

Я перечитал http://docs.mongodb.org/manual/tutorial/enable-authentication-without-bypass/ :)

1) Я стартовал на С1, С2, С3:

mongod --configsvr  --logpath /var/log/mongodb/mongod.log --fork
mongos --configdb 10.77.14.247:27019,10.77.14.248:27019,10.77.14.249:27019 --port 40000 --logpath /data/mongos.log --fork

2) Я создал нового пользователя на mongos:

use admin
db.createUser(
    {
      user: "admin",
      pwd: "12345678",
      roles: [
         { role: "clusterManager", db: "admin" },
         { role: "userAdminAnyDatabase", db: "admin" }
      ]
    }
)

3) Я перезапустил экземпляры конфигурации mongod и параметра mongos --keyfile:

  mongod --configsvr  --logpath /var/log/mongodb/mongod.log --fork --keyFile /srv/mongodb/mongodb-keyfile
mongos --configdb 10.77.14.247:27019,10.77.14.248:27019,10.77.14.249:27019 --port 40000 --logpath /data/mongos.log --fork --keyFile /srv/mongodb/mongodb-keyfile

4) Добавление осколков прошло успешно:

db.auth({user:'admin', pwd: '12345678'})
1

sh.addShard("ShardA/10.77.14.241:27017,10.77.14.242:27017,10.77.14.243:27017")
{ "shardAdded" : "ShardA", "ok" : 1 }

sh.addShard("ShardB/10.77.14.244:27017,10.77.14.245:27017,10.77.14.246:27017")
{ "shardAdded" : "ShardB", "ok" : 1 }