본문 바로가기

Back-End

[작성중]elasticsearch putty

반응형

dkf
\

이전에 연결하는데에 애먹다가 연결에 첫 성공했을 떄 화면. 3번이나 로그인을 실패했었다고 친절하게 알려준다 (...)

tar xfz 압축파일명

tar xfzv 압축파일명 : 압축과정 출력됨

-> 스샷 찍으려고 했는데 tar xfzv에 묻혀서 사라졌음..

 

 

파일들을 files 디렉터리 내로 옮김

 

 

 

폴더명 변경하기

 

bin, lib logs 확인하기. logs는 현재 없음(실행하지 않았기 때문) 그리고 data라는 폴더도 아직은 없다.

 

elasticsearch 실행하기

 

다른 터미널을 열고 host를 동일하게 하여 접속하고, curl -XGET localhost:9200 을 입력하여 elasticsearch가 잘 실행되고 있는지 확인한다. (-XGET: 데이터 가져오기)

  • 9200: client와 통신
  • 9300: cluster 간에 데이터 통신

 

ctrl+c -> 프로세스 종료 (=elasticsearch 종료)

프로세스 종료하고 9200 포트 확인했을 때

 

 

bin/elasticsearch.yml 기능 살펴보기

vi bin/elasticsearch.yml 입력하면 여러가지 내용들이 뜸

클러스터나 노드 이름을 설정할 수 있다.

클러스터 이름 default: elasticsearch

노드 이름 default: 호스트이름

 

 

 

path.data: 데이터를 저장하는 경로. 현재는 /path/to/data되어 있음

실제 운영환경에서는 별도의 elasticsearch를 실행하는 프로그램, elasticsearch가 저장되는 공간을 구분하는 것이 안전하다. 그래야 디스크도 따로 관리할 수 있고 elasticsearch가 프로그램에 덮여졌을 때를 대비하여 디렉터리를 따로 관리하는 것이 좋다.

 

network.host: 변경하면 외부에서도 접근할 수 있다.

하지만 실제 IP주소를 넣는 순간, elasticsearch는 여러가지 부트스트랩 체크를 한다고 하는데 ... 나중에 다시 본다고 함

 

http.port

default는 9200이지만 실제 환경에서는 바꿔주는 게 좋다. 디폴트값은 해커들에게 공격당할 수도 있기 때문.

 

discovery.seed_hosts

다른 호스트를 찾을 때, 찾을 네트워크 주소 입력

 

clust.initial_master_nodes 

노드가 여러 개일 경우, 첫 번째 마스터 후보가 될 노드들을 작성

 

 

 

우선은 클러스터 이름과 노드 이름을 작성하였으므로 이 상태에서 저장을 해보자. (:wq)

그리고 다시 실행

$ bin/elasticsearch

다른 터미널에서 다시 9200 포트를 확인해보면,

노드 이름과 클러스터 이름이 변경됨을 확인할 수 있음

 

$ls es-715/logs

다시 logs 폴더를 확인하면 여러가지 파일들이 생성되어 있음

여기서 elasticsearch.log는 처음 실행했을 때 클러스터 디폴트 이름 값으로 실행되었을 때 찍힌 로그들이고,

es-cluster-1.log는 재실행하고 찍힌 로그들임.

 

es-clust-1.log를 확인해보자

$ tail -f logs/es-cluster-1.log

왼쪽이 elasticsearch 프로세스 실행 중인 로그 화면,

오른쪽은 tail -f logs/es-cluster-1.log를 입력하여 출력된 화면

콘솔이 그대로 찍히는 것을 확인할 수 있다.

 

실제 실행할 때는 꺼지면 안되므로 백그라운드로 실행해야 한다.

-d : elasticsearch가 demon으로 실행됨

-p

 

아무것도 안뜨고 백그라운드로 실행됨

이후에 로그를 확인하고 싶다면,

$ tail -f logs/es-cluster-1.log 를 입력하여 출력되는 로그를 보면 된다.

 

 

(➕)

tail : 파일 뒷부분을 보여주는 명령어

tail -f : 실시간으로 파일 내용을 보여주는 명령어

 

 

백그라운드로 실행 중인 elasticsearch 프로세스 종료하기

$ ps -ef | grep elasticsearch

elasticsearch 프로세스를 찾았음. 30003번 프로세스로 실행 중임.

$ kill 실행중인프로세스번호

입력하고 다시 ps -ef | grep elasticsearch로 확인하면 프로세스가 종료된 것을 볼 수 있음

 

하지만 이 방법은 불편하다

$ bin/elasticsearch -d -p es.pid

es.pid라는 이름의 파일을 생성

그리고 파일의 내용을 출력

$ cat es.pid

30271. 이는 elasticsearch가 실행되는 프로세스 아이디임.

 

그리고

$ kill `cat es.pid`

작성하여 프로세스 종료시킴. 이렇게 하면 일일이 ps -ef | grep .. 로 프로세스 아이디를 확인할 필요없이 한 줄의 명령어로 바로 종료 가능.

 

그리고 `cat espid` 같은 것도 치기 귀찮으니까 이걸 걍 파일로 만들어버린다

 

$ vi start.sh

:wq

 

$ vi stop.sh

:wq

 

파일 생성 확인.

 

근데 파일은 생성됐지만, 실행시키는 권한이 없음.

$ ls -la

총 10자의 구분자가 있음

앞의 d : 디렉터리임을 나타냄

이후 3개: 파일의 소유자 (nno3onn)

이후 3개: 그룹 사용자

이후 3개: 모든 사용자

 

drwxr-xr-x. 인 경우

해당 파일은 디렉터리이고,

소유자는 read, write, execute 권한이 모두 있으며,

같은 그룹에 있는 사람들은 read, execute,

모든 사람들은 execute 권한만 있음

 

그래서 start와 stop은 보면 실행 권한이 아무도 없다. 그래서 실행 권한을 바꿔줘야 함.

 

 

실행 권한은 chmod (change mode) 명령어를 통해 가능함.

$ chmod 755 *.sh

그리고 다시 보면 파일 색이 변경됨. 이제 둘다 실행권한이 생겼다

 

$ ./start.sh

그리고 

$ curl localhost:9200

elasticsesarhc가 실행되고 있음을 확인할 수 있음

 

다시 종료 후 확인하기

$ ./stop.sh

$ curl localhost:9200

 

 

 


elasticsearch 환경 설정

 

(1) jvm.options

-Xmslg

-Xmxlg

얘네는 elasticsearch가 사용할 java heap 메모리를 설정함. 

default는 1gb인데 데이터를 많이 사용할 경우 늘려줘야함.

자바의 object pointer 한계값이 있으므로 30gb 이상은 설정하지ㅏ 않도록 한다.

 

$ vi config/jvm.options

default값은 1gb이라고 했는데 이거 먼저 확인해보자.

 $ bin/elasticsearch

elasticsearch 실행함

그러면 heap size [1.0gb]가 뜬다.

근데 heap size가 30gb가 넘어가면 'compressed ordinary object pointers'가 false로 변경됨. 그렇게 되면 문제되므로 30gb 이상 사용하지 말자.

 

 

다시 jvm.options 들어와서 heap size 설정해주자

두 값은 웬만하면 동일하게 작성하면 됨

:wq

 

그리고 다시 elasticsearch 실행해서 바꼈는지 확인하자

 

 

 

(2) elasticsearch.yml

yml 문법 사용. 

key: value

파이썬처럼 띄어쓰기가 중요함

 

 

 

 

 

 

 

반응형

'Back-End' 카테고리의 다른 글

redis란?  (0) 2022.03.08
logger  (0) 2022.03.07
Elasticsearch 설명서와 함께하는 Elasticsearch 기본 개념 살펴보기  (0) 2021.10.20
Elastic 가이드북과 함께 Elasticsearch 공부하기  (0) 2021.10.19
JavaScript TDD  (0) 2021.09.29