Ops Manager MongoDB 프로세스를 다시 시작하지 않고도 managed 배포서버 전체에서 TLS 인증서를 로테이션할 수 있습니다. 자동화 구성에서 certificatesVersion 필드 증가시키면 MongoDB Agent 각 적격 프로세스 에서 db.adminCommand({ rotateCertificates: 1 })를 실행하므로 클라이언트 연결이 작업 내내 중단되지 않습니다.
자격
MongoDB Agent는 다음 모든 요구 사항을 충족하는 프로세스에만 제로 다운타임 로테이션을 적용합니다.
MongoDB 버전은 5.0 이상입니다.
프로세스 에TLS가 구성되어 있습니다.
배포서버의 모든 노드가 위의 요건을 충족합니다.
MongoDB Agent는 다음 카테고리의 프로세스에 제로 다운타임 로테이션을 적용할 수 없습니다. MongoDB Ops Manager UI에서는 배포서버의 해당 하는 항목의 체크박스가 비활성화됩니다. 자동화 API를 통해 MongoDB Ops Manager는 배포서버의 해당 하는 항목에 대한 구성 업데이트를 다음과 같은 HTTP 400 오류로 거부합니다.
조건 | 행동 |
|---|---|
5.0이전의 MongoDB 버전 | Ops Manager UI에서 선택할 수 없습니다. 자동화 API는 HTTP 400 오류로 구성 업데이트를 거부합니다. |
TLS가 구성되지 않음 | Ops Manager UI에서 선택할 수 없습니다. 자동화 API는 HTTP 400 오류로 구성 업데이트를 거부합니다. |
BI Connector 또는 | Ops Manager UI에서 선택할 수 없습니다. 자동화 API는 HTTP 400 오류로 구성 업데이트를 거부합니다. |
TLS 경로 변경은 순환과 일치합니다. | 롤링 재시작은 경로 변경을 처리합니다. MongoDB Ops Manager는 로테이션을 완료된 것으로 기록합니다. |
중요
제로 다운타임 로테이션을 위해서는 배포서버의 모든 프로세스가 자격 요건을 충족해야 합니다. 적격하지 않는 프로세스가 있는 경우 기존 방법을 사용합니다. Deployment, Security, Settings, TLS Settings로 이동하여 인증서 경로를 업데이트하고 Review and Deploy를 통해 롤링 재시작을 trigger합니다.
전제 조건
인증서를 로테이션하기 전에 다음 사항을 확인하십시오.
Your deployment is managed by Ops Manager Automation.
배포서버 에서TLS가 활성화되어 있습니다.
새 TLS 인증서가 유효하고 원래 구성된 경로에 올바르게 오버라이트되었습니다.
TLS 인증서 로테이션
자동화 API 또는 MongoDB Ops Manager UI를 사용하여 인증서 로테이션을 trigger합니다.
중요
UI 또는 API를 통해 certificatesVersion을 이전 값으로 복원할 수 없습니다. MongoDB Ops Manager는 이 값의 증가만 허용합니다.
자동화 API 사용
자동화 API를 사용하여 인증서를 로테이션하려면 현재 자동화 구성을 조회하고 certificatesVersion을 증가시킨 다음 업데이트된 구성을 업로드합니다.
certificatesVersion 필드 증가시킵니다.
processes 배열에서 로테이션할 각 프로세스에 대한 객체를 찾습니다. certificatesVersion 정수를 1만큼 증가시킵니다. 필드가 없으면 추가하고 1으로 설정합니다.
To trigger in-place rotation, set a value greater than the currently published value. 동일한 값은 로테이션을 trigger하지 않습니다. MongoDB Ops Manager는 HTTP 400 INVALID_AUTOMATION_CONFIG으로 감소를 거부합니다. 필드 유효성 검사 규칙에 대해서는 MongoDB Processes를 참조하십시오.
업데이트된 자동화 구성을 업로드합니다.
수정된 구성으로 PUT 요청을 보냅니다.
curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" \ --digest \ --header "Accept: application/json" \ --header "Content-Type: application/json" \ --request PUT \ --data @automation-config.json \ "https://<OpsManagerHost>/api/public/v1.0/groups/{GROUP-ID}/automationConfig"
MongoDB Ops Manager UI 사용
MongoDB Ops Manager UI를 사용하여 인증서를 로테이션하려면 프로젝트의 TLS 설정으로 이동하여 로테이션할 배포서버를 선택합니다.
회전 상태 및 내구성
MongoDB Agent는 각 로테이션의 결과를 유지하여 에이전트 재시작동 후에도 유지되고 중단된 지점에서 다시 시작됩니다.
MongoDB Ops Manager는 자동화 구성 업데이트가 하나 이상의 프로세스에서 인증서를 로테이트할 때마다 프로젝트의 활동 피드에 TLS_CERTIFICATES_ROTATED 이벤트를 기록합니다. 이 이벤트를 사용하여 인증서 로테이트 이력을 감사합니다.
재시도 동작
rotateCertificates 명령이 실패하면 MongoDB Agent는 오류 코드 128 (TlsCertificatesRotationErr)을 반환합니다. MongoDB Ops Manager는 자동화 상태 패널에 "TLS 인증서 로테이션 오류"를 표시하고 다음 수려버 틱에서 단계를 다시 스케줄합니다. 디스크의 인증서 파일을 수정하여 오류를 해결합니다.
명령이 성공했지만 MongoDB Agent가 결과를 유지할 수 없으면 자동으로 다시 시도합니다.
에이전트가 회전을 적용하는 방법
MongoDB Agent가 자동화 구성에서 증가된 certificatesVersion을 감지하면 각 유효 프로세스에 대해 유효 요구 사항을 검사하고 db.adminCommand({ rotateCertificates: 1 })을 실행합니다.