SlideShare a Scribd company logo
1 of 26
 Yahoo! 에서 개발
 아파치 소프트웨어 재단에서 후원하는 오픈소스 프로젝트
 일반적인 분산 시스템 환경에서, 개별적인 프로그램들의 동작을 안정적으
로 ‘코디네이팅’ 해주는 미들웨어 서비스 (또는 Tool?)
 기본 특징
 분산시스템의 Coordination 작업
 즉, 개별적으로 동작하는 여러 프로세스들의 ‘협력’이나 ‘경합’을 조절
 경합상황에서의 ‘상호배제’(Mutual exclusion)와 같은 요구사항 구현가능
 동기화 기본요소
 Lock이나 Master 선출과 같은 동기화 기본요소에 대한 Handling 가능
 프로세스 상호간에 전달되는 metadata도 관리, 조작 가능
 알아야 할 점!
 ZooKeeper는 ‘대용량’ 저장소가 아니다!
 애플리케이션 데이터와 코디네이션 데이터의 구분
 ZooKeeper는 단지 다양한 분산애플리케이션에서 흔히 사용되는 작업들을 구
현할 수 있도록 핵심 작업(operation)들을 제공함
(마스터 사용, 프로세스들의 응답 체크 etc…)
 Apache Hbase
 클러스터 마스터 선출, 가용서버 목록 저장
 클러스터의 메타데이터 관리
 Apache Solar
 클러스터의 메타데이터 저장
 메타데이터 업데이트
 기본 개념
 파일 시스템의 트리(Tree)와 같은 ‘계층구조’로 구성
 부모/자식 개념을 가지고 있으며 Leaf 노드는 ‘데이터’ 노드
server id
/
/master
/workers
/workers/worker-1
/tasks
/tasks/task-1
/assign
/assign/worker-1
run cmd /assign/worker-1/task-1
 주요 API
create /path data data를 담고 있는 /path라는 이름의
znode를 생성한다
delete /path /path znode를 삭제한다
exists /path /paht znode가 존재하는지 확인한다
setData /path data /path znode의 데이터를 data로 저장
한다
getData /path /path의 데이터를 반환 한다
getChildren /path /path의 자식 목록을 반환한다.
 영구모드(Persistent)와 임시모드(Ephemeral)
 영구모드 : znode를 생성한 클라이언트가 주키퍼와 연결이
끝어지더라도 보존됨
 임시모드 : znode를 생선한 클라이언트가 주키퍼와 연결이 끊어지거나,
클라이언트 장애가 발생하게되면 삭제됨.
 사례 (Deadlock)
/lockClient 1
Client 2
listening
 순차모드
 순차 모드로 Znode 생성시, 순차번호를 자동 할당 (정수로 증가함)
/
/node-1
/node-2
/node-3
.
.
.
 기본 Flow
 클라이언트가 znode의 내용을 알기위해 매번 폴링(Polling) 하는것은 비용이 많
이 소모됨
 따라서 주키퍼는 ‘알림’(Notification)에 기반한 매커니즘을 따름
1
c1
c2
zk
2 3
getChildren /tasks
set watch
{ }
create /tasks/task-1
getChildren /tasks
set watch
{ task-1 }
 Standalone
 말 그대로, 하나의 서버에서 실행되는 주키퍼 서비스
 이러한 단독 모드에서는 주키퍼의 상태가 복제될 수 없음
 Quorum
 주키퍼 앙상블(Ensemble)이라고 불리우는 주키퍼 서버 그룹으로 이루어짐.
 쿼럼 모드에서는 주키퍼 서버 간 상태가 복제되고, 클라이언트의 요청을 함께
처리
 “Quorum” : 투표를 위해 출석이 요구되는
최소 국회의원 숫자
 주키퍼 서비스가 제대로 동작하기 위해서는
전체 앙상블 서버 대수의 과반 이상이 정상
동작하고 있어야 함
 Session
 주키퍼 앙상블에 요청하기전에 클라이언트는 반드시 주키퍼 서버와 세션을 수
립(establish)해야 함.
 이 세션이 끝나게 되면 해당 클라이언트가 생성한 임시노드는 삭제됨
 Session 상태와 전이
NOT_CONNECTED CONNECTING CONNECTED CLOSED
1 2
3
4
5
 공식 웹사이트에서 Download (Window)
https://zookeeper.apache.org/releases.html
 wget 이용 (Linux)
$ wget 'http://apache.mirror.cdnetworks.com/zookeeper/zookeeper-3.4.7/zookeeper-3.4.7.tar.gz'
$ tar xzvf zookeeper-3.4.7.tar.gz
 data 디렉토리 생성과 zoo.cfg 생성
$ cd zookeeper-3.4.7
$ mkdir data
$ cd zookeeper-3.4.7/conf
# sample cfg 파일로부터 복사하여 zoo.cfg 생성
$ cp zoo_sample.cfg zoo.cfg
 기본 설정 훑어보기
 tickTime : 주키퍼 앙상블이 사용하는 시간의 최소 단위. 세션을 타임아웃 시키는 최소 버킷 크
기를 결정
 clientPort : 클라이언트가 앙상블로 연결하기위한 TCP 포트
 dataDir : 주키퍼 앙상블 구성 서버의 고유값이 저장되는 myid 파일과 데이터의 스냅샷이나 트
랜잭션 로그가 존재한다
 initLimit : 팔로워가 리더와 초기에 연결하는 시간에 대한 타임아웃
 syncLimit : 팔로워가 리더와 동기화 하는 시간에 대한 타임아웃
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home1/irteam/apps/zookeeper/data
clientPort=2181
 각 서버 세팅
 최초 압축을 해제한뒤, 압축해제한 디렉토리로부터 zookeeper1, 2, 3을
각각 복사
 myid 파일 생성
 복사한 각 zookeeper 디렉토리에서 ‘data’ 디렉토리 생성후 myid 파일 생성
$ tar xzvf zookeeper-3.4.7.tar.gz
$ cp zookeeper-3.4.7 zookeeper1
$ cp zookeeper-3.4.7 zookeeper2
$ cp zookeeper-3.4.7 zookeeper3
$ mkdir zookeepr1/data
$ mkdir zookeepr2/data
$ mkdir zookeepr3/data
$ echo 1 > zookeeper1/data/myid
$ echo 2 > zookeeper2/data/myid
$ echo 3 > zookeeper3/data/myid
 설정 파일
 dataDir을 각 3개의 zookeeper 디렉토리 data 경로로 설정
 clientPort 도 마찬가지로 각 zookeeper 에 2181 부터 2183 까지 설정
 server.n=host:[쿼럼통신port]:[리더선출port] 를 추가
 단, 위 사항은 ‘하나의 서버’에 3개의 zookeeper 인스턴스를 띄울때임. (각각 다른서
버에 있다면 clientPort나 server.n 포트가 동일해도 상관없음.
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home1/irteam/apps/zookeeper[1~3]/data
clientPort=2181~3
server.1=127.0.0.1:2222:2223
server.2=127.0.0.1:3333:3334
server.3=127.0.0.1:4444:4445
 실습
 Master
 새로운 워커와 작업을 감시하고 가용한 워커들에게 작업을 할당한다
 Worker
 마스터가 작업을 실행 할 수 있는 워커를 볼 수 있도록 워커는 시스템에 자신을
등록하고 새로운 작업을 감시한다
 Client
 클라이언트는 새로운 작업을 생성하고 마스터 워커 시스템으로부터
응답을 기다린다
server id
/
/master
/workers
/workers/worker-1
/tasks
/tasks/task-1
/assign
/assign/worker-1
/assign/worker-1/task-1
MASTER
WORKER WORKER WORKER
CLIENT
 Source Code
 https://github.com/JuPyoHong/zookeeper-client
 https://github.com/JuPyoHong/zookeeper-master-worker

More Related Content

What's hot

분산 트랜잭션 - 큰힘에는 큰 책임이 따른다 [MongoDB]
분산 트랜잭션 - 큰힘에는 큰 책임이 따른다 [MongoDB]분산 트랜잭션 - 큰힘에는 큰 책임이 따른다 [MongoDB]
분산 트랜잭션 - 큰힘에는 큰 책임이 따른다 [MongoDB]MongoDB
 
20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은
20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은
20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은jieun kim
 
카산드라를 설치해서 테스트 해보자 with virtualbox
카산드라를 설치해서 테스트 해보자 with virtualbox카산드라를 설치해서 테스트 해보자 with virtualbox
카산드라를 설치해서 테스트 해보자 with virtualbox떠리 이
 
지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기Ted Won
 
Cassandra 멘붕기 | Devon 2012
Cassandra 멘붕기 | Devon 2012Cassandra 멘붕기 | Devon 2012
Cassandra 멘붕기 | Devon 2012Daum DNA
 
(OCI 탐험일지) cloud shell
(OCI 탐험일지) cloud shell(OCI 탐험일지) cloud shell
(OCI 탐험일지) cloud shellJay Park
 
AWS 환경에서 MySQL BMT
AWS 환경에서 MySQL BMTAWS 환경에서 MySQL BMT
AWS 환경에서 MySQL BMTI Goo Lee
 
서버인프라 구축 입문 basis of composing server and infra
서버인프라 구축 입문 basis of composing server and infra서버인프라 구축 입문 basis of composing server and infra
서버인프라 구축 입문 basis of composing server and infraHwanseok Park
 
Cassandra education material
Cassandra education materialCassandra education material
Cassandra education materialYoungki Kim
 
Mongo db 복제(Replication)
Mongo db 복제(Replication)Mongo db 복제(Replication)
Mongo db 복제(Replication)Hyosung Jeon
 
150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은jieun kim
 
Mongo DB 활용가이드 Tip 35 ~ 41
Mongo DB 활용가이드 Tip 35 ~ 41Mongo DB 활용가이드 Tip 35 ~ 41
Mongo DB 활용가이드 Tip 35 ~ 41cosmosyc
 
Let's Play with Data Safely
Let's Play with Data SafelyLet's Play with Data Safely
Let's Play with Data SafelyDataya Nolja
 
데이터야 안전하게 놀아보자.V.1
데이터야 안전하게 놀아보자.V.1데이터야 안전하게 놀아보자.V.1
데이터야 안전하게 놀아보자.V.1Dongchan Sung
 
AWS EC2 AMI seminar(KELP 2011)
AWS EC2 AMI seminar(KELP 2011)AWS EC2 AMI seminar(KELP 2011)
AWS EC2 AMI seminar(KELP 2011)Jay Park
 
[오픈소스컨설팅]systemd on RHEL7
[오픈소스컨설팅]systemd on RHEL7[오픈소스컨설팅]systemd on RHEL7
[오픈소스컨설팅]systemd on RHEL7Ji-Woong Choi
 
[오픈소스컨설팅]About RHEL7 systemd
[오픈소스컨설팅]About RHEL7 systemd[오픈소스컨설팅]About RHEL7 systemd
[오픈소스컨설팅]About RHEL7 systemdJi-Woong Choi
 
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은jieun kim
 
(OCI 탐험일지) 블록 볼륨 생성
(OCI 탐험일지) 블록 볼륨 생성(OCI 탐험일지) 블록 볼륨 생성
(OCI 탐험일지) 블록 볼륨 생성Jay Park
 

What's hot (20)

분산 트랜잭션 - 큰힘에는 큰 책임이 따른다 [MongoDB]
분산 트랜잭션 - 큰힘에는 큰 책임이 따른다 [MongoDB]분산 트랜잭션 - 큰힘에는 큰 책임이 따른다 [MongoDB]
분산 트랜잭션 - 큰힘에는 큰 책임이 따른다 [MongoDB]
 
20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은
20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은
20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은
 
카산드라를 설치해서 테스트 해보자 with virtualbox
카산드라를 설치해서 테스트 해보자 with virtualbox카산드라를 설치해서 테스트 해보자 with virtualbox
카산드라를 설치해서 테스트 해보자 with virtualbox
 
Mongodb cluster
Mongodb clusterMongodb cluster
Mongodb cluster
 
지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기
 
Cassandra 멘붕기 | Devon 2012
Cassandra 멘붕기 | Devon 2012Cassandra 멘붕기 | Devon 2012
Cassandra 멘붕기 | Devon 2012
 
(OCI 탐험일지) cloud shell
(OCI 탐험일지) cloud shell(OCI 탐험일지) cloud shell
(OCI 탐험일지) cloud shell
 
AWS 환경에서 MySQL BMT
AWS 환경에서 MySQL BMTAWS 환경에서 MySQL BMT
AWS 환경에서 MySQL BMT
 
서버인프라 구축 입문 basis of composing server and infra
서버인프라 구축 입문 basis of composing server and infra서버인프라 구축 입문 basis of composing server and infra
서버인프라 구축 입문 basis of composing server and infra
 
Cassandra education material
Cassandra education materialCassandra education material
Cassandra education material
 
Mongo db 복제(Replication)
Mongo db 복제(Replication)Mongo db 복제(Replication)
Mongo db 복제(Replication)
 
150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은
 
Mongo DB 활용가이드 Tip 35 ~ 41
Mongo DB 활용가이드 Tip 35 ~ 41Mongo DB 활용가이드 Tip 35 ~ 41
Mongo DB 활용가이드 Tip 35 ~ 41
 
Let's Play with Data Safely
Let's Play with Data SafelyLet's Play with Data Safely
Let's Play with Data Safely
 
데이터야 안전하게 놀아보자.V.1
데이터야 안전하게 놀아보자.V.1데이터야 안전하게 놀아보자.V.1
데이터야 안전하게 놀아보자.V.1
 
AWS EC2 AMI seminar(KELP 2011)
AWS EC2 AMI seminar(KELP 2011)AWS EC2 AMI seminar(KELP 2011)
AWS EC2 AMI seminar(KELP 2011)
 
[오픈소스컨설팅]systemd on RHEL7
[오픈소스컨설팅]systemd on RHEL7[오픈소스컨설팅]systemd on RHEL7
[오픈소스컨설팅]systemd on RHEL7
 
[오픈소스컨설팅]About RHEL7 systemd
[오픈소스컨설팅]About RHEL7 systemd[오픈소스컨설팅]About RHEL7 systemd
[오픈소스컨설팅]About RHEL7 systemd
 
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은
 
(OCI 탐험일지) 블록 볼륨 생성
(OCI 탐험일지) 블록 볼륨 생성(OCI 탐험일지) 블록 볼륨 생성
(OCI 탐험일지) 블록 볼륨 생성
 

Similar to Zoo keeper 소개

Mcollective orchestration tool 소개
Mcollective orchestration tool 소개Mcollective orchestration tool 소개
Mcollective orchestration tool 소개태준 문
 
클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기YoungSu Son
 
Fluentd with MySQL
Fluentd with MySQLFluentd with MySQL
Fluentd with MySQLI Goo Lee
 
Cloud-Barista 제1차 오픈세미나 : CB-Dragonfly-멀티 클라우드 통합 모니터링 프레임워크(1st Open Seminar...
Cloud-Barista 제1차 오픈세미나 : CB-Dragonfly-멀티 클라우드 통합 모니터링 프레임워크(1st Open Seminar...Cloud-Barista 제1차 오픈세미나 : CB-Dragonfly-멀티 클라우드 통합 모니터링 프레임워크(1st Open Seminar...
Cloud-Barista 제1차 오픈세미나 : CB-Dragonfly-멀티 클라우드 통합 모니터링 프레임워크(1st Open Seminar...Cloud-Barista Community
 
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Dragonfly - 멀티 클라우드 통합 모니터링 프레임워크(Multi-Cloud ...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Dragonfly - 멀티 클라우드 통합 모니터링 프레임워크(Multi-Cloud ...Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Dragonfly - 멀티 클라우드 통합 모니터링 프레임워크(Multi-Cloud ...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Dragonfly - 멀티 클라우드 통합 모니터링 프레임워크(Multi-Cloud ...Cloud-Barista Community
 
파이썬 병렬프로그래밍
파이썬 병렬프로그래밍파이썬 병렬프로그래밍
파이썬 병렬프로그래밍Yong Joon Moon
 
Custom DevOps Monitoring System in MelOn (with InfluxDB + Telegraf + Grafana)
Custom DevOps Monitoring System in MelOn (with InfluxDB + Telegraf + Grafana)Custom DevOps Monitoring System in MelOn (with InfluxDB + Telegraf + Grafana)
Custom DevOps Monitoring System in MelOn (with InfluxDB + Telegraf + Grafana)Seungmin Yu
 
Monitoring System for DevOps - Case of MelOn
Monitoring System for DevOps - Case of MelOnMonitoring System for DevOps - Case of MelOn
Monitoring System for DevOps - Case of MelOnDataya Nolja
 
도커(Docker) 메트릭스 & 로그 수집
도커(Docker) 메트릭스 & 로그 수집도커(Docker) 메트릭스 & 로그 수집
도커(Docker) 메트릭스 & 로그 수집Daegwon Kim
 
Free rtos seminar
Free rtos seminarFree rtos seminar
Free rtos seminarCho Daniel
 
Pyspark Demo1,Demo2 정리
Pyspark Demo1,Demo2 정리Pyspark Demo1,Demo2 정리
Pyspark Demo1,Demo2 정리민기 박
 
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기YoungSu Son
 
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: 인터넷 쇼핑몰의 실시간 분석 플랫폼 구축 사례
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: 인터넷 쇼핑몰의 실시간 분석 플랫폼 구축 사례GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: 인터넷 쇼핑몰의 실시간 분석 플랫폼 구축 사례
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: 인터넷 쇼핑몰의 실시간 분석 플랫폼 구축 사례Gruter
 
Linux 강의자료 ed10
Linux 강의자료 ed10Linux 강의자료 ed10
Linux 강의자료 ed10hungrok
 
Infra as Code with Packer, Ansible and Terraform
Infra as Code with Packer, Ansible and TerraformInfra as Code with Packer, Ansible and Terraform
Infra as Code with Packer, Ansible and TerraformInho Kang
 
SDDC(software defined data center)에서 NFV의 역할과 관리도구 (세미나 발표 자료)
SDDC(software defined data center)에서 NFV의 역할과 관리도구 (세미나 발표 자료)SDDC(software defined data center)에서 NFV의 역할과 관리도구 (세미나 발표 자료)
SDDC(software defined data center)에서 NFV의 역할과 관리도구 (세미나 발표 자료)정명훈 Jerry Jeong
 
[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발NAVER D2
 

Similar to Zoo keeper 소개 (20)

Mcollective orchestration tool 소개
Mcollective orchestration tool 소개Mcollective orchestration tool 소개
Mcollective orchestration tool 소개
 
클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기
 
Fluentd with MySQL
Fluentd with MySQLFluentd with MySQL
Fluentd with MySQL
 
Kafka slideshare
Kafka   slideshareKafka   slideshare
Kafka slideshare
 
Cloud-Barista 제1차 오픈세미나 : CB-Dragonfly-멀티 클라우드 통합 모니터링 프레임워크(1st Open Seminar...
Cloud-Barista 제1차 오픈세미나 : CB-Dragonfly-멀티 클라우드 통합 모니터링 프레임워크(1st Open Seminar...Cloud-Barista 제1차 오픈세미나 : CB-Dragonfly-멀티 클라우드 통합 모니터링 프레임워크(1st Open Seminar...
Cloud-Barista 제1차 오픈세미나 : CB-Dragonfly-멀티 클라우드 통합 모니터링 프레임워크(1st Open Seminar...
 
KAFKA 3.1.0.pdf
KAFKA 3.1.0.pdfKAFKA 3.1.0.pdf
KAFKA 3.1.0.pdf
 
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Dragonfly - 멀티 클라우드 통합 모니터링 프레임워크(Multi-Cloud ...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Dragonfly - 멀티 클라우드 통합 모니터링 프레임워크(Multi-Cloud ...Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Dragonfly - 멀티 클라우드 통합 모니터링 프레임워크(Multi-Cloud ...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Dragonfly - 멀티 클라우드 통합 모니터링 프레임워크(Multi-Cloud ...
 
파이썬 병렬프로그래밍
파이썬 병렬프로그래밍파이썬 병렬프로그래밍
파이썬 병렬프로그래밍
 
Custom DevOps Monitoring System in MelOn (with InfluxDB + Telegraf + Grafana)
Custom DevOps Monitoring System in MelOn (with InfluxDB + Telegraf + Grafana)Custom DevOps Monitoring System in MelOn (with InfluxDB + Telegraf + Grafana)
Custom DevOps Monitoring System in MelOn (with InfluxDB + Telegraf + Grafana)
 
Monitoring System for DevOps - Case of MelOn
Monitoring System for DevOps - Case of MelOnMonitoring System for DevOps - Case of MelOn
Monitoring System for DevOps - Case of MelOn
 
도커(Docker) 메트릭스 & 로그 수집
도커(Docker) 메트릭스 & 로그 수집도커(Docker) 메트릭스 & 로그 수집
도커(Docker) 메트릭스 & 로그 수집
 
Free rtos seminar
Free rtos seminarFree rtos seminar
Free rtos seminar
 
Pyspark Demo1,Demo2 정리
Pyspark Demo1,Demo2 정리Pyspark Demo1,Demo2 정리
Pyspark Demo1,Demo2 정리
 
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
 
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: 인터넷 쇼핑몰의 실시간 분석 플랫폼 구축 사례
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: 인터넷 쇼핑몰의 실시간 분석 플랫폼 구축 사례GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: 인터넷 쇼핑몰의 실시간 분석 플랫폼 구축 사례
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: 인터넷 쇼핑몰의 실시간 분석 플랫폼 구축 사례
 
Kubernetes
Kubernetes Kubernetes
Kubernetes
 
Linux 강의자료 ed10
Linux 강의자료 ed10Linux 강의자료 ed10
Linux 강의자료 ed10
 
Infra as Code with Packer, Ansible and Terraform
Infra as Code with Packer, Ansible and TerraformInfra as Code with Packer, Ansible and Terraform
Infra as Code with Packer, Ansible and Terraform
 
SDDC(software defined data center)에서 NFV의 역할과 관리도구 (세미나 발표 자료)
SDDC(software defined data center)에서 NFV의 역할과 관리도구 (세미나 발표 자료)SDDC(software defined data center)에서 NFV의 역할과 관리도구 (세미나 발표 자료)
SDDC(software defined data center)에서 NFV의 역할과 관리도구 (세미나 발표 자료)
 
[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발
 

Zoo keeper 소개

  • 1.
  • 2.
  • 3.
  • 4.  Yahoo! 에서 개발  아파치 소프트웨어 재단에서 후원하는 오픈소스 프로젝트  일반적인 분산 시스템 환경에서, 개별적인 프로그램들의 동작을 안정적으 로 ‘코디네이팅’ 해주는 미들웨어 서비스 (또는 Tool?)
  • 5.  기본 특징  분산시스템의 Coordination 작업  즉, 개별적으로 동작하는 여러 프로세스들의 ‘협력’이나 ‘경합’을 조절  경합상황에서의 ‘상호배제’(Mutual exclusion)와 같은 요구사항 구현가능  동기화 기본요소  Lock이나 Master 선출과 같은 동기화 기본요소에 대한 Handling 가능  프로세스 상호간에 전달되는 metadata도 관리, 조작 가능
  • 6.  알아야 할 점!  ZooKeeper는 ‘대용량’ 저장소가 아니다!  애플리케이션 데이터와 코디네이션 데이터의 구분  ZooKeeper는 단지 다양한 분산애플리케이션에서 흔히 사용되는 작업들을 구 현할 수 있도록 핵심 작업(operation)들을 제공함 (마스터 사용, 프로세스들의 응답 체크 etc…)
  • 7.  Apache Hbase  클러스터 마스터 선출, 가용서버 목록 저장  클러스터의 메타데이터 관리  Apache Solar  클러스터의 메타데이터 저장  메타데이터 업데이트
  • 8.
  • 9.  기본 개념  파일 시스템의 트리(Tree)와 같은 ‘계층구조’로 구성  부모/자식 개념을 가지고 있으며 Leaf 노드는 ‘데이터’ 노드 server id / /master /workers /workers/worker-1 /tasks /tasks/task-1 /assign /assign/worker-1 run cmd /assign/worker-1/task-1
  • 10.  주요 API create /path data data를 담고 있는 /path라는 이름의 znode를 생성한다 delete /path /path znode를 삭제한다 exists /path /paht znode가 존재하는지 확인한다 setData /path data /path znode의 데이터를 data로 저장 한다 getData /path /path의 데이터를 반환 한다 getChildren /path /path의 자식 목록을 반환한다.
  • 11.  영구모드(Persistent)와 임시모드(Ephemeral)  영구모드 : znode를 생성한 클라이언트가 주키퍼와 연결이 끝어지더라도 보존됨  임시모드 : znode를 생선한 클라이언트가 주키퍼와 연결이 끊어지거나, 클라이언트 장애가 발생하게되면 삭제됨.  사례 (Deadlock) /lockClient 1 Client 2 listening
  • 12.  순차모드  순차 모드로 Znode 생성시, 순차번호를 자동 할당 (정수로 증가함) / /node-1 /node-2 /node-3 . . .
  • 13.  기본 Flow  클라이언트가 znode의 내용을 알기위해 매번 폴링(Polling) 하는것은 비용이 많 이 소모됨  따라서 주키퍼는 ‘알림’(Notification)에 기반한 매커니즘을 따름 1 c1 c2 zk 2 3 getChildren /tasks set watch { } create /tasks/task-1 getChildren /tasks set watch { task-1 }
  • 14.  Standalone  말 그대로, 하나의 서버에서 실행되는 주키퍼 서비스  이러한 단독 모드에서는 주키퍼의 상태가 복제될 수 없음  Quorum  주키퍼 앙상블(Ensemble)이라고 불리우는 주키퍼 서버 그룹으로 이루어짐.  쿼럼 모드에서는 주키퍼 서버 간 상태가 복제되고, 클라이언트의 요청을 함께 처리  “Quorum” : 투표를 위해 출석이 요구되는 최소 국회의원 숫자  주키퍼 서비스가 제대로 동작하기 위해서는 전체 앙상블 서버 대수의 과반 이상이 정상 동작하고 있어야 함
  • 15.  Session  주키퍼 앙상블에 요청하기전에 클라이언트는 반드시 주키퍼 서버와 세션을 수 립(establish)해야 함.  이 세션이 끝나게 되면 해당 클라이언트가 생성한 임시노드는 삭제됨  Session 상태와 전이 NOT_CONNECTED CONNECTING CONNECTED CLOSED 1 2 3 4 5
  • 16.
  • 17.  공식 웹사이트에서 Download (Window) https://zookeeper.apache.org/releases.html
  • 18.  wget 이용 (Linux) $ wget 'http://apache.mirror.cdnetworks.com/zookeeper/zookeeper-3.4.7/zookeeper-3.4.7.tar.gz' $ tar xzvf zookeeper-3.4.7.tar.gz  data 디렉토리 생성과 zoo.cfg 생성 $ cd zookeeper-3.4.7 $ mkdir data $ cd zookeeper-3.4.7/conf # sample cfg 파일로부터 복사하여 zoo.cfg 생성 $ cp zoo_sample.cfg zoo.cfg
  • 19.  기본 설정 훑어보기  tickTime : 주키퍼 앙상블이 사용하는 시간의 최소 단위. 세션을 타임아웃 시키는 최소 버킷 크 기를 결정  clientPort : 클라이언트가 앙상블로 연결하기위한 TCP 포트  dataDir : 주키퍼 앙상블 구성 서버의 고유값이 저장되는 myid 파일과 데이터의 스냅샷이나 트 랜잭션 로그가 존재한다  initLimit : 팔로워가 리더와 초기에 연결하는 시간에 대한 타임아웃  syncLimit : 팔로워가 리더와 동기화 하는 시간에 대한 타임아웃 tickTime=2000 initLimit=10 syncLimit=5 dataDir=/home1/irteam/apps/zookeeper/data clientPort=2181
  • 20.  각 서버 세팅  최초 압축을 해제한뒤, 압축해제한 디렉토리로부터 zookeeper1, 2, 3을 각각 복사  myid 파일 생성  복사한 각 zookeeper 디렉토리에서 ‘data’ 디렉토리 생성후 myid 파일 생성 $ tar xzvf zookeeper-3.4.7.tar.gz $ cp zookeeper-3.4.7 zookeeper1 $ cp zookeeper-3.4.7 zookeeper2 $ cp zookeeper-3.4.7 zookeeper3 $ mkdir zookeepr1/data $ mkdir zookeepr2/data $ mkdir zookeepr3/data $ echo 1 > zookeeper1/data/myid $ echo 2 > zookeeper2/data/myid $ echo 3 > zookeeper3/data/myid
  • 21.  설정 파일  dataDir을 각 3개의 zookeeper 디렉토리 data 경로로 설정  clientPort 도 마찬가지로 각 zookeeper 에 2181 부터 2183 까지 설정  server.n=host:[쿼럼통신port]:[리더선출port] 를 추가  단, 위 사항은 ‘하나의 서버’에 3개의 zookeeper 인스턴스를 띄울때임. (각각 다른서 버에 있다면 clientPort나 server.n 포트가 동일해도 상관없음. tickTime=2000 initLimit=10 syncLimit=5 dataDir=/home1/irteam/apps/zookeeper[1~3]/data clientPort=2181~3 server.1=127.0.0.1:2222:2223 server.2=127.0.0.1:3333:3334 server.3=127.0.0.1:4444:4445
  • 23.
  • 24.  Master  새로운 워커와 작업을 감시하고 가용한 워커들에게 작업을 할당한다  Worker  마스터가 작업을 실행 할 수 있는 워커를 볼 수 있도록 워커는 시스템에 자신을 등록하고 새로운 작업을 감시한다  Client  클라이언트는 새로운 작업을 생성하고 마스터 워커 시스템으로부터 응답을 기다린다
  • 26.  Source Code  https://github.com/JuPyoHong/zookeeper-client  https://github.com/JuPyoHong/zookeeper-master-worker

Editor's Notes

  1. 예) 애플리케이션 데이터 : 메일함에 있는 메일들과 메일 내용 코디네이션 데이터 : 메일이 제대로 전송되었는지? 해당 메일은 어떤 서버가 처리하는지? 따위의 데이터 (일종의 메타데이터라고 해도 될듯…)
  2. 예) 애플리케이션 데이터 : 메일함에 있는 메일들과 메일 내용 코디네이션 데이터 : 메일이 제대로 전송되었는지? 해당 메일은 어떤 서버가 처리하는지? 따위의 데이터 (일종의 메타데이터라고 해도 될듯…)
  3. 예) 애플리케이션 데이터 : 메일함에 있는 메일들과 메일 내용 코디네이션 데이터 : 메일이 제대로 전송되었는지? 해당 메일은 어떤 서버가 처리하는지? 따위의 데이터 (일종의 메타데이터라고 해도 될듯…)
  4. 예) 애플리케이션 데이터 : 메일함에 있는 메일들과 메일 내용 코디네이션 데이터 : 메일이 제대로 전송되었는지? 해당 메일은 어떤 서버가 처리하는지? 따위의 데이터 (일종의 메타데이터라고 해도 될듯…)
  5. 예) 애플리케이션 데이터 : 메일함에 있는 메일들과 메일 내용 코디네이션 데이터 : 메일이 제대로 전송되었는지? 해당 메일은 어떤 서버가 처리하는지? 따위의 데이터 (일종의 메타데이터라고 해도 될듯…)
  6. 예) 애플리케이션 데이터 : 메일함에 있는 메일들과 메일 내용 코디네이션 데이터 : 메일이 제대로 전송되었는지? 해당 메일은 어떤 서버가 처리하는지? 따위의 데이터 (일종의 메타데이터라고 해도 될듯…)
  7. 예) 애플리케이션 데이터 : 메일함에 있는 메일들과 메일 내용 코디네이션 데이터 : 메일이 제대로 전송되었는지? 해당 메일은 어떤 서버가 처리하는지? 따위의 데이터 (일종의 메타데이터라고 해도 될듯…)
  8. 예) 애플리케이션 데이터 : 메일함에 있는 메일들과 메일 내용 코디네이션 데이터 : 메일이 제대로 전송되었는지? 해당 메일은 어떤 서버가 처리하는지? 따위의 데이터 (일종의 메타데이터라고 해도 될듯…)
  9. 예) 애플리케이션 데이터 : 메일함에 있는 메일들과 메일 내용 코디네이션 데이터 : 메일이 제대로 전송되었는지? 해당 메일은 어떤 서버가 처리하는지? 따위의 데이터 (일종의 메타데이터라고 해도 될듯…)
  10. 예) 애플리케이션 데이터 : 메일함에 있는 메일들과 메일 내용 코디네이션 데이터 : 메일이 제대로 전송되었는지? 해당 메일은 어떤 서버가 처리하는지? 따위의 데이터 (일종의 메타데이터라고 해도 될듯…)
  11. 예) 애플리케이션 데이터 : 메일함에 있는 메일들과 메일 내용 코디네이션 데이터 : 메일이 제대로 전송되었는지? 해당 메일은 어떤 서버가 처리하는지? 따위의 데이터 (일종의 메타데이터라고 해도 될듯…)
  12. 예) 애플리케이션 데이터 : 메일함에 있는 메일들과 메일 내용 코디네이션 데이터 : 메일이 제대로 전송되었는지? 해당 메일은 어떤 서버가 처리하는지? 따위의 데이터 (일종의 메타데이터라고 해도 될듯…)
  13. 예) 애플리케이션 데이터 : 메일함에 있는 메일들과 메일 내용 코디네이션 데이터 : 메일이 제대로 전송되었는지? 해당 메일은 어떤 서버가 처리하는지? 따위의 데이터 (일종의 메타데이터라고 해도 될듯…)
  14. 예) 애플리케이션 데이터 : 메일함에 있는 메일들과 메일 내용 코디네이션 데이터 : 메일이 제대로 전송되었는지? 해당 메일은 어떤 서버가 처리하는지? 따위의 데이터 (일종의 메타데이터라고 해도 될듯…)
  15. 예) 애플리케이션 데이터 : 메일함에 있는 메일들과 메일 내용 코디네이션 데이터 : 메일이 제대로 전송되었는지? 해당 메일은 어떤 서버가 처리하는지? 따위의 데이터 (일종의 메타데이터라고 해도 될듯…)
  16. 예) 애플리케이션 데이터 : 메일함에 있는 메일들과 메일 내용 코디네이션 데이터 : 메일이 제대로 전송되었는지? 해당 메일은 어떤 서버가 처리하는지? 따위의 데이터 (일종의 메타데이터라고 해도 될듯…)
  17. 예) 애플리케이션 데이터 : 메일함에 있는 메일들과 메일 내용 코디네이션 데이터 : 메일이 제대로 전송되었는지? 해당 메일은 어떤 서버가 처리하는지? 따위의 데이터 (일종의 메타데이터라고 해도 될듯…)
  18. 예) 애플리케이션 데이터 : 메일함에 있는 메일들과 메일 내용 코디네이션 데이터 : 메일이 제대로 전송되었는지? 해당 메일은 어떤 서버가 처리하는지? 따위의 데이터 (일종의 메타데이터라고 해도 될듯…)