2015년 11월 26일 목요일

Kafka 0.8.22 설치기

2년 하고도 6개월 전 설치한 카프카를 지금도 잘 쓰고 있다가, 매우 매우 오랜만에 Kafka 를 버전 업 설치 해 보았다. ( 그냥 다시 설치 했다는 표현이 더 맞을 것이다. )

Kafka 는 정말 에러 없이 안정적인 기능을 제공해 준 에코 시스템 중 하나이다. 거의 문제를 일으키지 않았으며, 가끔 콜렉션 레이어나 hadoop 레이어가 잠시 문제가 있거나, 재부팅을 하는 동안, 훌륭하게 버퍼 역할을 해 주었다.

아쉬운 점은 내심 2년 반 만의 업그레이드 이니, 무언가 새로운 기능들이 있었으면 했는데, 기능 개선이 거의 없었고, 심지어 버전도 얼마 오르지 않았다는 점이다.

링크드인의 한국인 개발자에 의하여 '수로' 라는 별도 파생 프로젝트가 생긴것으로 아는데, 우선 '수로'는 다음 기회에 살펴보기로 하고, TO-BE 머신의 한켠에 Kafka 최신 버전을 가볍게 세팅해 보았다. (참고, 아래 설정은 최초 Initial 세팅이다. 세세한 Production 모드 세팅은 차근 차근 할 거라는 예기...)

설치방법

  1. 다운로드 및 설치
    1. wget http://apache.mirror.cdnetworks.com/kafka/0.8.2.2/kafka_2.10-0.8.2.2.tgz
    2. tar xvzf kafka_2.10-0.8.2.2.tgz
  2. 설정
    1. config/zookeeper.properties 내 dataDir 경로 수정
      1. 해당 경로에 디렉토리 생성 후 수행.
    2. config/consumer.properties 내 zookeeper connect 주소 변경
    3. config/producer.properties 내 metadata broker list 주소 변경
    4. 브로커의 server.properties 를 2개로 copy 하여 새로 만들고 내부 변수 변경
      1. broker.id 변경
      2. port 변경
      3. log.dir 변경
      4. zookeeper 주소 변경
    5. 각 파일들을 N개 노드에 복사 싱크
  3. 구동
    1. 1번노드에서 Zookeeper 구동
      1. bin/zookeeper-server-start.sh config/zookeeper.properties &
    2. 브로커노드에서 
      1. bin/kafka-server-start.sh config/server-1.properties &
      2. bin/kafka-server-start.sh config/server-2.properties &
  4. 토픽생성
    1. 1번노드에서
      1. bin/kafka-topics.sh --create --zookeeper 서버주소:2181 --replication-factor 2 --partitions 1 --topic ssg-replicated-topic
    2. 1번노드에서
      1. bin/kafka-console-producer.sh --broker-list 서버주소1:9093,서버주소2:9094 --topic ssg-replicated-topic
    3. 3번노드에서
      1. bin/kafka-console-consumer.sh --zookeeper 서버주소:2181 --from-beginning --topic ssg-replicated-topic
  5. 메시지 전달 테스트
    1. Producer

    2. Consumer

2015년 11월 19일 목요일

Grafana (RealTime Visualization) - version upgrade (2.1.3 -> 2.5.0)

Grafana 리얼타임 시각화 도구가 최근 2.1.3에서 2.5.0 으로 급격하게 버전이 바뀌었다. 패널을 드래그&드롭 하거나 크기를 자유롭게 마우스로 변경 한다던지, ElasticSearch 등에 대한 Full Featured Query Editing 을 지원한다던지 하는 기능도 추가 되었다.

  1. 다운로드 및 설치
    1. 다운로드 & yum install
    2. sudo yum install https://grafanarel.s3.amazonaws.com/builds/grafana-2.5.0-1.x86_64.rpm
  2. 설정 변경 ( 2.1.3과 좀 바뀐부분이 많다 )
    1. vi /etc/sysconfig/grafana-server  
      1. data 디렉토리 변경
        1. DATA_DIR=/data02/grafana/data
      2. log 디렉토리 변경
        1. LOG_DIR=/data02/grafana/log
    2. 그리고 vi /etc/grafana/grafana.ini 에서도 수정
      1. ;data = /data02/grafana/data
      2. ;logs = /data02/grafana/log
      3. ;http_port = 3033
    3. vi /usr/share/grafana/conf/defaults.ini (기본 port 는 요기서도 변경 해주어야 적용이 되었다.)
      1. 기본 Port 변경
        1. http_port = 3033
      2. 기타 Password 등 변경
  3. 구동
    1. sudo service grafana-server start
    2. 구동시 자동 구동되도록 설정
      1. sudo /sbin/chkconfig --add grafana-server
  4. 관리 Web Console

2015년 11월 18일 수요일

Grafana (RealTime Visualization) 2.1.3 - 설치기

influxDB 및 graphite 와 궁합이 좋은 실시간 시각화 툴.(최근 버전은 ElasticSearch 도 지원한다.)
이 툴을 이용하면, 실시간 Dash Board 를 Wizard 모드로 쉽게 만들어 낼 수 있다. 최근에 2.5.0 버전이 나왔는데....
요건 오래전에 정리해놓고 올리지 못한 2.1.3 버전 설치 문서...

  1. 다운로드 및 설치
    1. 다운로드 & yum install
    2. sudo yum install https://grafanarel.s3.amazonaws.com/builds/grafana-2.1.3-1.x86_64.rpm
  2. 설정 변경
    1. vi /usr/share/grafana/conf/defaults.ini 
      1. data 디렉토리 변경
        1. data = /data02/grafana/data
      2. log 디렉토리 변경
        1. logs = /data02/grafana/log
      3. 기본 Port 변경(필요시에만...)
        1. http_port = 3033
      4. http_addr 수정
      5. domain 수정
      6. admin_passwd 변경
  3. 구동
    1. sudo service grafana-server start
    2. 구동시 자동 구동되도록 설정
      1. sudo /sbin/chkconfig --add grafana-server
  4. 관리 Web Console

InfluxDB (Distributed time series database for RealTime Aggregation) - version upgrade (0.9.3 -> 0.9.4.2)

InfluxDB를 Production Level 에서 사용해 보면, 초반에 느껴지는 강렬한 장점들 외에도, 보이지 않는 부분에 단점도 많이 발견 되는 것이 사실이다. 무엇보다, 아직 정식 1.0 버전이 아닌지라 아직 미완의 기능들이 존재하여, 더욱 그럴것이다.

그럼에도 불구하고 버전업이 빠르고, 여러가지 플러그인 프로젝트들도 활발하여, 어찌 되었든 매우 매력적인  NoSQL이다라는 느낌에는 변함이 없다.

0.9.3 을 사용한지 얼마 되지 않았지만, 0.9.4.2 로 현재 stable 버전이 올라가 있어(현재 0.9.5가 RC3 까지 나와 있긴 하지만..), 버전 업 적용을 해 보았다.

아쉽게도, 홈페이지 설치 메뉴얼은 아직 0.9.3 버전에서 갱신이 일부만 되어 있어 그데로 설치 했다가는 설치가 잘 되지 않는 현상이 존재한다.( 2015년 11월 17일 현재 CentOS 7.X 에서만..)

아래는 CentOS 7.X 에 /etc/init.d/ 가 아닌 systemctl 환경에서 에러가 나는 부분을 수동 구동 방식으로 해결한 설치 스크립트 세팅 방법이다. (개인적인 해결 방법이므로 비공식 구동 방법임.)


  1. 기본설치
    1. 기본적인 설치는 0.9.3과 동일하다.
      1. http://hoondongkim.blogspot.kr/2015/08/influxdb-distributed-time-series.html
  2. 클러스터 세팅
    1. 클러스터 세팅 방식이 2015년 11월 17일자 공식 홈페이지 상의 설치 문서로는 CentOS7.X 에서 구동이 되지 않는다. (0.9.3 스타일로 설명이 되어 있는데, 0.9.4.2 에서의 버그 이거나, 혹은 CentOS7.X 버전에서만의 버그 일 수 있음.)
    2. 그래서 아래처럼 해주었다.
      1. sudo vi /etc/opt/influxdb/influxdb.conf
        1. hostname = "localhost" 를 각 노드 hostname 으로 수정
        2. port 를 1번노드는 :8088 , 2번노드는 :9099 , 3번노드는 :10101 로 수정.
      2. 전체 노드에서 아래처럼 변경
        1. sudo vi /opt/influxdb/init.sh 에서 아래 수정
          1. USER=수행USER_ID (예, root)
          2. GROUP=수행GROUP_ID (예, root)
          3. PIDFILE 수정 후 Permission을 위 ID 로 Read/Wrtie 가능하게 수정.
          4. STDERR 도 경로 및 퍼미션 수정
        2. sudo vi /etc/opt/influxdb/influxdb.conf 에서 hinted-handoff 부분 dir 프로퍼티 수정
          1. 경로를 위 1에서 만든 USER_ID 가 억세스 가능한 디렉토리로 수정.
        3. root 가 아닌 경우 권한에 따라 go 랭귀지 소스를 tmp 디렉토리에서 빌드 수행시 에러 날 수 있음. go 소스 수행 권한이 있는 USER_Group 이어야 함.
      3. 1번 노드에서 아래처럼 구동
        1. 메뉴얼데로 하면 안됨.
        2. sudo /opt/influxdb/init.sh start
      4. 2번노드에서 아래처럼 INFLUXD_OPTS 값 변경 및 구동
        1. sudo vi  /opt/influxdb/init.sh 에서 INFLUXD_OPTS="-join hostname1:8088"
        2. sudo /opt/influxdb/init.sh start
      5. 3번노드에서 아래처럼 INFLUXD_OPTS 값 변경 및 구동
        1. sudo vi  /opt/influxdb/init.sh 에서 INFLUXD_OPTS="-join hostname1:8088,hostname2:9099"
        2. sudo /opt/influxdb/init.sh start
  3. 설치완료 확인
    1. 3Node 인 경우의 클러스터 구성 확인. 이후 동일한 방법으로 Node 추가 하고 클러스터 확인 하면 끝.
    2. WebConsole 확인. 아직 변화는 없넹....