MongoDB 分片集群 -- mongos 启动失败
MongoDB 分片集群 – mongos 启动失败文章目录MongoDB 分片集群 -- mongos 启动失败问题现象影响版本问题原因基本信息检查config 过期检查解决办法参考问题现象mongos 服务异常终止,所有日志查看正常,重启 mongos 直接挂掉。影响版本所有使用 MongoDB 4.2.2+,并使用了分片的集群。问题原因# 由于config节点无法正常刷新签名密钥导致。- 正
·
MongoDB 分片集群 – mongos 启动失败
问题现象
mongos 服务异常终止,所有日志查看正常,重启 mongos 直接挂掉。
影响版本
所有使用 MongoDB 4.2.2+,并使用了分片的集群。
问题原因
# 由于config节点无法正常刷新签名密钥导致。
- 正常情况下存在 2 个密钥
- 正在使用的 -- 将在 90 天内过期
- 即将使用的 -- 将在 180 天内过期
- SERVER-52654 导致 config 无法正常刷新密钥,导致现有密钥过期后 mongos 将崩溃。
基本信息检查
- 内存是否充足
free -mh
- mongos 日志查看
tail -200 mongos.log | less
config 过期检查
- 登录 mongo config 实例
mongo mongo_ip:mongo_config_port/admin -u'mongo_user' -p'monog_pass'
- 创建 Roles
use admin;
db.createRole({
role: "query_keys",
privileges: [
{ resource: { db: "admin", collection: "system.keys"}, actions: [ "find" ] },
],
roles: [ ]
});
- 授权 Roles
db.grantRolesToUser("mongo_user", ["query_keys"])
- 查看 mongos 过期时间
config:PRIMARY> db.getSiblingDB("admin").system.keys.find().map(k => { return { _id: k._id, purpose: k.purpose, expiresAt: new Date(k.expiresAt.getTime()*1000) }})
[
{
"_id" : NumberLong("7040385209933496335"),
"purpose" : "HMAC",
"expiresAt" : ISODate("2022-05-27T09:24:56Z")
},
{
"_id" : NumberLong("7071440297384738820"),
"purpose" : "HMAC",
"expiresAt" : ISODate("2022-08-25T09:24:56Z")
}
]
解决办法
4.2.12 后解决
参考
更多推荐
已为社区贡献2条内容
所有评论(0)