안정적인 운영을 위한 주키퍼와 카프카 구성
카프카는 애플리케이션이 워낙 안정적이기때문에 클러스터를 구성해놓은 뒤 신경을 쓰지 않는 경우가 많다. 하지만 장애를 대비해서 꼼꼼히 클러스터를 구성해 놓는것이 좋다.
주키퍼 구성
최근들어 아파치 카프카 오픈소스 진영에서는 카프카의 코디네이터 역할을 하는 주키퍼의 의존성을 제가혀라는 움직임이 있습니다. 주키퍼는 파티션과 브로커의 메타데이터를 저장하고 컨트롤러 서버를 선출하는 동작을 수행합니다.
주키퍼 서버 수량
주키퍼는 기본적으로 쿼럼(과반수)구성을 기반으로 동작하므로 반드시 홀수로 구성해야 합니다. 최소 서버수는 3입니다. 이렇게 3대로 구성된 주키퍼는 과반수인 2를 추족할 수 있는 최대 1대까지의 주키퍼 장애를 허용합니다.5로 구성한다면 3까지 허용하는것입니다.(높은안전성)
주키퍼 하드웨어
주키퍼는 높은 하드웨어 리소스를 요구하지 않으므로 주키퍼의 물리적인 메모리 크기는 48GB로 구성하고 디스크는240G또는 480G SSD를 사용하는 것을 추천합니다.4GB이며 나머지는 운영체제 영역 등에서 사용하게 됩니다.
주키퍼에서 필요한 힙메모리크기는 일반적으로 1
주키퍼의 네트워크 카드는 1G이더넷 카드로 구성하면 됩니다.
주키퍼 배치
물리서버를 배치하는 경우에는 일반적으로 데이터 센터 내에 랙 마운트를 하게 됩니다. 이때 하나의 랙에 모든 주키퍼 서버를 마운트해 배치하는 것은 매우 위험합니다. 주키퍼를 각기 다른 랙에 분산 배치하는 방안을 권장합니다.
AWS ec2인스턴스를 사용할때는 가능한 2개또는3개의 가용 역역에 분산해 구성하는 것을 추천합니다.
카프카 구성
카프카를 더 안정적인 구성을 위해 고려해야할 사항입니다.
카프카 서버 수량
카프카는 주키퍼와 다르게 쿼럼 방식의 구성이 필요하지 않습니다.그래서 반듯이 클러스터 수가 홀수일 필요는 없습니다.
카프카에서 추천하는 안정적인 리플리케이션 팩터수인 3으로 토픽을 구성하기 위해서는 최소 3대의 브로커가 필요합니다. 따라서 카프카를 최소로 구성하기를 원한다면 3대가 가장 적당합니다.
카프카는 확장성이 좋기때문에 필요한만큼만 준비합니다.
카프카 하드웨어
주키퍼와 달리 카프카의 cpu사용률은 높은편입니다. 최고성능까지는 필요없지만 코어수가 많은 cpu로 구성할 것을 권장합니다.
메모리는 JVM힘 크기는 일반적으로 6GB정도 이므로 이보다 큰 물리 메모리가 필요합니다. 캐시하는 것까지 개산을 하면 128GB,256GB등 가용할 수 있는 서버 메모리가 있다면 그대로 사용하고 최소 32GB를 맞추는것을 추천합니다.
디스크는 성능이 가장 낮은 SATA를 사용해도 카프카는 로그를 순차적으로 쓰는 방식을 사용하기 때문에 병렬 처리를 위해 서버에 약 10개 정도의 디스크를 장착합니다. 용량은 4TB이상의 디스크로 선정하는것을 추천합니다.
AWS EC2인스턴스를 이용할때는 EBS로하면 안정적입니다.
네트워크카드는 10G 이더넷 카드로 구성하는것을 추천하고 브로커 한데당 네트워크 사용률이 절반을 넘지 않도록 최대한 토픽을 분산해 운영해야합니다.
카프카 배치
모든 카프카 서버를 하나의 랙에 마운트하는 것은 매우 위험합니다. 따라서 여러 랙에 분산시켜 카프카 서버를 배치하는 방식을 추천합니다.AWS에서 카프카를 구성할경우도 주키퍼와 동일하게 멀티 가용영역으로 구성하는것을 추천합니다.
'kafka' 카테고리의 다른 글
카프카 스키마 레지스트리 (1) | 2023.10.19 |
---|---|
카프카 버전업그레이드 (0) | 2023.10.19 |
카프카 / 컨슈머의 내부동작 원리 (0) | 2023.10.19 |
프로듀서 내부동작원리 (1) | 2023.10.19 |
카프카의 내부 동작 원리 (1) | 2023.10.19 |