mongos 붕괴 후 문제를 다시 시작할 수 없는 해결 방법

앞말


공식 문서:https://docs.mongodb.com/manual/reference/program/mongos/#bin.mongos
mongos는 MongoDBshard의 줄임말로 응용층에 조회 요청을 제공하고 데이터가 MongoDB 분할에 있는 위치를 결정하는 루트 서비스이다.응용층의 측면에서 볼 때 몬고스의 행위는 하나의 몬고DB 실례와 차이가 없다.
상세한 설정 파라미터는 공식 문서를 한 번 훑어보면 되고, 필요할 때 다시 찾아보면 된다.
최근에 서로 다른 사용자가 잇따라 SERVER-52654를 만났기 때문에 다음과 같은 설명을 드리겠습니다.

버전 영향


모두 MongoDB 4.2.2+를 사용하고 조각화된 그룹을 사용합니다.

문제 현상


지난번에 config 노드를 다시 시작하거나 90 또는 180일 후에 모든mongos는 동시crash를 시작하고 다시 시작할 수 없습니다.

문제의 원인


이 문제는 config 노드가 서명 키를 정상적으로 새로 고칠 수 없기 때문입니다.정상적으로 2개의 키가 존재하는데, 하나는 사용 중이며, 하나는 90일 이내, 하나는 180일 이내에 만료될 것이다.SERVER-52654로 인해 config가 키를 정상적으로 리셋할 수 없기 때문에 기존 키가 만료된 후mongos가 붕괴됩니다.

버전 수정


이 문제는 4.2.12에 해결될 것이다.4.2.12는 현재 발표되었습니다.

회피 방법


primary 노드 stepDown을 90일 이내에 한 번에 피할 수 있습니다.서명 키의 정확한 만료 시간을 알고 싶으면 임의의 config 노드에 연결하고 다음 스크립트를 실행할 수 있습니다.

db.getSiblingDB("admin").system.keys.find().map(k => { return { _id: k._id, purpose: k.purpose, expiresAt: new Date(k.expiresAt.getTime()*1000) }})
키 2개(1개 90일 이내, 1개 180일 이내)가 있으면 당분간 사용하지 않습니다.키가 하나만 있으면 90일 안에 stepDown 전환config 마스터를 실행해야 합니다.
시스템 때문에.keys 컬렉션에 액세스하려면 특수 권한이 필요합니다. 권한 문제가 발생하면 다음 스크립트를 사용하여 필요한 역할을 만들 수 있습니다 (ADMIN을 사용자로 변경).

use admin;
db.createRole({
 role: "query_keys",
 privileges: [
 { resource: { db: "admin", collection: "system.keys"}, actions: [ "find" ] },
 ],
 roles: [ ]
});
db.grantRolesToUser("ADMIN", ["query_keys"])
config 마스터 노드 재선거 후 새로운 만료 시간이 발생합니다. 상기 스크립트를 통해 갱신되었는지 확인할 수 있습니다.

총결산


몬고스 붕괴 후 재부팅 불가 문제의 해결 방법에 대한 이 글을 소개합니다. 몬고스 붕괴 후 재부팅 불가 내용에 대한 자세한 내용은 저희 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보십시오. 앞으로 많은 응원 부탁드립니다!

좋은 웹페이지 즐겨찾기