본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
https://bit.ly/4hTSJNB


I. 학습 인증샷 4장 이상 포함

1. 공부시작: 날짜, 시각 다 나오도록

공부 시작

2. 공부 종료: 날짜 시각 다 나오도록

공부 종료

3. 1개 클립 수강 (강의장 목록 캡쳐, 수강화면이 보이지 않도록) 1장

clip 4-2

4. 학습 인증샷 1장(필기 촬영이나 작업물 촬영)

swappiness가 뭔지부터 설명해면 좋을텐데.. 내가 너무 모르는걸까.. 결국 열심히 인터넷 검색으로 정리..


II. 학습 후기 700자 이상 (공백 제외)

ZooKeeper 트러블 슈팅 이다.

요약

 ZooKeeper

  • 분산 어플리케이션을 제공하기 위한 인프라 서비스의 필수 구성 요소
  • 일반적으로 클러스전체에서 동기화 되어야 하는 구성, 클러스터 리더십, 이름 지정, 및 기타 메타 데이터를 추적하는 일 담당
  • 카프카 클러스터의 메타데이터 관리, 컨트롤러 선출, 액세스 제어 등 핵심 기능을 담당하는 분산 코디네이터
  • 카프카의 안정성은 ZooKeeper 구성에 직접적으로 영향을 받는다 
  • KIP-500 kafka에서 주키퍼가 제거될 예정이지만, 과거 버전에서는 여전히 사용되고 있음

주요 기능

  • 토픽 구성 정보 저장
  • 브로커 클러스터 멤버십 추적
  • 파티션 리더 선출 및 ISR(동기화 복제본) 관리
  • 동적 브로커 설정 값 유지

구성시 핵심 고려사항

  • 다른 모든 서비스를 동기화 상태로 유지하는 서비스. 따라서
    Latency(대기 시간)이 짧아야 한다.
  • 하드웨어 고려사항
    • 많은 하드웨어 리소스를 필요하지 않음
    • 전용 리소스를 제공하는 것이 중요하다.
      • ZK Quorum(쿼럼)의 각 멤버를 위한 전용 서버
      • dataLogDir에 의해 지정된 트랜잭션 로그 디렉터리용 전용 디스크
        • 3개의 전용 드라이브(루트 파일 시스템용, 스냅샷용, 트랜잭션 로그용)로 ZK 서버를 프로비저닝
        • 스냅샷 및 트랜잭션 로그를 SSD에 저장하는 것을 권장
      • 서로 다른 Rack(랙)에 ZK 서버를 구성 권장
        • 동시에 Crash되는 것을 방지하기 위함
      • swappiness를 최소로 낮추거나 비활성화
        • 커널 버전에 따라 다름
        • 최신 Linux 커널에서는 vm.swappiness를 1로 설정하는 것을 권장
      • 충분한 Physical Memory - 통상 8 GB 이상
      • Kafka에 사용된 것과 동일한 JVM 옵션 설정으로 JVM을 조정함
        • 예외: 대부분의 사용 사례에는 1GB의 Heap 사이즈 권장
        • Heap 사용량을 모니터링하여 Garbage Collection으로 인해 지연이 발생하지 않는지 확인(중요)

주키퍼 튜닝 최적화 가이드

  • 네트워크:
    • 정적 IP 사용
      • 현재 주키퍼 클라이언트(카프카 포함)가 ip주소를 다시 확인할 수 없음
      • 서버ip 주소가 변경될 수 있는 경우 주키퍼 서버를 호스팅해서는 안된다.
    • 모든 클라이언트가 전체 ZK 서버 연결 가능해야 함
      • 연결 끊김으로 인한 디버깅을 피하기 위해 - 디버깅이 엄청 힘들다.
  • 하드웨어: 전용 서버, SSD 사용, 물리적 메모리 8GB 이상
  • 서비스 구성:
    • 홀수 개의 서버(권장 5대): 3대면 1개의 장애밖에 못버팀
    • JVM 힙 1GB 설정

복구 불구능한 ZK 인스턴스의 장애 복구 프로세스

  • 리더 ZK 데이터 백업
  • 동일한 myid 파일, 동일 구성으로 새 서버 준비
  • 순차적 롤링 재시작 수행
  • 만약에!!! ip가 변경되면?!?!?
    • 새 zk 서버 인스턴스에 대한 연결을 다시 확인해야 함
    • 완전히 복구하려면 클러스터의 모든 주키퍼 서버를 순차적으로 다시 시작해야 함
    • 그러니 ip가 변경되지 않도록 하자
  • `zk_synced_followers` 값으로 동기화 상태 확인

 

실습이 필요하다...

  • 트러블 슈팅인데.. ㅠ
  • 리더 팔로워 상태를 확인하는 명령어가 나오는데..실행을 해볼수가 없구나..
  • 실제 스왑 메모리 설정을 권장대로 했을때 실제로 개선이 되는지도 실습해보고  싶은데.. 슬라이드로만 볼 수 있다.
  • 트랜잭션 로그와 스냅샷을 분리해서 3개의 전용 디스크를 사용하는 부분이 눈에 띄인다.
  • 쿼럼 5대 구성인데.. 이것도 실습에서 실제로 2대를 중지했다가 복구하는 과정에서 클러스터 상태를 봐야는데..
    ...일단은 이론이니 찍먹하자..
  • 쿠버네티스의 분산 코디네이터(예: etcd)를 카프카와 함께 사용할 수 있는지도 궁금하다.
  • KIP-500으로 ZooKeeper가 제거되면  이 트러블 슈팅 파트는 의미가 없는것인가?
블로그 이미지

감동맨

rkaehdaos의 블로그

,