728x90
Consumer를 개발서버에서 테스트하며 생성했던 현재는 불필요한 Consumer Group 정리를 진행하였습니다. 개발서버에서 Kafka Consumer의 Group을 삭제하기 위해 명령어를 입력했더니 다음과 같은 에러 메세지와 함께 실패하였습니다.
Kafka Consumer group 삭제 명령어 & Error message
./kafka-consumer-groups.sh --bootstrap-server {ip}:{port} --delete --group {group-name}
Error: Deletion of some consumer groups failed:
* Group '{group-name}' could not be deleted due to: java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.GroupNotEmptyException: The group is not empty.
메세지 내용은 삭제하려는 Group이 비어 있지 않아 실패했다는 내용입니다. Kafka Consumer group을 삭제할 때는 데이터 손실이나 처리 중단이 발생하지 않도록 방지해주고 있어 Group의 상태를 확인해야 합니다.
Kafka Consumer group 상태 조회 명령어 & 결과
상태 조회
./kafka-consumer-groups.sh --bootstrap-server {ip}:{port} --describe --group {group-name} --state
GROUP COORDINATOR (ID) ASSIGNMENT-STRATEGY STATE #MEMBERS
{group-name} {ip}:{port} (1) range Stable 2
정보 상세 조회
./kafka-consumer-groups.sh --bootstrap-server {ip}:{port} --describe --group {group-name}
GROUP TOPIC PARTITION CURRENT-OFFSET LOG-END OFFSET LAG CONSUMER-ID
{group-name} {topic A} 0 96 96 0 {group-name}-1-e8974bc5-8e8e-4ec1-b8f4-00sumer-1
{group-name} {topic B} 0 701 701 0 {group-name}-1-e8974bc5-8e8e-4ec1-b8f4-00sumer-1
{group-name} {topic C} 0 3274 3274 0 {group-name} -1-e8974bc5-8e8e-4ec1-b8f4-00sumer-1
Consumer Group의 상태를 조회했을때 STATE가 Stable인 경우 삭제할 수 없습니다. 따라서 Kafka Consumer Group의 인스턴스를 종료 시킨 후 삭제해주어야 합니다.
Kafka Consumer 인스턴스 종료
kill {consumer-pid}
삭제하고자 하는 Kafka Consumer Group에 해당하는 Consumer들의 인스턴스를 종료시켜 줍니다.
Consumer 인스턴스 종료 후 Group 정보 조회 결과
Consumer group 'group-billing-ExtendedConsumer' has no active members.
GROUP COORDINATOR (ID) ASSIGNMENT-STRATEGY STATE #MEMBERS
{gorup-name} {ip}:{port} (1) Empty 0
Consumer group 'group-billing-ExtendedConsumer' has no active members.
GROUP TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID
{gorup-name} {topic A} 0 96 96 0 - - -
{gorup-name} {topic B} 0 702 702 0 - - -
{gorup-name} {topic B} 0 3281 3281 0 - - -
이제 Consumer Group 삭제 준비는 끝났습니다. Kafka Consumer Group 삭제 명령어를 다시 입력해보면 다음과 같이 출력됩니다.
Consumer group 삭제
./kafka-consumer-groups.sh --bootstrap-server {ip}:{port} --delete --group {gorup-name}
Deletion of requested consumer groups ('group-billing-ExtendedConsumer') was successful.
결과
간단한 작업이지만, Kafka Consumer group 삭제 실패 시 Gorup에 해당하는 Consumer들의 인스턴스 종료해야 함을 모르고 있을 경우 헤맬 수 있기에 도움을 주고자 경험을 토대로 정리하였습니다.
감사합니다.
728x90
'서버 > 네트워크 및 인프라' 카테고리의 다른 글
Jenkins에서 Gradle Build시 '허가 거부' 해결한 경험 (0) | 2024.07.06 |
---|---|
Cross-Origin Resource Sharing(CORS) 이란? (0) | 2022.12.27 |
[Oracle Cloud] DB 데이터가 초기화 될 경우 (0) | 2022.11.21 |
[Linux] Zshell, oh-my-zsh 설치하기 (0) | 2022.11.13 |
세션 클러스터링이란? (0) | 2021.11.10 |
댓글