我有一个 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
配置 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
因此我无法通过 mongos 将文档插入到数据库。
我是否必须启用管理数据库的分片?
答案1
我重读http://docs.mongodb.org/manual/tutorial/enable-authentication-without-bypass/:)
1)我从C1、C2、C3开始:
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 }