보뇨 다이어리

Zookeeper 를 통해 간단한 서버 만들기 본문

컴퓨터 관련/Java 정보

Zookeeper 를 통해 간단한 서버 만들기

보뇨 2018. 3. 11. 21:06
반응형

저번주에 Zookeeper 를 해보라는 선임분의 말씀에 열심히 해보았습니다....다만 삽질이 심각하게 많았을뿐...ㅠㅠ

튜토리얼은 죄다 영어에 한국어로 포스팅한 사람들의 글또한 이해가 안되었습니다 (제가 워낙 허접인 이유도 있구요)

무슨 오류도 생기는데 비슷한 오류는 어설픈 영어실력으로 구글링해도 안나오고 정말 암담했었는데 어찌 집에 와서 해보니 됨..?????!!

그리하여 저와 같은 (물론 저보다 낮은사람은 없겠지만) 사람들을 위해 상세히 포스팅하고자합니다 :) 잡소리는 여기까지하고 ㄱㄱ싱~


1. 주키퍼(zookeeper) 란?

- 주키퍼....이건 제가 수많은 블로그와 영문문서를 읽어봄으로써 느낀것은 간단하게 말하자면 휴게소라고 생각합니다 한 노드(장비) 에서 생성하거나 수집한 데이터를 원하는곳으로 보낼려고하는데 뭐....단순히 가면 문제는 없는데 만약 연결이 끊어져서 그동안의 데이터가 손실되거나 할경우 방법이 없기 때문에 쥬키퍼라는 하나의 휴게소같은 개념을 넣은것같습니다. 그 데이터를 저장하여 관리할때는 트리구조로 관리하게 되어집니다. 무엇보다 또 하나의 서버만 사용하다가 그 서버가 다운되면 ㄴ답이기때문에 서버를 복수개를 만들것을 권장하고 있습니다. 근데 왜 복수개냐....하면 다수결의 원칙과같이 예를 들어 a, b, c 라는 서버들이 있는데 모두 데이터를 업데이트하여 2 라는 데이터를 넣었습니다. 근데 그 도중에 a 라는 서버가 다운되서 저장되어질 데이터를 날려버렸을경우 다른 서버들과 sync 를 하여 다수결에 따라 a는 아! 내가 잘못된 데이터를 가지고있구나? 라고 탄식하면서 2 라는 데이터로 업데이트하는거죠. 뭐...좀 더 자세히 설명하자면 할수있는데 이정도면 충분하기 때문에 이제 간단한 서버를 만들어보겠습니당


2. 서버를 만들자

- 우선 https://zookeeper.apache.org/releases.html 에서 주키퍼를 다운받아주고 그다음엔 압출을 풀어줍니다

그 다음에 원하는 디렉토리에 (저의 경우 아래와 같이) 원하는 서버 갯수에 따라 복사해줍니다 저는 3개를 원하니 총 3개 복사!


그리고나서 아래와 같은 코드를 복사하여 zoo.cfg 라는 파일로 만들어서 zookeeper1/conf/ 디렉토리에 넣어줍니다 (여기서는 모두 zookeeper1, zookeeper2, zookeeper3 에 다 넣어주셔야해요 다만 4번줄에 있는 dataDir 쪽은 또 zookeeper1, zookeeper2, zookeeper3 이렇게 설정해주셔야합니다.) 

1
2
3
4
5
6
7
8
9
tickTime=2000
initLimit=50
syncLimit=200
dataDir=/var/zookeeper1
clientPort=2181
 
server.1=localhost:2881:3881
server.2=localhost:2882:3882
server.3=localhost:2883:3883

cs



그다음에 위에서 말했던 dataDir 가 지정된 /var/zookeeper1(or 2 or 3) 쪽으로 가서 myid 라는 파일을 만들어주고 그 안에는 숫자 1, 2, 3 을 각각 넣어줍니다 이건 위에 7,8,9번줄에 있는 몇번서버를 가리키는지 알려주는것이기 때문에 꼭 하셔야해요.


아!!!!!!!! 참고로 저는 한 컴퓨터로 여러 서버를 뛰우고싶기때문에 포트번호를 다르게 주었습니다. 같은 아이피를 쓰고있기때문에 포트번호도 같으면 당연히 안되겠죠?


그러면 이제 다 끝났습니다.....zookeeper 디렉토리로 가주셔서 /bin 폴더안에 zkServer.cmd, zkCli.cmd 라는 파일이 있는데 먼저 서버를 클릭해줍니다. 그러면 계속 로그나 여러내용들이 올라올텐데 당황하지마시구 다른 폴더에 있는 zkServer.cmd 들도 켜줍니다. 왜 한번에 못만들고 저런 오류가 생기냐면 이미 3개의 서버를 만든다고 coo.cfg 파일에 명시를 해주었기 때문에 못만드는겁니다. 그리고나서 각각 폴더에 있는 zkCli.cmd 를 클릭해주면 아래와 같은 사진이 나옵니다


엔더를 탁탁 치면 모두 localhost:2181 로 되어있어서 애이?? 뭐야 모두 같은 포트로 연결되었잖아? 라고 말씀하실수있는데 네 같은 포트 맞습니다. 다만 같은것들이 창 3개를 띄운형식이라 별 신경쓰지마시구 close 타이핑해주고 connect localhost:원하는포트번호 를 타이핑해주면 됩니다. 그러면 아래와 같이 성공!! 



반응형