Elasticsearch Head 플러그인 구축 가이드

Node.js 환경 준비

Elasticsearch Head는 브라우저 기반 클러스터 관리 도구로, 정상 동작을 위해 Node.js 런타임이 필요합니다. Node.js는 Chrome V8 엔진 기반의 서버사이드 JavaScript 실행 환경입니다.

Node.js 바이너리 설치

다음 명령어로 Node.js를 접 설치합니다.

wget https://nodejs.org/dist/v8.1.0/node-v8.1.0-linux-x86.tar.gz
tar -zxvf node-v8.1.0-linux-x86.tar.gz
mv node-v8.1.0-linux-x86 /usr/local/nodejs-v8.1.0

# 심볼릭 링크 생성 (npm, node)
ln -s /usr/local/nodejs-v8.1.0/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm
ln -s /usr/local/nodejs-v8.1.0/bin/node /usr/local/bin/node

# 환경변수 등록
echo 'export PATH=$PATH:/usr/local/nodejs-v8.1.0/bin' >> /etc/profile
source /etc/profile

# 설치 확인
node --version
npm --version

설치 시 오류 대응

오류 1: ELF 인터프리터 미발견

/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory

64비트 운영체제에 32비트 프로그램을 설치한 경우 발생합니다.

yum install glibc.i686

오류 2: 공유 라이브러리 로드 실패

node: error while loading shared libraries: libstdc++.so.6: cannot open shared object file

해당 라이브러리를 제공하는 패키지를 검색 후 설치합니다.

yum whatprovides libstdc++.so.6
yum install libstdc++-4.4.7-23.el6.i686

npm 레지스트리 최적화

국내 환경에서 패키지 다운로드 속도를 개선하려면 미러 서버를 지정합니다.

npm config set registry https://registry.npmmirror.com
npm config get registry

Head 소스코드 빌드

필요한 컴파일 도구를 설치하고 저장소를 클론합니다.

yum install -y gcc-c++ make git
git clone https://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install

서버 바인딩 설정

Gruntfile.js 수정

Head 서버가 특정 IP에서 수신하도록 Gruntfile.js를 편합니다.

vi /opt/tools/elasticsearch-head/Gruntfile.js

connect.server.options 블록에 hostname 항목을 추가합니다.

connect: {
    server: {
        options: {
            hostname: '192.168.140.130',
            port: 9100,
            base: '.',
            keepalive: true
        }
    }
}

app.js 수정

_site/app.js 내 Elasticsearch 엔드포인트를 변경합니다.

변경 전변경 후
http://localhost:9200http://192.168.140.130:9200

Elasticsearch CORS 설정

Elasticsearch 설정 파일에 교차 출처 리소스 공유를 허용합니다.

su - es
vi /opt/elasticsearch/config/elasticsearch.yml

# 다음 내용 추가
http.cors.enabled: true
http.cors.allow-origin: "*"

서비스 기동

Elasticsearch 재시작

es 계정으로 실행합니다.

ps -ef | grep elasticsearch | grep bootstrap | awk '{print $2}' | xargs kill -9
nohup /opt/elasticsearch/bin/elasticsearch > /dev/null 2>&1 &

Head 서버 실행

root 계정으로 Grunt 서버를 시작합니다.

/opt/elasticsearch-head/node_modules/grunt/bin/grunt server

정상 기동 시 다음 메시지가 출력됩니다.

Running "connect:server" (connect) task
Waiting forever...
Started connect web server on http://192.168.140.130:9100

웹 인터페이스 접속

브라우저에서 다음 주소로 접속하여 클러스터 상태를 확인합니다.

http://192.168.140.130:9100/

태그: elasticsearch Elasticsearch Head Node.js Grunt CORS

6월 20일 00:55에 게시됨