Arcus – Open source cloud cache server

1. Arcus?

네이버에서 자사 서비스에 적용하기 위해 Zookeeper와 Memcached를 조합 하여 만든 오픈소스 프로젝트 입니다.

Arcus를 웹서버 또는 데이터베이스 사이에 위치시켜 빠른 응답 및 부하를 줄이기 위한 용도로 사용 할수 있습니다.

기타 자세한 사항은 http://naver.github.io/arcus/ 를 참고 하시기 바랍니다.

 

1.1. Arcus Architecture

arcus-architecture

Figure1. Arcus Architecture
(https://github.com/naver/arcus)

1.2. Arcus 배포 과정

arcus_deploy

Figure2. Arcus Deployment

2. 서버구성

총 4대의 서버 Arcus Admin , memcached-1, memcached-2, memcached-3로 구성.

2.1. memcached 서버 설정
memcached로 사용될 서버에서 진행을 하며, memcached가 실행 될수 있도록 사용자를 생성 해줍니다.

– memcached 사용자 생성

 

– JDK 설치

zookeeper를 실행하기 위해 필요합니다.

 

3. Arcus 빌드

3.1. 빌드에 필요한 패키지 설치

Arcus를 빌드하기 위해선 Ubuntu 12.04, 14.04 기준으로 아래 패키지가 필요합니다.

 

– JDK 설치

JDK가 설치 되어 있지 않으면 빌드시에 arcus/bin 디렉토리에 바이너리가 생성이 되지 않습니다.

 

– ANT

ANT는 arcus를 빌드하기 위해 필요합니다.

 

3.4. Arcus 빌드

Naver의 github 저장소에서 받아 빌드 합니다. (https://github.com/naver/arcus)

다만, 몇가지 버그로 인해 빌드와 실행이 안되는 것이 있어 제가 따로 패치한 것으로 빌드 하겠습니다.

 

4. Arcus 설정

4.1. Zookeeper 설정

Arcus는 “scripts/arcus.sh”라는 쉘 스크립트를 사용 하여 관리 합니다.
이 스크립트를 사용할때 마다 -z 옵션을 사용하여야 하는데, 이 옵션은 zookeeper 서버 정보를 입력 받습니다.
관리할 서버가 많아지면 이것도 귀찮은 작업이 되므로, 해당 스크립트 내용중 “zklist”라는 변수에 관리할 zookeeper 서버 정보를 입력 하면, 매번 -z 옵션을 쓰지 않아도 됩니다.

“zklist” 변수의 기본값은 “127.0.0.1:2181″이며 “[ip or host]:[zookeeper port]” 형태로 수정 하시면 됩니다.
관리할 Zookeeper 서버가 많다면, zklist=”172.17.0.3:2181,172.17.0.4:2181,172.17.0.5:2181″ 와 같이 쉼표를 사용하여 추가 하면 됩니다.

 

4.2. SSH Public Key 생성 및 배포

Arcus를 배포 할때 SSH Public key를 사용해 접근하기 때문에 비밀번호 없어도 접속할수 있도록 key를 생성 해줘야 합니다.

 

Memcached로 사용될 서버에 배포 합니다.

 

4.3. Cache Cloud 설정

conf 디렉토리에 json 형식으로 파일을 생성 하고, 내용에는 Memcached 서버 정보를 알맞게 추가 합니다.
(설정법은 Arcus Configuration File 를 참고하시기 바랍니다.)
하나의 서버에 두개의 Memcached를 실행 하도록 설정 하겠습니다.

 

5. Arcus 배포

이제 memcached-1, memcached-2, memcached-3 서버에 arcus를 배포 합니다.

배포 과정에서 주의 할점은, arcus.tar.gz 파일을 netcat 유틸리티로 파일을 전송하기 때문에, netcat 유틸리티가 미리 설치가 되어 있어야 한다는 점 입니다. (없는 경우는 극히 드물지만..)

 

6. Zookeeper 앙상블(ensemble) 설정 및 실행

6.1. Zoopkeeper 앙상블 설정

Arcus에서 사용하는 Zookeeper 앙상블을 설정 합니다.

명령이 끝난 뒤에 Zookeeper는 Ephemeral node 즉, 장애 발생시 자동으로 node가 지워질수 있도록 설정 됩니다.

 

6.2. Zookeeper 실행

등록 된 zookeeper 서버를 시작합니다.

 

6.3. Zookeeper 상태 확인

정상적으로 실행 되었는지 확인 합니다.

 

7. Memcached 등록 및 실행, 모니터링

7.1. Memcached 등록

Memcached 서버를 등록 합니다.

 

7.2. Memcached 실행

2.1에서 설정한 memcached 사용자로 Memcached가 실행이 됩니다.

 

7.3. Memcached 모니터링

Memcached의 상황을 확인 할수 있습니다.

arcus_test

수고하셨습니다.