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:9200 | http://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/