본문 바로가기
서버/네트워크 및 인프라

[Kafka] Consumer Group 삭제하기

by 방구쟁이 2024. 5. 7.
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

댓글