[Elastic Search] VM Workstation을 이용한 Elastic Search 사용 (1)
by Cori1. 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를 사용할 수 있다.
'AI > Data Analysis' 카테고리의 다른 글
[Elastic Search] VM Workstation을 이용한 Elastic Search 사용 (2) (0) | 2021.10.28 |
---|---|
[Elastic Search] VM Workstation을 이용한 Elastic Search, 설정 (0) | 2021.10.27 |
[Elastic Search] 데이터 검색 (0) | 2021.10.25 |
[크롤링] 외국인 관광객 데이터 다루기 (2) (0) | 2021.09.07 |
[크롤링] 3. 외국인 관광객 데이터 다루기 (1) (0) | 2021.08.30 |
블로그의 정보
코딩하는 오리
Cori