소소한 컴퓨터 이야기

[Elastic Search] VM Workstation을 이용한 Elastic Search 사용 (1)

by Cori

1. elastic search 다운로드, 3개 노드 모두 적용

$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.14.1-linux-x86_64.tar.gz

$ wget https://artifacts.elastic.co/downloads/kibana/kibana-7.14.1-linux-x86_64.tar.gz

$ tar xfz elasticsearch-7.14.1-linux-x86_64.tar.gz

$ tar xfz kibana-7.14.1-linux-x86_64.tar.gz

$ mkdir files
$ mv *.tar.gz files/

$ mv elasticsearch-7.14.1 es-714

$ mv kibana-7.14.1-linux-x86_64 kb-714

 

2. gedit 명령, 3개 노드 모두 적용 

1) jvm.options 수정 

-> elastic search: Java로 되어 있음 .. Java Virtual Machine에서 사용하는 메모리의 Size 지정 

$ gedit ~/es-714/config/jvm.options

 

· Xms4g -> Xms1g로 수정 (주석 해제)  -> 대시보드 사용 시 문제 생길 경우를 대비해 다시 주석처리했음 

· Xmx4g -> Xmx1g로 수정 (주석 해제)  -> 마찬가지로 다시 주석처리 

 

2) limits.conf 수정   

-> 리눅스 설정 파일 .. 

$ sudo gedit /etc/security/limits.conf

 

맨 아래에 다음과 같이 추가 (노드 별)

· elastic-3 soft nofile 65535

· elastic-3 hard nofile 65535

· elastic-3 hard nproc 65535

· elastic-3 soft nproc 65535

· elastic-3 soft memlock unlimited

· elastic-3 hard memlock unlimited

3) 20-nproc.conf 파일 수정

$ sudo gedit /etc/security/limits.d/20-nproc.conf

 

soft nproc 4096 자리 (<- 삭제)에 다음과 같이 추가 

* soft nofile 65535

* hard nofile 65535

* hard nproc 65535

* soft nproc 65535

* soft memlock unlimited

* hard memlock unlimited

4) sysctl.conf 파일 수정 

$ sudo gedit /etc/sysctl.conf

-> 맨 아래에 vm.max_map_count=262144 추가 

3. Reboot 수행 

$ sudo shutdown -r now

 

4. yml 파일 수정, 모든 노드 

0) yml 파일 open

$ gedit ~/es-714/config/elasticsearch.yml

 

1) Node1 

$ cluster.name: "es-cluster"

$ node.name: "node-1"

$ # network.host: "192.168.56.101"

$ network.host: ["_local_", "_site_"]

$ discovery.seed_hosts: ["192.168.56.101", "192.168.56.102", "192.168.56.103"]

$ cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]

$ xpack.security.enabled: true

$ xpack.security.transport.ssl.enabled: true

$ xpack.security.transport.ssl.keystore.path: certs/es-cluster.p12

$ xpack.security.transport.ssl.truststore.path: certs/es-cluster.p12

2) Node 2

$ cluster.name: "es-cluster"

$ node.name: "node-2"

$ # network.host: "192.168.56.102"

$ network.host: ["_local_", "_site_"]

$ discovery.seed_hosts: ["192.168.56.101", "192.168.56.102", "192.168.56.103"]

$ cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]

$ xpack.security.enabled: true

$ xpack.security.transport.ssl.enabled: true

$ xpack.security.transport.ssl.keystore.path: certs/es-cluster.p12

$ xpack.security.transport.ssl.truststore.path: certs/es-cluster.p12

3) Node 3 

$ cluster.name: "es-cluster"

$ node.name: "node-3"

$ # network.host: "192.168.56.103"

$ network.host: ["_local_", "_site_"]

$ discovery.seed_hosts: ["192.168.56.101", "192.168.56.102", "192.168.56.103"]

$ cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]

$ xpack.security.enabled: true

$ xpack.security.transport.ssl.enabled: true

$ xpack.security.transport.ssl.keystore.path: certs/es-cluster.p12

$ xpack.security.transport.ssl.truststore.path: certs/es-cluster.p12

5. 포트 열기 

-> Elastic Search와 Kibana에서 접속을 하기 위해서는, 해당하는 포트가 열려있어야 함.. Windows에서는 자동으로 열림 ! 

* Elastic Search의 경우 3개의 노드 어디에서든지 사용할 수 있도록 설정 

 

0) 관리자 계정으로 진입

$ sudo su

1) 포트 오픈, 3개의 노드

$ firewall-cmd --permanent --zone=public --add-port=9200/tcp

$ firewall-cmd --permanent --zone=public --add-port=9300/tcp

2) 포트 리로드, 포트 현황 확인 

$ firewall-cmd --reload

$ firewall-cmd --list-all

3) 포트 오픈, 3번쨰 노드만 

-> Kibana는 5601 포트 사용하기 때문에, Kibana는 3번째 노드에서만 실행할 예정

$ firewall-cmd --permanent --zone=public --add-port=5601/tcp  

4) 포트 리로드, 포트 현황 확인 

$ firewall-cmd --reload

$ firewall-cmd --list-all

 

6. 보안 설정, 첫 번째 노드에만 적용

0) ca 파일 생성 

$ ~/es-714/bin/elasticsearch-certutil ca

-> enter, passwd 입력 시 bigdata 

 

* 해당 과정을 마치면, es-714 폴더 내부에 'elastic-stack-ca.p12' 파일이 생성됨 

1) 대칭키를 위한 폴더 생성 

$ mkdir ~/es-714/config/certs

2) 명령어 수행 

노드들에 대한 ip 정보를 주고, 노드들이 서로 인증될 것임을 알려줌 (비밀번호 2번 모두 bigdata 입력) 

 

* 명령어 길이가 길지만, 한 줄에 입력한다. 

$ ~/es-714/bin/elasticsearch-certutil cert --ca  elastic-stack-ca.p12 --ip 192.168.56.101,192.168.56.102,192.168.56.103 --out ~/es-714/config/certs/es-cluster.p12

3) 생성 파일 조회 

$ ls ~/es-714/config/certs/

-> certs 디렉토리에 'es-cluster.p12' 파일이 생성되어 있으면 완료 ! 

4) 배포키 받을 준비, 디렉토리 생성 (2번과 3번 노드)

$ mkdir ~/es-714/config/certs

5) 1번 노드에서 2번과 3번 노드에 키 배포 

$ scp -r ~/es-714/config/certs/* elastic-2@192.168.56.102:~/es-714/config/certs/

$ scp -r ~/es-714/config/certs/* elastic-3@192.168.56.103:~/es-714/config/certs/

'yes', 'bigdata' 입력 

 

7. Key Store 생성, 모든 노드에 적용 

0) keystore 생성 

$ ~/es-714/bin/elasticsearch-keystore create

1) 보안 관련 명령어 수행  

$ ~/es-714/bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password

$ ~/es-714/bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password

2) 잘 만들어졌는지 확인 

$ ~/es-714/bin/elasticsearch-keystore list

이렇게 나온다.

8. 모든 노드에서 Elastic Search 실행 

0) Elastic Search 실행, 모든 노드에서 수행 

$ ~/es-714/bin/elasticsearch

1) password interactive, 노드 1에서만 수행

$ ~/es-714/bin/elasticsearch-setup-passwords interactive  

2) 노드 정보 조회, 아무 노드에서나 조회 가능 

$ curl "elastic-1:9200/_cat/nodes?v" -u elastic:bigdata

* 별표가 떠있는게 마스터 노드이며, 마스터는 랜덤으로 설정 (현재 마스터 노드 = 3번 노드) 

 

3) 어떤 노드에서든 Elastic Search에 쿼리를 던질 수 있음 

-> 코디네이터 노드는 없고, 3개 노드가 동기화되어 있기 때문에 어디서든 Elastic Search에 쿼리를 던질 수 있음 

$ curl -XGET elastic-1:9200 -u elastic:bigdata

$ curl -XGET elastic-2:9200 -u elastic:bigdata

$ curl -XGET elastic-3:9200 -u elastic:bigdata

9. Kibana 실행하기, 3번 노드에서만 실행 

0) Kibana yml 파일 수정

$ gedit ~/kb-714/config/kibana.yml

 

yml 파일 맨 위에 다음과 같이 입력 

· server.host: "192.168.56.103"

· server.name: "my-kibana"

· elasticsearch.hosts: ["http://192.168.56.103:9200"]

· elasticsearch.username: "kibana_system"

1) keystore 생성 

$ ~/kb-714/bin/kibana-keystore create

$ ~/kb-714/bin/kibana-keystore add elasticsearch.password

 

2) keystore 조회 

$ ~/kb-714/bin/kibana-keystore list

-> elasticsearch.password가 조회된다. 

 

10. Kibana 실행하기, 노드 3번에서만 수행 

0) Firefox 업데이트 

-> Kibana는 브라우저에서 실행하기 떄문에, Firefox를 업데이트한다.

$ sudo yum -y update firefox

 

1) Kibana 실행 

$ ~/kb-714/bin/kibana

* Kibana 오류 

yml 파일에 다음 내용 추가 

# xpack.task_manager.monitored_stats_health_verbose_log.enabled: false
xpack.security.session.idleTimeout: "1h"
xpack.security.session.lifespan: "30d"
xpack.security.encryptionKey: "something_at_least_32_characters"

 

2) Kibana 접속  =>  192.168.56.103:5601

VM ware workstation 내부에서 접속 가능하다. 

접속 시 ID: elastic, PW: bigdata 

여기서도 Dev Tools를 사용할 수 있다.

블로그의 정보

코딩하는 오리

Cori

활동하기