사용자 지정 MSK 구성 - Amazon Managed Streaming for Apache Kafka

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

사용자 지정 MSK 구성

Amazon MSK를 사용하여 다음 속성을 설정하는 사용자 지정 MSK 구성을 생성할 수 있습니다. 명시적으로 설정하지 않은 속성은 기본 Amazon MSK 구성에 있는 값을 가져옵니다. 구성 속성에 대한 자세한 내용은 Apache Kafka 구성을 참조하십시오.

아파치 카프카 구성 속성
이름 설명
allow.everyone.if.no.acl.found 이 속성을 로 설정하려면 먼저 클러스터의 Apache Kafka ACL을 정의해야 합니다.false 이 속성을 로false 설정하고 Apache Kafka ACL을 먼저 정의하지 않으면 클러스터에 액세스할 수 없게 됩니다. 이 경우 구성을 다시 업데이트하고 이 속성을 로true 설정하여 클러스터에 다시 액세스할 수 있습니다.
auto.create.topics.enable 서버에서 주제 자동 생성을 활성화합니다.
compression.type 주어진 주제에 대한 최종 압축 유형입니다. 이 속성을 표준 압축 코덱(gzip, snappy, lz4zstd)으로 설정할 수 있습니다. 추가로uncompressed 수락합니다. 이 값은 압축하지 않은 것과 같습니다. 값을 로producer 설정하면 제작자가 설정한 원본 압축 코덱을 그대로 유지한다는 뜻입니다.

연결수.최대/유휴.ms

유휴 연결 제한 시간 (밀리초) 서버 소켓 프로세서 스레드는 이 속성에 설정한 값보다 높은 시간 동안 유휴 상태인 연결을 닫습니다.
default.replication.factor 자동으로 생성된 주제에 대한 기본 복제 인수입니다.
delete.topic.enable 주제 삭제 작업을 활성화합니다. 이 설정을 끄면 관리 도구를 통해 주제를 삭제할 수 없습니다.
group.initial.rebalance.delay.ms 그룹 코디네이터가 첫 번째 재조정을 수행하기 전에 그룹 코디네이터가 더 많은 데이터 소비자가 새 그룹에 가입하기를 기다리는 시간입니다. 지연 시간이 길면 재조정 횟수가 줄어들 수 있지만, 이렇게 하면 처리가 시작될 때까지의 시간이 늘어납니다.
group.max.session.timeout.ms 등록된 소비자에 대한 최대 세션 제한 시간입니다. 타임아웃이 길어질수록 소비자는 하트비트 간 메시지를 처리하는 데 더 많은 시간을 할애하지만 장애를 감지하는 데 더 많은 시간이 소요됩니다.
group.min.session.timeout.ms 등록된 소비자에 대한 최소 세션 제한 시간입니다. 타임아웃이 짧을수록 소비자 하트비트가 더 자주 발생하는 대신 장애를 더 빠르게 감지할 수 있습니다. 이는 브로커 리소스에 부담을 줄 수 있습니다.
leader.imbalance.per.broker.percentage 브로커당 허용되는 리더 불균형의 비율입니다. 컨트롤러는 브로커당 이 값을 초과하면 리더 밸런스를 트리거합니다. 이 값은 백분율로 지정됩니다.
log.cleaner.delete.retention.ms Apache Kafka가 삭제된 레코드를 유지하는 시간 길이. 최소값은 0입니다.
log.cleaner.min.cleanable.ratio

이 구성 속성의 값은 0과 1 사이의 값을 가질 수 있습니다. 이 값은 로그 압축기가 로그 정리를 시도하는 빈도를 결정합니다 (로그 압축이 활성화된 경우). 기본적으로 Apache Kafka는 로그의 50% 이상이 압축된 경우 로그를 정리하지 않습니다. 이 비율은 로그가 중복 항목으로 낭비하는 최대 공간을 제한합니다 (50% 로 설정하면 로그의 최대 50% 가 중복될 수 있음). 비율이 높을수록 청소 횟수가 적고 효율성이 높아지지만 로그 공간이 더 많이 낭비됩니다.

log.cleanup.policy 보존 기간이 지난 세그먼트에 대한 기본 정리 정책입니다. 유효한 정책의 쉼표로 구분된 목록입니다. 유효한 정책은 deletecompact입니다.
log.flush.interval.messages 메시지가 디스크로 플러시되기 전에 로그 파티션에 누적되는 메시지 수입니다.
log.flush.interval.ms 특정 주제의 메시지가 디스크로 플러시되기 전에 메모리에 남아 있는 최대 시간 (밀리초) 입니다. 이 값을 설정하지 않으면 log.flush.scheduler.interval.ms의 값이 사용됩니다. 최소값은 0입니다.
로그.메시지.타임스탬프.차이.max.ms 브로커가 메시지를 수신할 때의 타임스탬프와 메시지에 지정된 타임스탬프 간의 최대 시간 차이입니다. CreateTimelog.message.timestamp.type=인 경우 타임스탬프의 차이가 이 임계값을 초과하면 메시지가 거부됩니다. log.message.timestamp.type=인 경우 이 컨피그레이션은 무시됩니다LogAppendTime.
로그.메시지.타임스탬프.타입 메시지의 타임스탬프가 메시지 작성 시간인지 로그 추가 시간인지를 지정합니다. 허용 값은 CreateTime, LogAppendTime입니다.
log.retention.bytes 삭제하기 전 로그의 최대 크기입니다.
log.retention.hours 로그 파일을 삭제하기 전에 보관하는 시간(3차 log.retention.ms 속성)입니다.
log.retention.minutes 로그 파일을 삭제하기 전에 보관하는 시간(분)(2차 log.retention.ms 속성)입니다. 이 값을 설정하지 않으면 log.retention.h에 있는 값이 사용됩니다.
log.retention.ms 로그 파일을 삭제하기 전에 보관하는 시간(밀리초)입니다. 설정하지 않으면 log.retention.minutes 값이 사용됩니다.
log.roll.ms 새 로그 세그먼트가 롤아웃되기 전 최대 시간(밀리초)입니다. 이 속성을 설정하지 않으면 log.roll.pace의 값이 사용됩니다. 이 속성에 사용할 수 있는 최소 값은 1입니다.
log.segment.bytes 단일 로그 파일의 최대 크기입니다.
max.incremental.fetch.session.cache.slots 유지되는 최대 증분 가져오기 세션 수입니다.
message.max.bytes

Kafka가 허용하는 최대 레코드 배치 크기입니다. 이 값을 늘렸는데 0.10.2보다 오래된 소비자가 있는 경우 소비자가 이렇게 큰 레코드 배치를 가져올 수 있도록 소비자의 가져오기 크기도 늘려야 합니다.

최신 메시지 형식 버전은 효율성을 위해 항상 메시지를 일괄로 그룹화합니다. 이전 메시지 형식 버전에서는 압축되지 않은 레코드를 일괄로 그룹화하지 않으므로 이러한 경우 이 제한은 단일 레코드에만 적용됩니다.

주제 수준 max.message.bytes 구성을 사용하여 주제별로 이 값을 설정할 수 있습니다.

min.insync.replicas

생산자가 acks를"all" (또는"-1") 로 설정하면 min.insync.replicas의 값은 쓰기가 성공한 것으로 간주되기 위해 쓰기를 승인해야 하는 최소 복제본 수를 지정합니다. 이 최소값을 충족할 수 없는 경우 생산자는 예외 ( NotEnoughReplicas 또는 NotEnoughReplicasAfterAppend) 를 제기합니다.

min.insync.replicas 및 acks의 값을 사용하여 내구성 보장을 강화할 수 있습니다. 예를 들어 복제 계수가 3인 주제를 만들고, min.insync.replicas를 2로 설정하고, acks를 0으로 설정하여 생성할 수"all" 있습니다. 이렇게 하면 대부분의 복제본이 쓰기를 수신하지 못하는 경우 생산자가 예외를 발생시킵니다.

num.io.threads 서버가 요청을 처리하는 데 사용하는 스레드 수로서, 디스크 I/O를 포함할 수 있습니다.
num.network.threads 서버가 네트워크에서 요청을 수신하고 응답을 보내는 데 사용하는 스레드 수입니다.
num.partitions 주제별 기본 로그 파티션 수입니다.
num.recovery.threads.per.data.dir 시작 시 로그를 복구하고 종료 시 로그를 플러시하는 데 사용할 데이터 디렉터리당 스레드 수입니다.
num.replica.fetchers 소스 브로커의 메시지를 복제하는 데 사용하는 가져오기 스레드 수입니다. 이 값을 늘리면 팔로워 브로커의 I/O 병렬 처리 수준을 높일 수 있습니다.
offsets.retention.minutes 소비자 그룹이 모든 소비자를 잃은 후(즉, 비어 있음) 해당 오프셋은 폐기되기 전까지 이 보존 기간 동안 유지됩니다. 독립 실행형 소비자 (즉, 수동 할당을 사용하는 사용자) 의 경우 오프셋은 마지막 커밋 시간과 이 보존 기간을 더한 후 만료됩니다.
offsets.topic.replication.factor 오프셋 항목의 복제 요소. 가용성을 보장하려면 이 값을 더 높게 설정하십시오. 클러스터 크기가 이 복제 인수 요구 사항을 충족할 때까지 내부 주제 생성에 실패합니다.
replica.fetch.max.bytes 각 파티션에 대해서 가져오려고 하는 메시지 바이트 수입니다. 이 값은 절대적인 최대값이 아닙니다. 가져오기의 비어 있지 않은 첫 번째 파티션에 있는 첫 번째 레코드 배치가 이 값보다 크면 진행을 확인하기 위해 레코드 배치가 반환됩니다. message.max.bytes (브로커 구성) 또는 max.message.bytes (주제 구성) 는 브로커가 수락하는 최대 레코드 배치 크기를 정의합니다.
replica.fetch.response.max.bytes 전체 fetch 응답에 예상되는 최대 바이트 수입니다. 레코드는 일괄적으로 가져오며, 가져오기의 비어 있지 않은 첫 번째 파티션에 있는 첫 번째 레코드 배치가 이 값보다 클 경우 진행을 확인하기 위해 레코드 배치가 계속 반환됩니다. 이 값은 절대적인 최대값이 아닙니다. message.max.bytes(브로커 구성) 또는 max.message.bytes(주제 구성) 속성은 브로커가 허용하는 최대 레코드 배치 크기를 지정합니다.
replica.lag.time.max.ms 팔로워가 가져오기 요청을 보내지 않았거나 적어도 이 시간(밀리초) 동안 리더의 로그 끝 오프셋까지 소모하지 않은 경우 리더는 ISR에서 팔로어를 제거합니다.

MinValue: 10000

MaxValue(포함) = 30000

replica.selector.class 를 구현하는 정규화된 클래스 이름입니다 ReplicaSelector. 브로커는 이 값을 사용하여 원하는 읽기 전용 복제본을 찾습니다. Apache Kafka 버전 2.4.1 이상을 사용하고 소비자가 가장 가까운 복제본에서 가져올 수 있도록 하려면 이 속성을 로 설정하십시오org.apache.kafka.common.replica.RackAwareReplicaSelector. 자세한 정보는 Apache Kafka 2.4.1을 참조하세요.
replica.socket.receive.buffer.bytes 네트워크 요청에 대한 소켓 수신 버퍼입니다.
socket.receive.buffer.bytes 소켓 서버 소켓의 SO_RCVBUF 버퍼입니다. 이 속성에 설정할 수 있는 최소값은 -1입니다. 값이 -1인 경우 Amazon MSK는 OS 기본값을 사용합니다.
socket.request.max.bytes 소켓 요청의 최대 바이트 수입니다.
socket.send.buffer.bytes 소켓 서버 소켓의 SO_SNDBUF 버퍼입니다. 이 속성에 설정할 수 있는 최소값은 -1입니다. 값이 -1인 경우 Amazon MSK는 OS 기본값을 사용합니다.
transaction.max.timeout.ms 트랜잭션의 최대 제한 시간입니다. 클라이언트의 요청된 트랜잭션 시간이 이 값을 초과하면 브로커는 오류를 반환합니다 InitProducerIdRequest. 이렇게 하면 클라이언트의 제한 시간이 너무 길어지는 것을 방지할 수 있으며, 이로 인해 트랜잭션에 포함된 주제를 읽는 소비자가 지연될 수 있습니다.
transaction.state.log.min.isr 트랜잭션 주제에 대한 최소.insync.replicas 구성을 재정의했습니다.
transaction.state.log.replication.factor 트랜잭션 주제에 대한 복제 인수입니다. 가용성을 높이려면 이 속성을 더 높은 값으로 설정하십시오. 클러스터 크기가 이 복제 인수 요구 사항을 충족할 때까지 내부 주제 생성에 실패합니다.
트랜잭션.id.만료일.ms 코디네이터가 트랜잭션 ID를 만료하기 전에 트랜잭션 코디네이터가 현재 트랜잭션에 대한 트랜잭션 상태 업데이트를 수신하기를 기다리는 시간 (밀리초) 입니다. 이 설정은 프로듀서 ID 만료에도 영향을 줍니다. 지정된 프로듀서 ID로 마지막으로 쓴 후 이 시간이 경과하면 프로듀서 ID가 만료되기 때문입니다. 주제에 대한 보존 설정으로 인해 프로듀서 ID의 마지막 쓰기가 삭제되면 프로듀서 ID가 더 빨리 만료될 수 있습니다. 이 속성의 최솟값은 1밀리초입니다.
unclean.leader.election.enable 데이터가 손실될 수 있더라도 ISR 세트에 없는 복제본을 최후의 수단으로 사용할 것인지 여부를 나타냅니다.
zookeeper.connection.timeout.ms 클라이언트가 연결을 설정하기까지 대기하는 최대 시간입니다 ZooKeeper. 이 값을 설정하지 않으면 zookeeper.session.timeout.ms의 값이 사용됩니다.
zookeeper.session.timeout.ms

Apache ZooKeeper 세션 타임아웃은 밀리초 단위입니다.

MinValue = 6000

MaxValue(포함) = 18000

사용자 지정 MSK 구성을 만들거나, 모든 구성을 나열하거나, 설명하는 방법을 알아보려면 Amazon MSK 구성 작업 단원을 참조하십시오. 사용자 지정 MSK 구성으로 MSK 클러스터를 만들거나 새 사용자 지정 구성으로 클러스터를 업데이트하려면 을 참조하십시오Amazon MSK: 작동 방식.

사용자 지정 MSK 구성으로 기존 MSK 클러스터를 업데이트하면 Amazon MSK는 필요할 때 롤링 재시작을 수행하고 모범 사례를 사용하여 고객 다운타임을 최소화합니다. 예를 들어 Amazon MSK가 각 브로커를 다시 시작한 후 Amazon MSK는 브로커가 구성 업데이트 중에 놓쳤을 수 있는 데이터를 브로커가 파악한 다음 다음 브로커가 다음 브로커로 이동하도록 합니다.

동적 구성

Amazon MSK가 제공하는 구성 속성 외에도 브로커를 다시 시작할 필요가 없는 클러스터 수준 및 브로커 수준 구성 속성을 동적으로 설정할 수 있습니다. 일부 구성 속성을 동적으로 설정할 수 있습니다. 이러한 속성은 Apache Kafka 설명서의 브로커 구성 아래 표에 읽기 전용으로 표시되지 않은 속성입니다. 동적 구성 및 예제 명령에 대한 자세한 내용은 Apache Kafka 설명서의 브로커 구성 업데이트를 참조하십시오.

참고

advertised.listeners 속성은 설정할 수 있지만 listeners 속성은 설정할 수 없습니다.

주제 수준 구성

Apache Kafka 명령을 사용하여 새 주제와 기존 주제에 대한 주제 수준 구성 속성을 설정하거나 수정할 수 있습니다. 주제 수준 구성 속성과 설정 방법에 대한 예제에 대한 자세한 내용은 Apache Kafka 설명서의 주제 수준 구성을 참조하십시오.

구성 상태

Amazon MSK 구성은 다음 상태 중 하나일 수 있습니다. 구성에서 작업을 수행하려면 구성이ACTIVE 또는DELETE_FAILED 상태여야 합니다.

  • ACTIVE

  • DELETING

  • DELETE_FAILED