centos7 기준입니다.

호스트네임이 node1~4인 4대의 서버에 엘라스틱서치를 설치해보겠습니다.

각 서버에 java 8버전이 설치되었음을 가정합니다.

엘라스틱서치 7버전은 java 8버전이 호환되고,

8버전 부터 java 버전이 높아집니다.

 

1. 사전 준비:

action server: node1~4

user: root

pwd: -

cmd:

# 프로세스가 가질 수 있는 최대 메모리 맵 영역 수를 늘려줍니다.
# 수정 하지 않고 엘라스틱 서치 기동 시 262144 만큼의 수가 설정되어야 한다는 에러가 발생합니다.
vi /etc/sysctl.conf
vm.max_map_count=262144
sysctl -p

# 엘라스틱서치 압축 파일 다운로드 및 해제
cd /opt/apps
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.5.1-linux-x86_64.tar.gz
tar xvfz elasticsearch-7.5.1-linux-x86_64.tar.gz

# 실행 계정 hadoop 통일
chown -R hadoop:hadoop ./elasticsearch-7.5.1/

# 엘라스틱서치에 사용될 데이터 저장 경로 및 로그 위치 설정
mkdir -p /data/elasticsearch/data
mkdir -p /data/logs/elasticsearch

# 권한 부여
chown -R hadoop:hadoop /data/elasticsearch
chown -R hadoop:hadoop /data/logs/elasticsearch

# 계정 전환 및 경로 이동
su - hadoop
cd /opt/apps/elasticsearch-7.5.1/

 

2. 설정 파일 수정

action server: node1~4

user: hadoop

pwd: /opt/apps/elasticsearch-7.5.1

cmd:

# 기존 설정 파일을 백업
mv config/elasticsearch.yml config/elasticsearch.yml_backup

# 새 설정 파일 작성
vi config/elasticsearch.yml

# 클러스터명
cluster.name: "es-cluster"

# 클러스터 내부에서 노드를 식별하기위한 이름
# 서버마다 다르게 설정해야합니다. 꼭 서버의 호스트명일 필요는 없습니다.
node.name: "es-node1" // 각 서버별로 es-node1~4

# ES가 실행되는 서버의 ip 주소
#_local_ : 루프백 주소 127.0.0.1 과 같습니다. Default값
#_site_ : 로컬 네트워크 주소로 설정, 실제로 클러스터링 구성시 주로 설정하는 값
network.host: ["_local_"", ""_site_"]

# 클러스터 구성을 위해 바인딩 할 원격 노드의 IP 또는 도메인 주소를 배열 형태로 입력
# 실제 서버의 호스트명입니다.
discovery.seed_hosts: ["node1","node2","node3","node4"]

# 클러스터가 최초 실행될 때 명시된 노드들을 대상으로 마스터 대상으로 마스터 노드를 선출합니다.
# ES가 인식하는 노드의 이름입니다.
cluster.initial_master_nodes: ["es-node1","es-node2","es-node3","es-node-4"]

# 데이터가 저장될 경로입니다.
path.data: /data/elasticsearch/data

# 로그가 저장될 경로입니다.
path.logs: /data/logs/elasticsearch

# 엘라스틱 서치가 사용할 메모리 값과 관련 로그 파일 경로를 설정합니다.
vi config/jvm.options
# 수정
-Xms4g
-Xmx4g

# 아래 세줄 찾아서 수정
-XX:HeapDumpPath=/data/elasticsearch/data
-XX:ErrorFile=/data/logs/elasticsearch/hs_err_pid%p.log
8:-Xloggc:/data/logs/elasticsearch/gc.log

 

3. 기동 및 확인

action server: node1~4

user: hadoop

pwd: /opt/apps/elasticsearch-7.5.1

cmd:

# 기동
./bin/elasticsearch -d

# 포트가 열려있는지 확인합니다. 기본 포트로 설정하였습니다.
netstat -ntlp | grep 9200
netstat -ntlp | grep 9300

# 해당 명령어로 아래와 같은 결과 값이 나온다면 성공입니다.
curl -X GET http://localhost:9200

# 결과
{
  "name" : "es-node1",
  "cluster_name" : "es-cluster",
  "cluster_uuid" : "rnEVH-uyQY-wlYNkCI4PJA",
  "version" : {
    "number" : "7.5.1",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "3ae9ac9a93c95bd0cdc054951cf95d88e1e18d96",
    "build_date" : "2019-12-16T22:57:37.835892Z",
    "build_snapshot" : false,
    "lucene_version" : "8.3.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

 

잘못된 정보가 있다면 말씀 부탁드립니다.

감사합니다.

반응형

+ Recent posts