Elasticsearch 설치 (2 node cluster)
사전 준비
시스템 사용자 생성 및 디렉토리 설정
시스템 사용자 생성
useradd elastic -g bigdata -u 9200
디렉토리 권한 설정
다음과 같이 엔진, 로그, 데이터파일 경로를 구분하여 설치를 진행한다.
- elasticsearch 엔진 경로
- /app/elasticsearch
- elasticsearch 엔진 로그 경로
- /logs/elasticsearch
- elasticsearch 데이터파일 (인덱스) 경로
- /data/elasticsearch
chown elastic:bigdata /app/elasticsearch
chown elastic:bigdata /logs/elasticsearch
chown elastic:bigdata /data/elasticsearch
JDK 설치
OpenJDK 설치
OpenJDK binary 준비
아래 URL에서 설치하고자 하는 버전의 Java Development Kit 설치 (jdk-8u181-linux-x64.tar.gz 기준으로 설치 진행)
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
JDK 설치
다음 경로에 바이너리를 압축해제하고, symbolic link 를 생성한 뒤 사용할 예정.
- 설치 경로
- /app/jdk/1.8.0_181
JDK 바이너리 압축 해제
tar -xvzf ~/jdk-8u181-linux-x64.tar.gz -C /app/jdk/.
mv /app/jdk/jdk1.8.0_181 /app/jdk/1.8.0_181
symbolic link 생성
cd /app/jdk
ln -s ./1.8.0_181/* ./.
Linux 커널 설정
vi /etc/sysctl.conf
파일에 다음 내용 추가
vm.max_map_count = 262144
max_map_count
프로세스가 사용할 수 있는 메모리 맵 영역의 최대 수
기본값은 65530
sysctl -p
명령으로 변경 사항 적용
Linux ulimit 설정
vi /etc/security/limits.conf
파일에 다음 내용 추가
elastic soft nofile 65536
elastic hard nofile 65536
elastic soft memlock unlimited
elastic hard memlock unlimited
ElasticSearch 설치
ElasticSearch binary 준비
아래 URL에서 설치하고자 하는 버전 선택 후 다운로드 (6.2.4 버전 기준으로 설치 진행)
https://www.elastic.co/downloads/past-releases
ElasticSearch binary 압축 해제 및 Symbolic Link 생성
tar -xvzf elasticsearch-6.2.4.tar.gz -C /app/elasticsearch/.
mv /app/elasticsearch/elasticsearch-6.2.4 /app/elasticsearch/6.2.4
cd /app/elasticsearch
ln -s ./6.2.4/* ./.
ElasticSearch 설정
node5.big, node6.big 두 개의 멤버 노드를 갖는 클러스터를 구성할 예정
vi /app/elasticsearch/config/elasticsearch.yml
파일에 다음 내용 추가
@es-node-1
cluster.name: elasticsearch-cluster
node.name: es-node-1
path.data: /data/elasticsearch
path.logs: /logs/elasticsearch
network.host: 192.168.179.81
http.port: 9200
discovery.zen.ping.unicast.hosts: ["node5.big", "node6.big"]
discovery.zen.minimum_master_nodes: 2
@es-node-2
cluster.name: elasticsearch-cluster
node.name: es-node-2
path.data: /data/elasticsearch
path.logs: /logs/elasticsearch
network.host: 192.168.179.82
http.port: 9200
discovery.zen.ping.unicast.hosts: ["node5.big", "node6.big"]
discovery.zen.minimum_master_nodes: 2
elastic 사용자 profile 설정
vi ~/.bash_profile
파일에 다음 내용 수정 또는 추가.
# JDK ENV
export JAVA_HOME=/app/jdk
export PATH=$JAVA_HOME/bin:$PATH
# ELASTICSEARCH ENV
export PATH=/app/elasticsearch/bin:$PATH
#export ES_PATH_CONF=/path/to/my/config # 이 변수를 설정하면 바이너리 내 기본 경로가 아닌 다른 경로의 config 파일을 참조할 수 있다.
ElasticSearch 실행 및 종료
실행
/app/elasticsearch/bin/elasticsearch -p /app/elasticsearch/elasticsearch_pid &
종료
kill cat /app/elasticsearch/elasticsearch_pid
ElasticSearch 설치 확인
$ curl -X GET http://192.168.179.81:9200/_cluster/health?pretty
{
"cluster_name" : "elasticsearch-cluster",
"status" : "green",
"timed_out" : false,
"number_of_nodes" : 2,
"number_of_data_nodes" : 2,
"active_primary_shards" : 62,
"active_shards" : 124,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0,
"delayed_unassigned_shards" : 0,
"number_of_pending_tasks" : 0,
"number_of_in_flight_fetch" : 0,
"task_max_waiting_in_queue_millis" : 0,
"active_shards_percent_as_number" : 100.0
}