Apache Cassandra 유지보수 작업

이 섹션에서는 Cassandra의 주기적 유지보수 작업을 설명합니다.

안티엔트로피 유지관리

Apache Cassandra 링 노드는 모든 노드에서 일관성을 보장하기 위해 정기적인 유지보수가 필요합니다. 이 유지보수를 수행하려면 다음 명령어를 사용합니다.

apigee-service apigee-cassandra apigee_repair -pr

이 명령어를 실행할 때 Apigee에서는 다음을 권장합니다.

  • 모든 리전 또는 데이터 센터에 걸쳐 모든 Cassandra 노드에서 실행됩니다.
  • 링에 있는 모든 노드에서 일관성을 보장하기 위해 한 번에 하나의 노드에서 실행합니다. 여러 노드에서 동시에 복구 작업을 실행하면 Cassandra의 상태가 손상될 수 있습니다.

    노드의 복구 작업이 성공적으로 완료되었는지 확인하려면 노드의 system.log 파일에서 최신 복구 세션의 UUID와 '세션이 완료되었습니다'라는 문구가 포함된 항목을 찾습니다. 다음은 샘플 로그 항목입니다.

    INFO [AntiEntropySessions:1] 2015-03-01 10:02:56,245 RepairSession.java (line 282) [repair #2e7009b0-c03d-11e4-9012-99a64119c9d8] session completed successfully"
    Ref: https://support.datastax.com/hc/en-us/articles/204226329-How-to-check-if-a-scheduled-nodetool-repair-ran-successfully
  • 워크로드가 상대적으로 낮은 기간 동안 실행됩니다 (이 도구는 시스템에 상당한 부하를 가함).
  • Cassandra의 '잊혀진 삭제'와 관련된 문제를 제거하려면 최소 7일마다 실행합니다.
  • 서로 다른 날에 다른 노드에서 실행하거나 각 노드에서 몇 시간씩 실행되도록 예약합니다.
  • -pr 옵션 (파티션 나누기 범위)을 사용하여 노드의 기본 파티션 나누기 범위만 지정합니다.

Cassandra에 JMX 인증을 사용 설정한 경우 nodetool를 호출할 때 사용자 이름과 비밀번호를 포함해야 합니다. 예를 들면 다음과 같습니다.

apigee-service apigee-cassandra apigee_repair -u username -pw password -pr

다음 명령어를 실행하여 지원되는 apigee_repair: 옵션을 확인할 수도 있습니다.

apigee-service apigee-cassandra apigee_repair -h

참고: apigee_repair는 Cassandra의 노드 도구 복구에 대한 래퍼로, Cassandra의 복구를 수행하기 전에 추가 검사를 실행합니다.

자세한 내용은 다음 리소스를 참조하세요.

로그 파일 유지관리

Cassandra 로그는 각 노드의 /opt/apigee/var/log/cassandra 디렉터리에 저장됩니다. 기본적으로 최대 20MB의 로그 파일을 최대 50개까지 만들 수 있습니다. 이 한도에 도달하면 최신 로그가 만들어지면 이전 로그가 삭제됩니다.

Cassandra 로그 파일이 과도한 공간을 차지하는 경우 log4j 설정을 수정하여 로그 파일에 할당된 공간을 수정하면 됩니다.

  1. /opt/apigee/customer/application/cassandra.properties를 수정하여 다음 속성을 설정합니다. 이 파일이 없으면 다음과 같이 만듭니다.
    conf_logback_maxfilesize=20MB
    # max file size
    conf_logback_maxbackupindex=50 # max open files
  2. 다음 명령어를 사용하여 Cassandra를 다시 시작합니다.
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart

디스크 공간 유지관리

Cassandra 디스크 사용률을 정기적으로 모니터링하여 각 디스크의 50% 이상을 사용 가능하도록 해야 합니다. 디스크 사용률이 50%를 초과하면 디스크 공간을 추가하여 사용 중인 비율을 줄이는 것이 좋습니다.

Cassandra는 자체 디스크 사용률을 줄이기 위해 다음 작업을 자동으로 수행합니다.

  • 토큰이 만료되면 인증 토큰이 삭제됩니다. 하지만 구성에 따라 토큰에서 사용되던 디스크 공간을 확보하는 데 몇 주 정도 걸릴 수 있습니다. 충분한 디스크 공간을 유지하기에 자동 삭제가 적합하지 않으면 지원팀에 문의하여 토큰을 수동으로 삭제하여 공간을 복구하는 방법을 알아보세요.
  • 데이터 압축. 키스페이스에 대한 압축 전략을 LeveledCompactionStrategy로 변경하는 것이 좋습니다. 이 전략은 기본 SizeTieredCompactionStrategy보다 더 나은 디스크 사용률 전략을 제공합니다. 레벨화된 압축 전략을 참고하세요.

참고: Cassandra가 데이터 압축을 수행할 때 상당한 양의 CPU 주기와 메모리가 필요할 수 있습니다. 하지만 압축이 완료되면 리소스 사용률이 정상으로 돌아갑니다. 각 노드에서 'Nodetool compactionstats' 명령어를 실행하여 압축이 실행 중인지 확인할 수 있습니다. compactionstats의 출력은 실행 대기 중인 압축이 있는지와 예상 완료 시간을 알려줍니다.