이번 시간엔 watcher기능이 실제론 어떻게 동작하고 쓰이는지 직접 실습해본 결과를 포스팅 해보려고한다.
1. znode를 생성해주는 클라이언트 만들기
① 먼저 아래의 명령어를 실행시켜서 모듈을 설치해준다.
· npm install node-zookeeper-client
만약 저 명령어를 실행시켜서 위와 같은 화면이 나온다면 정상적으로 설치가 완료된것이다.
② 파일이름은 zkClient.js로 정해주고 다음과 같이 코드를 작성해준다.
③ 이제 zookeeper을 설치해줘야한다. 다음과 같은 명령어를 실행해서 설치해준다.
· brew install zookeeper
그리고 zkClientstart 명령어를 써서 zookeeper server을 동작시킨다.
정상적으로 실행되면 위의 화면이 나온다. 내꺼 같은 경우엔 미리 zookeeper server를 돌려놓은 상황이다.
④ 이제 zkClient.js를 실행시켜보면된다. 파일을 실행시키면 다음과 같은 화면이 나온다.
위의 화면이 나온다면 정상적으로 실행된 것이다. zkCli 명령어를 입력해서 클라이언트에 접속하고 ls /를 입력해보면
test node가 생성되었을 것이다.
2. znode가 존재하는지 확인해주는 클라이언트 작성하기
① 파일이름은 zkClient2.js로 설정해주고 다음과 같이 코드를 입력해준다.
② zkClient2.js를 실행시켜보면 다음과 같은 화면이 얻어졌다면 실행이 잘된것이다.
아까 처음에 test 노드를 만들어놨기 때문에 test노드가 존재한다고 표시가 된다는 것을 알 수 있다.
3. Child Node 확인하는 방법
① 먼저 zkCli명령어를 사용해서 zkServer에 접속하고 /shard1 Persist Node를 생성해준다.
만약 생성이 잘 되었다면 위 화면과 같은 결과가 나타날 것이다.
② /shard1 노드의 자식을 Ephemeral Node로 각각 replSet1, replSet2, replSet3, arbiter znode로 생성 해준다.
만약에 생성이 잘 되었다면 위화면과 같은 화면이 출력될 것이다.
자, 이제 Child Node 생성이 끝났다. 본격적으로 child Node를 확인하는 주키퍼 클라이언트를 구현해보자.
③ child Node를 확인하는 클라이언트 구현
파일이름을 zkClient3.js로 설정하고 다음과 같이 코드를 작성해준다.
코드를 작성하고 zkClient3.js를 실행시켜 주면 다음과 같은 화면이 나온다.
정상적으로 잘 실행 되었다면 위와 같이 아까 만들었던 Child Node를 확인할 수 있을 것이다.
그리고 참고로 하나 더 말하자면 자식 노드를 모두 Ephemeral Node로 생성했기 때문에 zkCli를 종료하면 해당 자식노드가 모두 삭제되는 것을 확인 할 수 있다.
4. znode에 data를 입력하는 zookeeper Client 생성하기
① 먼저 파일 이름을 zkClient4.js로 저장하고 다음과 같이 코드를 입력한다.
② 그리고 zkClient4.js를 실행해주면 다음과 같은 화면이 나온다.
이렇게 실행이 되었으면 정상적으로 실행된 화면이다.
5. znode의 data를 받아오는 zookeeper Client 생성하기
① zkClient5.js로 파일을 저장하고 다음과 같이 코드를 입력한다.
② zkClient5.js를 실행시키면 다음과 같은 화면이 나온다.
위 화면과 같이 출력되면 정상적으로 실행된 화면이다.
6. 원하는 znode를 삭제하는 zookeeper Client 생성하기
① zkClient6.js로 파일을 저장하고 다음과 같이 코드를 입력한다.
② zkClient6.js를 실행시키면 다음과 같은 화면이 나온다.
위와 같은 화면이 실행되면 정상적으로 실행된 것이다.
이번포스팅은 여기까지만 하고 다음시간에 이어서 더 포스팅 해보도록 하겠다.
'mongoDB > zookeeper' 카테고리의 다른 글
zookeeper의 watcher 기능 실습 2 (0) | 2016.09.16 |
---|---|
zookeeper의 watch 기능 (0) | 2016.09.09 |
zookeeper의 특성과 간단한 실습 (0) | 2016.09.08 |
zookeeper의 필요성 (4) | 2016.09.06 |