본문 바로가기

⭐ AWS/AWS ELK

AWS ELK를 구성해보자(1)

1. 인스턴스를 생성하자

ELK 구성하는데 FreeTier 인스턴스를 생성하면 좀 성능상 부족할거 같긴 하나, 일단 해보자. 

프리티어 인스턴스를 생성한다.

2. 나머지 전부 기본값으로 생성하고, 보안그룹만 아래와 같이 새로운 보안그룹을 생성해 준다.

3. 키페어 다운로드 클릭 하여 키페어를 다운로드 하고 인스턴스 시작을 클릭하여 인스턴스를 시작한다.

4. 다운받은 key-pair 파일을 이용하여 SSH 접근까지 해보자.

5. EC2 생성과 SSH 접근이 끝났다.

이제 ElasticSearch를 설치해보자.

# 시간대 설정하기

sudo cp -p /usr/share/zoneinfo/Asia/Seoul /etc/localtime

# java를 설치한다

sudo yum install java-1.8.0-openjdk-devel.x86_64 -y
java -version
openjdk version "1.8.0_282"
OpenJDK Runtime Environment (build 1.8.0_282-b08)
OpenJDK 64-Bit Server VM (build 25.282-b08, mixed mode)

# ElasticSearch 설치하기

sudo vi /etc/yum.repos.d/elasticsearch.repo

- 아래의 내용을 입력해준다.

(입력 방법은 i 버튼을 클릭 후 아래 내용을 입력 > Esc 버튼 > : > wq > 실행하여 저장 및 정료)

[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

# yum을 사용해 설치한다.

sudo yum install elasticsearch-7.6.2 -y

# 엘라스틱 서치 서비스 시작과 상태, 종료 명령어는 아래와 같다.

sudo service elasticsearch start
sudo service elasticsearch status
sudo service elasticsearch stop

# 호스트명 변경

클러스터를 구성할 때 편의상 호스트명을 변경해주는데 변경하는 방법을 알아보자.

변경하게 되면 앞으로 ELK 연동과정에서 호스트명을 변경된 호스트명으로 적어줘야한다.

예로 zzanggu-master로 변경해보자.

sudo vi /etc/sysconfig/network
NETWORKING=yes
NOZEROCONF=yes
HOSTNAME=zzanggu-master

# 2번째의 IP는 AWS 인스턴스의 프라이빗 주소이다.

sudo vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
172.16.0.25 zzanggu-master
::1         localhost6 localhost6.localdomain6

#  기존에 있던 호스트명을 아래와 같이 바꿔준다.

sudo vi /etc/hostname
zzanggu-master

# 리부팅 후 1분정도 뒤에 다시 접속한다. (바로 접속이 안될수 있다, 1분정도 기다렸다가 접속하자!)

sudo reboot

# 이제 엘라스틱 서치가 잘 설치되었는지 확인한다.

sudo service elasticsearch start
curl localhost:9200

확인하니, 아래와 같은 이유로 실행 안됨, 구글링 해보니 인스턴스의 메모리 부족으로 인해 실행이 안된것이라고 나옴...

Aug 14 16:47:41 zzanggu-master elasticsearch[3269]: OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in ve...lease.
Aug 14 16:47:41 zzanggu-master elasticsearch[3269]: OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c5330000, 98...no=12)
Aug 14 16:47:41 zzanggu-master elasticsearch[3269]: at org.elasticsearch.tools.launchers.JvmErgonomics.flagsFinal(JvmErgonomics.java:123)
Aug 14 16:47:41 zzanggu-master elasticsearch[3269]: at org.elasticsearch.tools.launchers.JvmErgonomics.finalJvmOptions(JvmErgonomics.java:88)
Aug 14 16:47:41 zzanggu-master elasticsearch[3269]: at org.elasticsearch.tools.launchers.JvmErgonomics.choose(JvmErgonomics.java:59)
Aug 14 16:47:41 zzanggu-master elasticsearch[3269]: at org.elasticsearch.tools.launchers.JvmOptionsParser.main(JvmOptionsParser.java:95)
Aug 14 16:47:41 zzanggu-master systemd[1]: elasticsearch.service: main process exited, code=exited, status=1/FAILURE
Aug 14 16:47:41 zzanggu-master systemd[1]: Failed to start Elasticsearch.
Aug 14 16:47:41 zzanggu-master systemd[1]: Unit elasticsearch.service entered failed state.
Aug 14 16:47:41 zzanggu-master systemd[1]: elasticsearch.service failed.
Hint: Some lines were ellipsized, use -l to show in full.

# 프리티어 인스턴스를 지우고, 신규 인스턴스를 생성하고 위의 작업을 다시시작...

인스턴스를 종료하자.

# 사양을 높인 인스턴스를 다시 생성하자.

- t3a.large: 2 vCPU / 16GB
- OS: Amazon Linux2 AMI 
- EBS: 200GB

# 인스턴스를 신규 생성 후 위의 내용을 재 실행하여 ElasticSearch를 실행한 결과,

아래와 같이 정상적으로 실행된것을 확인 할 수있다.

# 엘라스틱 서치 설정파일 수정

이제 엘라스틱 서치 설정파일을 수정해준다.

sudo vi /etc/elasticsearch/elasticsearch.yml
node.name: ${HOSTNAME}

# bootstrap.memory_lock을 주석 해제한다. 이를 설정하면 엘라스틱서치가 너무 많은 메모리를 사용하지 않게 해준다.

# 네트워크 설정을 해준다.

어디서나 접근할 수 있게 0.0.0.0을 설정한다.

# 엘라스틱 서치가 처음 실행되는 노드를 명시해준다.

# 이제 엘라스틱 서치 서비스를 재시작하고 다시 잘 실행되는지 확인한다.

아래와같이 화면에 나오면 잘 설정된 것이라 볼 수 있다.

# 외부에서 접근 하기

- EC2 인스턴스 > 보안그룹 탭으로 이동하여 설정을 진행하자.

- Edit Inbound rules를 클릭하여 Inbound 설정을 진행하자.

- 우리는 테스트 이니 아래와 같이 제약조건없이 설정을 진행하자.

# 이제 외부접속도 되는지 확인해보자.

AWS의 공인 IP주소:9200을 입력하면 접속이 되는 것을 확인할 수 있다.

# 참고자료

만일 AWS처럼 클라우드환경이 아니라면 서버에 접속한 뒤 해당포트에 대한 방화벽을 열어줘야한다.

방화벽 열어주는 리눅스 명령어는 아래와 같다.

> firewall-cmd --permanent --zone=public --add-port=9200/tcp 
> firewall-cmd --reload 
> firewall-cmd --list-ports

> 다음시간에는 ElasticSearch 옵션변경 부분부터 시작해보자.

'⭐ AWS > AWS ELK' 카테고리의 다른 글

AWS ELK를 구성해보자(3)  (0) 2021.08.14
AWS ELK를 구성해보자(2)  (0) 2021.08.14