개요
Deploy Alluxio on a Cluster with HA 관련 주요 내용을 정리한다.
overview
- alluxio master를 active/standby로 구성할 수 있음
- HA 구성의 기술적인 챌린지는 서비스 재시작 시 shared file system 상태를 여러대의 마스터에서 유지하는것이다. 이를 위한 방법이 Alluxio 2.0 기준 아래의 2가지가 있다.
- Raft-based Journal
Raft protocol로 여러대의 파일시스템 저널에 state를 저장해두었다가 fail over를 수행 - Zookeeper with a shared Journal
상태 저장을 zk에서 수행
Prerequisites
- alluxio binary 다운로드
- 각 클러스터가 비번 없이 SSH 접속이 가능해야함
- 각 노드간 TCP 통신이 원할해야 하는데 기본 19998 포트로 RPC 통신을수행함
Zookeeper 설정
필자는 회사에서 안정성을 위해 zk 설정으로 진행하고자 한다.
zk 관련 alluxio의 아래 설정이 권장된다고 함
alluxio.zookeeper.session.timeout=120s # for large namespace
alluxio.zookeeper.leader.connection.error.policy=SESSION # for more stability
Start an Alluxio Cluster with HA
Format Alluxio
마스터 노드에서 Alluxio를 최초로 시작하기 전에 포맷을 수행하자. Alluxio의 메타데이터는 지워지고 원본 데이터는 건드리지 않는다.
Launch Alluxio
conf/workers
에 모든 worker hostname 명시conf/masters
에 모든 master hostname 명시
위 작업 이후 마스터 노드에서 아래 명령어 수행 하여 실행한다. 이 명령어로 master/worker를 모두 한번에 실행할 수 있다. SudoMount
의 뜻은 각 worker에 RamFS를 sudo권한으로 마운트 한다.
Verify Alluxio Cluster
클러스터 정상 실행을 검증하기 위해 아래 명령어로 리더가 누군지 알아보자.
이후 http://<LEADER_HOSTNAME>:19999
주소로 alluxio web ui에 접속해보자.
아래 명령어로 샘플 테스트도 돌려볼 수 있다.
Common Operations
Stop Alluxio
$ ./bin/alluxio-stop.sh all
$ ./bin/alluxio-stop.sh masters
$ ./bin/alluxio-stop.sh workers
$ ./bin/alluxio-stop.sh master # 개별 노드 접속 후 수행
$ ./bin/alluxio-stop.sh worker # 개별 노드 접속 후 수행
start 명령도 위와 같은 규칙으로 사용가능하다.
$ ./bin/alluxio-start.sh all
$ ./bin/alluxio-start.sh masters
$ ./bin/alluxio-start.sh workers
$ ./bin/alluxio-start.sh master # 개별 노드 접속 후 수행
$ ./bin/alluxio-start.sh worker # 개별 노드 접속 후 수행
Add/Remove Workers Dynamically
아래 명령어로 클러스터에 동적으로 worker를 추가/삭제 할 수 있다.
$ ./bin/alluxio-start.sh worker SudoMount # starts the local worker
$ ./bin/alluxio-stop.sh worker # stops the local worker
config update
마스터는 롤링 업데이트, worker는 개별 업데이트로 conf 정보를 업데이트 한다.