클러스터 멤버쉽 Zookeeper

1. Zookeeper 주키퍼(야후의 분산 코디네이터)

  • 분산 환경에서 코디네이터 서비스를 제공하는 아파치 오픈소스이다.
  • 네임 서비스, 환경설정, 그룹 멤버십, Double Barriers, 우선순위 큐, 공유 락 제어, 두 단계 커밋, 리더 선출
  • 위와 같은 기능을 제공하는 것이 아니라 이런 기능을 쉽게 만들 수 있도록 메카니즘을 제공
  • 하둡과는 연관이 없음
  • 구글의 처비를 많이 참고했다고 알려짐
  • apache에서 현재 존재하는 분산처리 시스템에 프로젝트 이름을 보면 코끼리(hadoop), 거북이(chukwa), 돼지(pig)등과 같이 동물들 이름이 많습니다.
    즉 zookeeper는 동물 사육사라는 이름으로 분산처리 시스템에서 일괄적으로 관리해주는 시스템을 뜻합니다.

2. Zookeeper 주키퍼의 필요성

  • 분산처리 환경에서는 기본적으로 서버가 몇 대에서 수십 대, 수백 대.. 이런 분산처리 환경에서는 예상치 못하는 예외적인 부분이 많이 발생하게 되는데
    주로 네트워크장애, 일부 서비스/기능 예상치 못한 처리로 중지나 장애, 서비스 업그레이드, 서버 확장 등에 문제가 발생 가능.
  • 이런한 점들을 쉽게 해결 할 수 있는 시스템

3. Zookeeper 주키퍼의 특징

  • 네임서비스를 통한 부하분산
    :: 하나의 클라이언트(하나의 서버)만 서비스를 수행하지 않고 알맞게 분산하여 각각의 클라이언트들이 동시 작업할 수 있도록 지원
  • 분산락이나 동화 문제 해결
    :: 하나의 서버에서 처리된 결과가 또 다른 서버들과 동기화하여 데이터 안정성 보장
  • 장애상황 판단 및 복구
    :: 액티브(일반서버)서버가 예기치 못한 상황으로 문제가 발생하여 서비스를 지속적으로 처리를 못 할 경우
    스탠바이(일반서버)서버가 액티브 서버로 바뀌어서 기존에 액티브 서버가 서비스를 하던 일을 처리
  • 환경설정 관리
    :: 각각의 다른 서버들을 통합적으로 관리하여 환경설정을 따로 분산하지 않고 주키퍼 자체적으로 관리

4. Zookeeper 주키퍼의 구조

  • 주키퍼는 다중의 서버의 집합을 묶어서 관리해주는 시스템
    리더가 되는 서버를 하나가 존재, 리더라고 불리는 서버는 모든 서버에 중심이 됨
    또한 하나의 서버에서 처리가 되어 데이터가 변경되면 모든 서버에 전달되어 동기화
    = 주키퍼는 하나의 분산처리 서버

5. Zookeeper 주키퍼의 핵심기능 SPOF(single Point Of Failure) 처리

  • 액티브 서버 : 현재 서비스를 하고있는 서버
  • 스탠바이 서버 : 장애 발생시 대처하기 위한 대기 서버
  • 동작중이던 액티브 서버가 장애가 발생 할 경우 관리시스템이 판단하여 기존의 스탠바이 서버를 액티브 서버로 전환하여 서비스를 처리

6. Zookeeper 주키퍼의 설치

공식 사이트 : http://zookeeper.apache.org/

다운을 받고

압축을 풀고 설정 폴더로 가서 zoo.cfg 파일로 복사

설정 파일
tickTime : 주키퍼가 사용되는 세션 아웃 타임을 설정
initLimit: connection timeout (실제 시간은 initLimit * tickTime)
syncLimit: leader와의 시간차의 max (실제 시간은 syncLimit * tickTime)
dataDir : 스냅샷, 로그가 저장되는 로컬디스크 패스
clientPort : 주키퍼가 사용 할 포트

분산 서버 구성시 다음 과 같이 설정 파일에 추가하면 됨
server.1=host:2888:3888 : 첫번째 port은 peer 끼리 통신하는데 사용
두번째 port는 leader를 선출할때 사용하는 port
server.2=zoo2:2888:3888

주키퍼 시작

7. Zookeeper 사용

bin/zkCli.sh로 접속한 후 ls 로 확인

테스트용으로 하나 만듬

확인

지우고 확인

8. Zookeeper