주키퍼 와 카프카
Zookeeper 정의
주키퍼(Zookeeper)는 분산 환경에서 노드 간의 정보 공유, 락(Lock), 이벤트 등 보조 기능을 제공하는 프레임워크다. 아파치 하둡 프로젝트에서는 프로젝트 이름들이 코끼리(hadoop), 거북이(chukwa), 돼지(pig) 등과 같이 동물들 이름이 많다. 동물 사육사라는 의미대로 주키퍼는 그림 4와 같이 하둡 분산 처리 시스템을 일괄적으로 관리해주는 시스템이다.
Zookeeper 셋팅
Hardware
-다양한 비즈니스 요구 사항을 고려한 결정
-
Memory : znode 크기에 따라 관련이 있고, 일반적인 환경에서는 최소 8GB RAM을 전용으로 사용한다. 왜냐하면
Zookeeper가 주어진 시간에 모든 znode 내용을 메모리에 보유하기 때문이다.
CPUs : 주키퍼는 카프카의 메타데이터 저장소로서 CPU를 많이 소비하지는 않는다.
Disk : 주키퍼 앙상블을 유지 관리하는데 중요하다. IO가 빈번히 일어나므로 SSD를 선택하는 것이 탁월하고, 일반적으로 최소 64GB ~ 250GB 로 잡아둔다. 또한 스냅샷 및 로그 디렉토리의 자동 제거 정책에 대한 구성을 설정하여 모든 로컬 스토리지를 채우지 않도록하는 것이 좋다.
JVM : 주키퍼는 JVM으로 실행되기 때문에 모니터링에 1GB의 힙 크기가 권장된다.
카프카(Kafka)정의
카프카는 대용량, 대규모 메시지 데이터를 빠르게 처리하도록 개발된 메시징 플랫폼입니다 .
카프카(Kafka) 셋팅
Hardware
카프카의 일부(설정의 경우 제외)를 제외하고 모든 데이터는 파일 시스템에 영구적인 로그형태로 즉시 기록된다.
Memory : kafka는 힙 공간을 주의해서 사용하기 때문에 힙 크기를 5GB 이상 설정 안해도 된다. 참고글을 보면 32GB memory machine이 28~30GB의 이상의 파일 시스템 캐시 결과를 냈다고 한다. 32GB 선택은 좋지만 비생산적입니다.
CPUs : kafka는 CPU에 대한 요구사항은 높지 않다. 다만 SSL을 사용하게 된다면 CPU의 요구 사항이 높아질 수 있다. -> 현재 프로젝트에서는 SSL 사용이 무의합니다 . 권장 24core.
Disk : 쓰기 처리량과 디스크 장애시 어레이 재구성의 I/O 비용이 적기 때문에 RAID 5 또는 RAID 6을 권장하지 않는다. 일반적으로 재구성 비용은 RAID에 적용되지만 그것은 RAID 6와 RAID 5에서 최악). 추가 비용이 허용되는 경우 RAID 10을 사용하는 것이 좋다
Filesystem : XFS 또는 ext4에서 Kafka를 실행하는 것이 좋다.
JVM
최신 버전의 JDK 1.8을 G1 콜렉터와 함께 실행하는 것이 좋다.
서버의 수
예상 메시지 크기 * 초당 예상 메시지 수를 가져 와서 카프카 클러스터에서 메시지를 사용할 수있는 시간 (초)을 곱하면됩니다.
그런 다음 복제 팩터 (예 : 중복성)를 선택하는 것에 따라서 이 크기를 두 개 이상으로 늘리고, 클러스터에 몇 명의 브로커를 둘 것인지 나눕니다.
이렇게하면 브로커마다 필요한 하드 드라이브 공간이 얼마나되는지 알 수 있다.