본문 바로가기

Apache

[개념] Zookeeper란?

주키퍼란?

  • 분산 코디네이션 서비스 제공
  • 코디네이션 서비스는 분산 시스템 내에서 중요한 상태정보를 유지하기 때문에 고가용성을 제공해야함
  • 서버와 클라이언트로 구성
  • 서버앙상블 : n개 서버로 단일 주키퍼 클러스터 구성
  • 클라이언트 : 앙상블에 속한 서버에 연결하여 서비스 사용

주키퍼 아키텍처

9993623A5BF7B2CD28.png

  • znode는 데이터를 저장할 수 있는 디렉토리 구조를 제공하며, 디렉토리와 비슷한 구조로 byte[]형태의 정보를 저장
    • Persistent Node : 노드에 데이터를 저장하면 일부러 삭제하지 않는 이상 삭제되지 않고 영구히 저장
    • Ephemeral Node : 노드를 생성한 클라이언트의 세션이 연결되어 있을 경우만 유효, 즉 클라이언트 연결이 끊어지는 순간 삭제 -> 이를 통해 클라이언트가 연결되어있는지 아닌지 판단
    • Sequence Node : 노드를 생성할 때 자동으로 Sequent 번호가 붙는 노드
  • Watcher는 클라이언트가 znode에 watch를 걸어 놓으면 해당 znode가 변경이 되었을 때 클라이언트로 callback호출을 날려서 클라이언트에 해당 znode가 변경되었음을 알려주고 해당 watcher는 삭제됨
  • 클라이언트들은 주키퍼서버들로 이루어진 앙상블에 접근하여 znode의 데이터를 읽거나 씀
  • 쓰기 과정
    • 클라이언트가 특정 서버로 접속하여 데이터 업데이트
    • 업데이트 된 서버는 leader 서버에 그 데이터를 알리고 업데이트
    • leader 서버는 그정보를 나머지 follower 서버들에게 broadcast
    • 그 정보를 받은 follower 서버들도 데이터 업데이트

특징

  • https://d2.naver.com/helloworld/583580
  • https://www.slideshare.net/madvirus/zookeeper-34888385
  • 과반 정족수 이상 서버 다운시, 서비스 중지
    • ex) 2대 중 1대 다운되면 서비스 중지
    • 이런 이유로 서버 개수는 홀수로 맞춤 (3, 5 등)
  • 데이터 변경시 성공 기준
  • leader 서버가 트랜잭션 생성 후 다른 서버에 전파할 때, 과반 정족수 이상 트랜잭션 성공하면 클라이언트에 변경 성공 결과 리턴

'Apache' 카테고리의 다른 글

[설치] 암바리 설치 (Ambari install on CentOS7)  (0) 2019.12.30