개요

Deploy Alluxio on a Cluster with HA 관련 주요 내용을 정리한다.

overview

  • alluxio master를 active/standby로 구성할 수 있음
  • HA 구성의 기술적인 챌린지는 서비스 재시작 시 shared file system 상태를 여러대의 마스터에서 유지하는것이다. 이를 위한 방법이 Alluxio 2.0 기준 아래의 2가지가 있다.
  1. Raft-based Journal
    Raft protocol로 여러대의 파일시스템 저널에 state를 저장해두었다가 fail over를 수행
  2. 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의 메타데이터는 지워지고 원본 데이터는 건드리지 않는다.

$ ./bin/alluxio format

Launch Alluxio

  • conf/workers 에 모든 worker hostname 명시
  • conf/masters 에 모든 master hostname 명시

위 작업 이후 마스터 노드에서 아래 명령어 수행 하여 실행한다. 이 명령어로 master/worker를 모두 한번에 실행할 수 있다. SudoMount의 뜻은 각 worker에 RamFS를 sudo권한으로 마운트 한다.

$ ./bin/alluxio-start.sh all SudoMount

Verify Alluxio Cluster

클러스터 정상 실행을 검증하기 위해 아래 명령어로 리더가 누군지 알아보자.

$ ./bin/alluxio fs leader

이후 http://<LEADER_HOSTNAME>:19999 주소로 alluxio web ui에 접속해보자.

아래 명령어로 샘플 테스트도 돌려볼 수 있다.

$ ./bin/alluxio runTests

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 정보를 업데이트 한다.