2017-01-12 3 views
0

私はドッカーswarmでMongoDBクラスタを作成しようとしています。 (私のプロセスは、認証が無効になっていると動作します)MongoDB replcasetをAuth on Swarmでビルドできません

したがって、同じ暗号化されたオーバーレイネットワーク上に3つのmongoインスタンス(オプション--auth --replicaset REPLICASET_NAMEで開始)があります。 (mongo1、mongo2及びmongo3)mongo1容器有するノードで

私が使用される場合、私は

docker exec -ti $(docker ps -f "name=mongo1" -q) mongo -u myUserAdmin --authenticationDatabase "admin" -p 
MongoDB shell version v3.4.1 
Enter password: 
connecting to: mongodb://127.0.0.1:27017/admin 
MongoDB server version: 3.4.1 
REPLICASET_NAME:PRIMARY> db.createUser({user: "myClusterAdmin", pwd: "123456", roles: [ { role: "clusterAdmin", db: "admin" } ]}) 
Successfully added user: { 
     "user" : "myClusterAdmin", 
     "roles" : [ 
       { 
         "role" : "clusterAdmin", 
         "db" : "admin" 
       } 
     ] 
} 
REPLICASET_NAME:PRIMARY> exit 

今clusterAdminを作成さらにreplicaSetを開始し、その後、DB管理

docker exec -ti $(docker ps -f "name=mongo1" -q) mongo 
> rs.initiate() 
{ 
     "info2" : "no configuration specified. Using a default configuration for the set", 
     "me" : "84ab8d1609c8:27017", 
     "ok" : 1 
} 
REPLICASET_NAME:SECONDARY> use admin 
switched to db admin 
REPLICASET_NAME:PRIMARY> db.createUser({ user: "myUserAdmin", pwd: "123456", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]}) 
Successfully added user: { 
     "user" : "myUserAdmin", 
     "roles" : [ 
       { 
         "role" : "userAdminAnyDatabase", 
         "db" : "admin" 
       } 
     ] 
} 
REPLICASET_NAME:PRIMARY> exit 

を作成しますreplicaetメンバを追加するclusterAdmin、エラーが発生しました

docker exec -ti $(docker ps -f "name=mongo1" -q) mongo -u myClusterAdmin -p 
MongoDB shell version v3.4.1 
Enter password: 
connecting to: mongodb://127.0.0.1:27017 
MongoDB server version: 3.4.1 
REPLICASET_NAME:PRIMARY>rs.add("mongo2") 
{ 
    "ok" : 0, 
    "errmsg" : "Quorum check failed because not enough voting nodes responded; required 2 but only the following 1 voting nodes responded: c4fe398cc7b8:27017; 
the following nodes did not respond affirmatively: mongo2:27017 failed with not authorized on admin to execute command { replSetHeartbeat: \"REPLICASET_NAME\", pv: 
1, v: 2, from: \"c4fe398cc7b8:27017\", fromId: 0, checkEmpty: false }", 
    "code" : 74, 
    "codeName" : "NodeNotFound" 
} 

「NodeNotFound」エラーが、私は

docker exec -ti $(docker ps -f "name=mongo1" -q) mongo --host mongo2 -u myUserAdmin -p 
MongoDB shell version v3.4.1 
Enter password: 
connecting to: mongodb://mongo2:27017/ 
MongoDB server version: 3.4.1 
2017-01-12T16:09:34.043+0000 E QUERY [main] Error: Authentication failed. : 
[email protected]/mongo/shell/db.js:1459:20 
@(auth):6:1 
@(auth):1:2 
exception: login failed 

それは働いていない、なぜあなたが知っているの対応mongo1とmongo2からmongo2にpingを実行することができますか? 私は何か愚かなことをしました:p?あなたの助けを事前に

感謝;)

答えて

関連する問題