2015년 8월 31일 월요일

InfluxDB (Distributed time series database for RealTime Aggregation) - 설치기

InfluxDB는 오랫동안 예의 주시해오던 RealTime Layer의 TimeSeries (Aggregation도 되는) NoSQL DB 이다.( Go 랭귀지로 만들어져 있고, 요런류의 NoSQL 로는 신생에 속해서, 왠지 그냥 빠를것 같다는 선입견도 있었는데 진짜로 빠르고 직관적이라 사용하기도 쉽다.)
그러나, 오랫동안 Cluster 세팅이 베타 버전이었고, 0.9.1 과 0.9.2 는 three node 구성만 지원하는 제약이 있어, Production 에서 사용하기에 많이 부족한 면이 없지 않았다. 하지만 최근(본 글을 쓰는 시점으로 부터 4일전. 2015년 8월 27일) 0.9.3 버전이 오픈되면서 이 제약이 풀렸다. 7월초에 0.9.1이 정식 릴리즈 되었었고, 7월말에 0.9.2 이 정식 릴리즈 된바 있었는데, 한달이 지난 8월 27일 드디어 클러스터 세팅이 공식 지원되는 첫 버전이 릴리즈 된 것이다. ( 요놈도 마이너 버전이긴 하지만, 마이너 정식버전 릴리즈가 엄청나게 빠르다. )

아래는 클러스터 지원에 대한 공식 홈페이지에서의 언급 내용이다. 물론 아직 약간의 개선되어야 할 피처가 남아 있는게 사실이다. Computing Node 즉 분산쿼리에 있어서는 아직 Beta State 라고 언급하고 있고, 단지, Storage 입장에서 Data Node 가 3대 이상으로 확장되고, Size 분산되는 입장에서만 Release 가 정식버전이라 언급하고 있다.(3대 노드 이상일때 분산 쿼리가 지원이 안되는 것은 아니다, 좀더 해결해야 할 부분들이 더 남아 있다는 표현이 맞을 듯 하다.) 즉, 분산 쿼리 측면에서는 아직 Hybrid 한 느낌이다. (여하튼 아직까지는 3대 정도의 Node 갯수에서도 Spark Streaming 이 전처리를 한, 작은 Window Size 의 데이타에 대하여는 충분히 빠른 결과를 보여주고 있다.)




  1. 디렉토리 구성 및 설치 파일 다운로드. 그리고 간략 설치.
    1. cd /data01
    2. mkdir influxdb
    3. cd influxdb
    4. wget https://s3.amazonaws.com/influxdb/influxdb-0.9.3-1.x86_64.rpm
    5. sudo yum localinstall -y influxdb-0.9.3-1.x86_64.rpm
    6. sudo /etc/init.d/influxdb start <--- single node 구성이 아닐때는 요걸 먼저 수행하면 큰일 남... 이것땜에 삽질 많이 함. 모든 컨피그 끝나고 첫 수행을 해야 함. Cluster Mode 세팅 시에는 Cluster 관련 세팅 종료 후 구성해야 함.
      1. 일단 요기까지 하면, single node 구성 세팅 완료. 
  2. CLI 구동 ( Cluster Node 일때는 모든 세팅 끝나고 수행 )
    1. 우선 환경변수에 추가.( at .bashrc 에 /opt/influxdb 추가 )
    2. influx 하면 CLI 가 구동 됨.
    3. 아래는 상세 옵션 들.... import 도 되고, 원격서버접속도 되고, format  옵션으로 json 이나 csv 로 output 을 뽑을 수도 있고, compressed import 옵션도 보인다.
  3. Cluster 세팅 
    1. 각 노드에서 설정 변경
      1. sudo vi /etc/opt/influxdb/influxdb.conf
        1. hostname = "localhost" 를 각 노드 hostname 으로 수정
        2. port 를 1번노드는 :8088 , 2번노드는 :9099 , 3번노드는 :10101 로 수정. 
      2. 1번 노드에서 재구동
        1. sudo /etc/init.d/influxdb stop
        2. sudo /etc/init.d/influxdb start
      3. 2번 노드에서 아래처럼 구동
        1. sudo vi /etc/init.d/influxdb 에서 INFLUXD_OPTS="-join hostname1:8088"
        2. sudo /etc/init.d/influxdb stop
        3. sudo /etc/init.d/influxdb start
      4. 3번 노드에서 아래처럼 구동
        1. sudo vi /etc/init.d/influxdb 에서 INFLUXD_OPTS="-join hostname1:8088,hostname2:9099"
        2. sudo /etc/init.d/influxdb stop
        3. sudo /etc/init.d/influxdb start
      5. 확인
        1. influx 하여 CLI  콘솔을 띄우고, show servers  해서 node 들이 복수개 보여야 함.
        2. 그러나 위데로(메뉴얼데로) 했는데, 안되기도 함.TT
        3. 아래처럼 config 파일을 열어서 수동으로 세팅...
        4. sudo vi /var/opt/influxdb/meta/peers.json
        5. ["<hostname 1>:<port 1>","<hostname 2>:<port 2>","<hostname 3>:<port 3>"]
        6. 정상 수행 완료 되면, show servers 명령에 아래처럼 3개 Node 가 보여져야 함.

댓글 1개:

  1. 오...역시 전문가!
    저도 함 검토해봐야겠네요...
    Druid랑은 다른매력이있나요?

    답글삭제