Kafka - (4)

hisol·2025년 11월 11일

kafka의 고가용성(시스템이 장애 상황에서도 멈추지 않고 정상적으로 서비스를 제공할 수 있는 능력)을 확보하는 방법을 이해하려면 아래 용어들을 먼저 알고있어야 한다.

✅ 노드(node)란?

카프카가 설치되어 있는 서버 단위를 의미한다.


서비스 장애를 방지하기 위해 실무에서는 위 그림과 같이 노드(node)를 1대만 두지 않고, 최소 3대의 노드(node)를 구성한다. 즉, 최소 카프카 서버 3대를 구축해서 운용한다는 뜻이다.

✅ 클러스터(cluster)란?

여러 대의 서버가 연결되어 하나의 시스템처럼 동작하는 서버들의 집합을 의미한다.


위 그림과 같이 3대의 노드로 구성을 하면, 이 3대의 노드들이 서로 유기적으로 작동한다. 예를 들면, 서로 들어오는 메시지를 나눠 저장하고, 서로의 복제본을 생성해서 유지할 수도 있으며, 장애 시 시스템 전체가 중단없이 작동되게 만든다. 이와 같이 유기적으로 작동하는 노드들을 묶어서 클러스터(cluster)라고 부른다.

✅ 브로커(broker), 컨트롤러(controller)란?

kafka 서버는 크게 컨트롤러(controller)브로커(broker)로 구성되어 있다.

브로커(broker)란, 메시지를 저장하고 클라이언트의 요청을 처리하는 역할을 한다. (직원)
컨트롤러(controller)란, 브로커들간의 연동과 전반적인 클러스터의 상태를 총괄한다. (총관리자)

기본적으로 kafka 노드에서 브로커(broker)는 9092번 포트에서 실행되고, 컨트롤러(controller)는 9093번 포트에서 실행된다. 즉, 별개의 프로세스로 실행된다.

✅ 레플리케이션(replication)이란?

kafka에서의 레플리케이션(replication)은, 데이터의 안정성과 가용성을 높이기 위해 토픽의 파티션을 여러 노드에 복제하는 걸 의미한다.

  • 레플리케이션 설정을 하면 email.send파티션 #0을 다른 노드에도 복사해서 저장해둔다.
  • 복제된 파티션들은 리더 파티션(원본)팔로워 파티션(복제본)으로 구분된다.
    • 리더 파티션은 프로듀서나 컨슈머가 직접적으로 메시지를 쓰고 읽는 파티션이다. 반면에 팔로워 파티션은 프로듀서나 컨슈머가 직접적으로 메시지를 쓰고 읽지 않는다.
    • 팔로워 파티션은 리더 파티션의 메시지를 실시간으로 복제하며 유지한다.
    • 리더 파티션에 장애가 발생하면 팔로워 파티션이 리더 역할(프로듀서로부터 메시지를 받고, 컨슈머가 메시지를 처리)을 대신 수행한다. 이미 팔로워 파티션은 리더 파티션 내부에 있는 메시지까지 복제해서 가지고 있기 때문에, 리더 파티션의 노드가 중간에 장애가 난다고 하더라도 메시지는 정상적으로 이어서 처리할 수 있다.
  • 레플리케이션 개수는 kafka 서버 수만큼 설정할 수 있지만, 실무에서는 레플리케이션 개수를 2나 3으로 설정해서 활용하는 편이다.

0개의 댓글