Amazon Managed Streaming for Apache Kafka(Amazon MSK) 클러스터의 보존 기간을 업데이트하고 싶습니다.
간략한 설명
Amazon MSK 데이터 보존 기간을 사용하여 MSK 클러스터에 저장되는 데이터의 양을 제어합니다. 보존 기간을 설정하면 필요하지 않은 오래된 메시지를 자동으로 삭제할 수 있으므로 스토리지 비용을 줄이고 클러스터 성능을 개선할 수 있습니다.
기본적으로 Amazon MSK 데이터 보존 기간은 7일입니다. 하지만 요구 사항에 맞게 보존 기간을 수정할 수 있습니다. 보존 기간을 올바르게 구성하지 않으면 Amazon MSK가 올바른 기간 내에 데이터를 삭제하지 못할 수 있습니다.
Apache Kafka는 주제 파티션을 세그먼트로 나눕니다. 기본 최대 세그먼트 크기는 1GB입니다. 최대 크기를 변경하려면 브로커 수준에서 log.segment.bytes를 업데이트하거나 주제 수준에서 segment.bytes를 업데이트하십시오. 자세한 내용은 Apache Kafka 웹 사이트의 Updating broker configs 및 Updating default topic configuration을 참조하십시오.
Apache Kafka는 또한 log.roll.ms를 사용하여 세그먼트의 수명 주기를 제어합니다. 이 설정은 세그먼트의 최대 기간을 결정하며 기본값은 168시간입니다. Apache Kafka는 segments.bytes 또는 log.roll.ms가 구성된 한계값에 도달할 때만 새 세그먼트를 생성합니다. Apache Kafka가 새 세그먼트를 생성하면 이전 세그먼트는 비활성화됩니다. 그런 다음 새 세그먼트가 구성된 retention.ms 값에 도달하면 MSK는 이전 세그먼트를 삭제합니다.
참고: 비활성 세그먼트만 삭제할 수 있습니다.
해결 방법
보존 기간을 구성하려면 retention.ms 파라미터와 segment.ms 설정을 수정하십시오.
예를 들어 segment.ms의 값을 24hrs로 설정하고 retention.ms를 24hrs로 설정하면 Amazon MSK가 48시간 후에 데이터를 삭제합니다. 그러면 세그먼트가 처음으로 24시간 기간을 충족하는지 또는 1GB 데이터 제한을 충족하는지에 따라 세그먼트가 비활성화됩니다.
24시간 후에 데이터를 삭제하려면 기본 segment.ms 값을 1hr로 줄이고 retention.ms를 23hrs로 줄이십시오. Amazon MSK는 24시간 후 또는 세그먼트가 구성된 크기 값에 도달하면(둘 중 먼저 도래하는 시점에) 데이터를 삭제합니다.
모든 주제의 현재 크기를 계산하려면 Amazon MSK의 Apache Kafka 명령줄 인터페이스(CLI)에서 다음 명령을 실행합니다.
./kafka-topics.sh --command-config client.properties --bootstrap-server $BK --list |
xargs -I{} sh -c "echo -n '{} - ' &&
./kafka-log-dirs.sh --command-config client.properties --bootstrap-server $BK --topic-list {} --describe |
grep '^{' |
jq '[ ..|.size? | numbers ] | add' |
numfmt --to iec " |
tee /tmp/topics-by-size.list
참고: 위 명령은 Apache Kafka CLI를 사용하여 모든 주제를 나열한 다음 각 주제의 크기를 계산하여 반환합니다.
출력 예시:
BrandNewTopic - 0
CrossAccountMskTopic - 0
NewTopicwithNewInstance - 0
SameAccountMskTopic - 0
Test - 0
__amazon_msk_canary - 4.6M
__consumer_offsets - 33M
dataloss - 1.8K
datalossB1 - 999
provisioned - 0
스토리지 활용에 대한 모범 사례는 다음과 같습니다.
- **log.segments.bytes ** 또는 log.roll.ms 값을 확인하고 세그먼트의 값을 줄입니다. 더 작은 값을 설정하면 세그먼트를 자주 생성하고 이전 세그먼트를 비활성화할 수 있습니다.
- segment.ms 및 segment.bytes 파라미터를 미세 조정하여 스토리지 효율성과 브로커 성능의 균형을 맞춥니다. 파라미터를 너무 낮게 설정하지 마십시오. 그러면 추가 CPU 오버헤드가 발생하고 브로커 리소스에 부담을 줄 수 있습니다.
참고: log.segments.bytes 및 log.roll.ms는 브로커 수준 세그먼트 설정입니다. segment.bytes 및 segment.ms는 주제 수준의 세그먼트 설정입니다. 주제 수준 설정은 브로커 수준 설정보다 우선순위가 높습니다.
관련 정보
Apache Kafka 웹 사이트의 retention.ms