我已经完成了在k4s上设置mongodb的副本集的工作,该副本集具有4个成员(1个主要,1个辅助,1个仲裁器,1个隐藏用于备份的成员)。所有成员都通过传递参数--auth来启用身份验证。
我还创建了一个cronjob,负责将数据库备份到s3。
但是,当尝试从cronjob pod连接到备份pod时遇到问题。
这是错误堆栈:
connecting to: mongodb://mongodb-backup-0.mongodb-backup.default.svc.cluster.local:27017/?authSource=admin&gssapiServiceName=mongodb
2019-04-05T04:26:52.870+0000 E QUERY [js] Error: Authentication failed. :
connect@src/mongo/shell/mongo.js:343:13
@(connect):2:6
exception: connect failed
我可以从备份Pod内连接到mongo备份的实例:
rs0:SECONDARY> db.auth("admin", "test")
1
我还尝试从备用Pod连接备份Pod。它报告相同的错误。 这是我的命令:
mongo --authenticationDatabase admin --host mongodb-backup-0.mongodb-backup.default.svc.cluster.local --port 27017 -u "admin" -p "test"
但是,如果我没有用户名和密码就连接到备份容器,则可以连接到mongodb备份实例。
mongo --authenticationDatabase admin --host mongodb-backup-0.mongodb-backup.default.svc.cluster.local --port 27017
任何人都可以提供建议吗?
答案 0 :(得分:0)
我找到了这个问题的答案。
我用--authenticationMechanism 'SCRAM-SHA-256'
启动mongod实例
参数。因此,mongo shell要求输入--authenticationMechanism
才能登录。