Ubuntu ElasticSearch 설치

정명진·2023년 2월 13일
0

실제 서버에 ELK 구축하기

프리티어의 한계상 ElasticSearch, Logstash, Kibana를 각각 인스턴스 1개씩 생성하겠습니다.

우선 ElasticSearch를 먼저 설치하겠습니다. 새 인스턴스라 생각하고 자바 설치부터 진행하겠습니다.

sudo apt-get install openjdk-8-jdk

자바 설치가 끝나고 ElasticSearch를 설치합니다.

[1] wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

[2] sudo sh -c 'echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" > /etc/apt/sources.list.d/elastic-7.x.list'

[3] sudo apt-get update

[4] sudo apt-get install elasticsearch

이러면 설치가 끝납니다. 하지만 프리티어를 사용하고 있다면 스왑 메모리 설정, 힙 사이즈 설정이 필요합니다. 그리고 외부 통신이 필요하기 때문에 network.host도 변경해야 합니다. 우선 스왑 메모리 설정부터 진행하겠습니다.

프리티어 ElasticSearch 스왑 메모리 설정

기본적으로 프리티어는 메모리가 1G입니다. 하지만 ElasticSearch를 정상적으로 사용하려면 최소 4G의 메몰가 필요합니다. 실제로 스왑 메모리를 설정하지 않고 실행시 EC2가 죽는 현상이 발생합니다... 메모리가 넉넉한 분들이라면 스왑 메모리 설저이 필요하지 않지만 메모리가 부족하다면 다음 내용을 진행해주시길 바랍니다.

[1] sudo mkdir /var/spool/swap
[2] sudo touch /var/spool/swap/swapfile
[3] sudo dd if=/dev/zero of=/var/spool/swap/swapfile count=2048000 bs=1024
[4] sudo chmod 600 /var/spool/swap/swapfile
[5] sudo mkswap /var/spool/swap/swapfile
[6] sudo swapon /var/spool/swap/swapfile
[7] sudo vi /etc/fstab
# 맨 마지막줄에 다음 내용 추가후 저장
/var/spool/swap/swapfile none swap defaults 0 0
[8] sudo free -h
# 이렇게 치면 스왑된 메모리가 보일것입니다. 2048000로 설정했기 때문에 약 2G의 메모리가 생긴셈입니다.

ElasticSearch 설정 변경

ElasticSearch의 설정사항은 /etc/elasticsearch 에서 변경할 수 있습니다. 하지만 기본 유저의 계정으로 접속할 수 없고 elasticsearch 계정으로만 접속이 가능합니다. 따라서 다음과 같은 과정이 필요합니다.

[1] chown -R elasticsearch:elasticsearch /usr/share/elasticsearch
[2] chown -R elasticsearch:elasticsearch /var/lib/elasticsearch
[3] chown -R elasticsearch:elasticsearch /var/log/elasticsearch
[4] chown -R elasticsearch:elasticsearch /etc/elasticsearch

그리고 나서 계정을 변경합니다.

sudo su elasticsearch -s /bin/bash

이제 힙 사이즈를 변경합니다.

[1] vi jvm.options

# 내리다 보면 힙사이즈 설정 부분이 있습니다. 주석을 해제하고 
-Xms256m
-Xmx256m
또는
-Xms512m
-Xmx512m
로 설정해주면 됩니다.

이제 ElasticSearch 설정을 변경이 필요합니다. 여러 항목이 있을텐데 다음과 같은 부분의 내용을 사용자의 환경에 맞게 세팅해줍니다.

network.bind_host: 0.0.0.0

http.port: 9200

discovery.seed_hosts: ${HOSTNAME}

cluster.initial_master_nodes: ${HOSTNAME}
  1. network.bind_host: 외부에서 접근이 가능하게 설정을 변경합니다.
  2. http.port: 외부 접근 포트를 설정합니다.
  3. discovery.seed_hosts: 호스트 네임을 설정합니다. 해당 값 설정 안하면 에러가 발생할 수 있습니다.
profile
개발자로 입사했지만 정체성을 잃어가는중... 다시 준비 시작이다..

0개의 댓글