Open so3500 opened 9 months ago
카프카 클라이언트는 통신하고자 하는 리더 파티션의 위치를 알기 위해 데이터를 주고(프로듀서) 받기(컨슈머)전에 메타데이터를 브로커부터 전달받는다.
카프카 프로듀서 메타데이터 옵션
카프카 클라이언트는 반드시 리더 파티션과 통신해야 한다. 만약 메타데이터가 현재 파티션 상황에 맞게 리프래시 되지 않은 상황에서 잘못된 브로크로 데이터를 요청하면 LEADER_NOT_AVAILABLE exception 이 발생한다. 이 에러는 클라이언트(프로듀서 또는 컨슈머)가 데이터를 요청한 브로커에 리더 파티션이 없는 경우 나타나며 대부분 메타데이터 리프레시 이슈로 발생한다. 이 에러가 자주 발생하면 리프레시 간격을 확인하고 클라이언트가 정상적인 메타데이터를 가지고 있는지 확인해야 한다.
카프카 클러스터는 브로커들의 묶음. 클러스터는 1대 이상의 브로커로 이루어져 있다. 카프카 브로커를 실행하기 위해 주피커가 필수이다. (3.0.0 부터 제외 가능, KRaft) 프로듀서에서 전송된 데이터는 디렉토리(파일시스템)에 저장 브로커는 복제, 컨트롤러, 데이터 삭제, 오프셋 저장, 코디네이터 역할 수행 1개의 주키퍼에는 여러 카프카 클러스터 운영 가능 토픽은 1개 이상의 파티션으로 구성 파티션은 FIFO 구조이지만 컨슈머가 데이터를 가져가더라도 바로 삭제되지 않음 데이터 삭제는 브로커의 역할 컨슈머의 처리량을 늘리기 위해 파티션 개수를 늘릴 수 있음
서버에 직접 설치 및 운영 가장 전통적이고 기본적인 방법 각종 설정을 직접 컨트롤하며 세부적인 설정을 통해 최적의 클러스터 활용 그러나 수 많은 시행착오를 거쳐야 하며 보안설정, 모니터링 도구 설치 및 운영에 어려움을 겪을 수 잇음
이러한 운영상 시행착오를 줄이면서 최고의 카프카 클러스터를 빠르게 설치하여 안전하게 운영하기 위해 SaaS(Software-as-a-Service)를 도입할 수 있다.
운영 방법에 따른 서비스 형태들 SaaS : 클라우드 서비스 제공업체가 소프트웨어와 인프라를 관리하면서 플랫폼을 제공하는 것 사용자는 웹 대시보드나 SLI 를 통해 플랫폼의 세부 설정을 간편하게 할 수 있음 네트워크, 스토리지, 가상화 등 운영상 이슈는 업체에서 관리
설치 방법별 서비스 형태 종류 온프레미스(on-premise)
IaaS (Infrastructure-as-a-Service)
PaaS (Platform-as-a-Service)
SaaS (Sortware-as-a-Service)
서비스 형태별 카프카 운영 방법 온프레미스 (on-premise)
오픈소스 카프카 아파치 2.0에 있는 무료 오픈소스 소프트웨어 브로커, 클라이언트, 프로듀서, 컨슈머, 커넥트, 스트림즈
기업용 카프카 (컨플루언트 플랫폼 등) 유료 소프트웨어 기능 튜닝 커넥트에서 커넥터가 있는데 여러가지 DB 연동을 위해 템플릿 형태의 소프트웨어 필요. 직접 개발하거나 이미 생성된 플러그인 제공. 오픈소스 카프카에 없는 모니터링 툴을 제공함 ㄴ 오픈소스 사용시 프로메테우스나 그라파나등과 조합하여 메트릭을 수집 & 시각화 ㄴ 기업용 카프카는 모니터링 툴부터 제공함
IaaS (Infrastructure-as-a-Service)
SaaS (Software-as-a-Service)
오픈 소스 카프카를 직접 설치하여 운영하는 경우
IaaS 또는 온프레미스 환경에서 카프카 클러스터를 설치하여 운영하는 것이 가장 흔한 방식 카프카는 전송된 데이터를 모두 파일 시스템에 저장하고 대규모 데이터 통신이 일어나기 때문에 고성능 하드웨어 필요 컨플루언트에서는 상용 환경의 카프카 클러스터 운영시 브로커의 하드웨어를 다음과 같이 설정하는 것을 추천
OS의 페이지 캐시 영역? 카프카 브로커 운영에 필요한 오프젝트를 메모리에 올려 활용 6gb 나머지 영역을 페이지 캐시 영역에 두고 빠르게 처리 데이터 처리량을 높인다.
오픈소스 카프카를 직접 설치하여 운영하는 경우
개발용 카프카 클러스터
브로커는 최소 5개를 추천함. topic, in-sync-replication 등이 잘 동작하는지 잘 알려면 최소3~5대는 운영해야 개발 환경에서도 이슈 여부를 파악할 수 있다.
상용 카프카 클러스터
일일 데이터 발생량이 1GB이면. 7일 7GB 만약 1일 1TB 이면 7일 7TB. replication factor 의 배수로 데이터가 필요함 그러므로 운영환경에서 얼만큼 디스크를 사용하느냐에 따라 필요 양이 달라짐.
그러나 데이터 양이 많아지면 기존 브로커에서 추가 브로커를 붙여서 운영하면 전체적인 데이터 처리량 및 리소스 사용량을 확장할 수 있다. 따라서 장비 별 세세한 부분은 너무 큰 고민을 안해도 되지 않을까? 스케일 아웃으로 커버 되니까.
인프런강의 : 아파치 카프카 애플리케이션 프로그래밍 by 데브원영
섹션2. 카프카 기본 개념 설명
섹션3. 카프카 클러스터 운영