3 분 소요

Under Replicated Partitions란?

Kafka에서 Under Replicated Partitions(URP, 복제 부족 파티션)은 다음과 같은 상황을 가리킵니다:

각 파티션에는 여러 개의 복제본(replica)이 있습니다. 이 복제본 중 하나는 리더(leader) 역할을 맡고 나머지는 팔로워(follower)로 동작하며, 이들은 리더로부터 데이터를 지속적으로 복제합니다. 각 파티션에는 복제 계수(replication factor)가 설정되며, 이 값은 해당 파티션의 데이터를 몇 개의 복제본에 복제할지를 나타냅니다. Under Replicated Partition은 팔로워 복제본 중 하나 이상이 리더와 동기화되지 않은 상태를 의미합니다. 즉, 데이터가 설정된 복제본 수만큼 제대로 복제되지 않고 있음을 나타냅니다.

Under Replicated %의 의미
Under Replicated %는 클러스터의 전체 파티션 중 Under Replicated Partitions가 차지하는 비율을 나타냅니다. 0%라면, 모든 파티션이 정상적으로 복제되고 있음을 의미합니다. 즉, 리더와 모든 팔로워가 데이터 동기화를 잘 유지하고 있는 상태입니다. 0% 이상의 값이 나오면, 일부 파티션이 복제 부족 상태에 빠져 있다는 뜻이며, 해당 파티션의 팔로워 복제본 중 일부가 리더와 제대로 동기화되지 않고 있음을 나타냅니다. Under Replicated Partitions가 발생하는 원인

브로커 장애:

Kafka 클러스터의 일부 브로커가 다운되거나 네트워크 장애가 발생하면, 해당 브로커에 있던 팔로워 복제본이 리더와 동기화를 유지할 수 없게 됩니다. 그 결과 해당 파티션은 Under Replicated 상태에 빠집니다.

리소스 부족:

브로커의 디스크 공간 부족, CPU 과부하, 네트워크 대역폭 부족 등이 발생하면, 팔로워 복제본이 리더로부터 데이터를 동기화하는 속도가 느려져 복제 지연이 발생할 수 있습니다. 이 경우 팔로워 복제본이 리더와 동기화되지 않으면 해당 파티션은 Under Replicated 상태로 나타납니다.

리더 전환:

클러스터에서 리더가 전환될 때, 새로운 리더는 기존 복제본으로부터 데이터를 동기화해야 합니다. 이 동기화 과정에서 팔로워 복제본이 리더와 일시적으로 동기화되지 않을 수 있으며, 그 동안 파티션은 Under Replicated 상태가 됩니다.

네트워크 문제:

네트워크 연결의 불안정으로 인해 리더와 팔로워 간의 데이터 동기화가 원활하지 않으면 Under Replicated Partitions가 발생할 수 있습니다. 특히 클러스터 내의 브로커 간 통신이 불안정할 때 이러한 문제가 발생하기 쉽습니다. Under Replicated %가 높을 때의 위험성

데이터 손실 위험: Kafka는 파티션의 리더가 정상적으로 동작하지 않으면, 팔로워 중 하나를 리더로 전환합니다. 하지만 파티션이 Under Replicated 상태라면 팔로워가 리더와 동기화되지 않은 데이터를 잃을 수 있습니다. 이로 인해 데이터 손실 위험이 커집니다.

데이터 가용성 저하: 팔로워 복제본이 리더와 동기화되지 않은 상태라면, Kafka 클러스터는 데이터를 안정적으로 유지하지 못합니다. 이로 인해 데이터 가용성이 저하되며, 데이터 소비자에게 제공되는 데이터의 신뢰성이 떨어질 수 있습니다.

성능 저하: 복제본이 동기화되지 않은 상태에서는 복제 작업이 지연될 수 있으며, 이는 클러스터 성능 저하로 이어질 수 있습니다. 특히 복제 지연이 많아지면 Kafka 클러스터의 쓰기 성능이 크게 떨어질 수 있습니다.

Under Replicated %를 줄이기 위한 권고사항

브로커 모니터링:

브로커의 상태를 지속적으로 모니터링하여 장애나 리소스 부족 문제를 신속하게 해결합니다. 브로커가 다운되면 그에 따른 복구 절차를 빠르게 수행하여 Under Replicated 상태를 최소화해야 합니다. 모니터링 도구(Prometheus, Grafana 등)를 사용하여 브로커의 CPU 사용량, 디스크 공간, 네트워크 상태 등을 확인하고, 리소스 부족을 사전에 방지합니다.

복제본의 수 증가:

중요한 토픽에 대해 복제 계수(replication factor)를 늘리면, 한두 개의 브로커에 장애가 발생하더라도 Under Replicated 상태가 발생하지 않도록 할 수 있습니다. 기본적으로 Kafka는 복제본이 더 많을수록 안정성이 높아집니다. 예를 들어, 복제 계수가 3일 경우, 2개의 복제본이 리더와 동기화된 상태라면 안정적인 운영이 가능하지만, 복제 계수가 2일 경우 하나의 복제본만으로 리더를 유지해야 하므로 안정성이 떨어집니다.

브로커 성능 개선:

Kafka 클러스터 내의 브로커가 충분한 리소스(CPU, 메모리, 디스크)를 갖추고 있는지 확인합니다. 브로커가 성능 문제로 인해 팔로워 복제본을 리더와 동기화하지 못하면 Under Replicated Partitions가 발생할 수 있습니다. 네트워크 성능을 향상시키는 것도 중요한데, 브로커 간의 대역폭이 충분하지 않으면 복제 지연이 발생할 수 있습니다. 특히 저지연(low latency) 네트워크를 사용하는 것이 권장됩니다.

리더 재조정:

리더와 팔로워 복제본 간의 복제가 정상적으로 이루어지지 않으면 리더 전환(leader election) 작업을 통해 리더 재조정을 수행할 수 있습니다. 리더를 다른 브로커로 이동하면 복제 지연이 줄어들어 Under Replicated 상태를 해소할 수 있습니다.

복구 후 리밸런싱:

장애가 발생하여 브로커가 다운되었다가 다시 복구된 경우, Kafka는 해당 브로커에 있던 복제본을 다시 리밸런싱합니다. 이 과정에서 Under Replicated Partitions가 일시적으로 발생할 수 있으나, 데이터가 정상적으로 복제되면 다시 해결됩니다. 복구 후 빠른 리밸런싱을 위해서는 auto.leader.rebalance.enable=true 설정을 활성화하는 것이 좋습니다.

요약 Under Replicated %는 Kafka 클러스터 내의 복제 부족 파티션 비율을 나타냅니다. 0%에 가까울수록 정상적인 상태를 의미하며, 이 비율이 높아지면 복제본 동기화에 문제가 있음을 나타냅니다. Under Replicated Partitions는 팔로워 복제본이 리더와 동기화되지 않은 상태를 의미하며, 이는 브로커 장애, 네트워크 문제, 리소스 부족 등 다양한 이유로 발생할 수 있습니다. 권고사항으로는 브로커 모니터링, 복제본 수 증가, 브로커 성능 개선, 리더 재조정 및 리밸런싱 작업을 통해 Under Replicated %를 낮게 유지하고, 클러스터의 안정성을 확보해야 합니다. 지속적인 모니터링과 신속한 문제 해결을 통해 Kafka 클러스터의 데이터 복제 안정성을 유지하는 것이 매우 중요합니다.

댓글남기기