본문 바로가기
IT일반/엘라스틱서치

오라클 클라우드 ubuntu 에 Elasticsearch 설치

by xavi2019 2023. 1. 28.

20.04 버전의 Ubuntu에는 Elasticsearch 7.17.8을 설치한다. 

다운로드 버전으로 설치한다. (not apt-get)

https://www.elastic.co/guide/en/elasticsearch/reference/7.17/deb.html

 

Install Elasticsearch with Debian Package | Elasticsearch Guide [7.17] | Elastic

On systemd-based distributions, the installation scripts will attempt to set kernel parameters (e.g., vm.max_map_count); you can skip this by masking the systemd-sysctl.service unit.

www.elastic.co

 

설정파일 수정 

vi ~/elasticsearch-7.17.8/config/elasticsearch.yml
network.host: _site_
network.bind_host: [_site_, _local_]
cluster.initial_master_nodes: ["node-1"]
cluster.name: es_production

network.host: _site_ 로 실행하면, production 모드가 되어 메모리, 쓰레드등 각종 에러를 만나게 된다.

 

우분투에서는 아래 메시지로 에러가 나면서 실행이 안된다.

bootstrap check failure [1] of [1]: max number of threads [3606] for user [ubuntu] is too low, increase to at least [4096]

해결방법

sudo vi /etc/security/limits.conf

를 실행하여 아래 행을 추가한다.

ubuntu - nproc 4096

커널도 수정해준다.

sudo sysctl -w kernel.threads-max=4096

그리고 가장 중요한거..

exit 명령어로 ssh 터미널을 나갔다가 들어온다. 

 

엘라스틱을 다시 실행해 본다. 

~/elasticsearch-7.17.8/bin/elasticsearch

메시지 잘보고, 실행이 완료되면 다른 터미널 창을 열어 접속하여 확인해 본다.

curl -X GET 'http://localhost:9200'

아래와 같이 메시지가 나오면 잘 된 것임

{
  "name" : "hipsearch02",
  "cluster_name" : "es_production",
  "cluster_uuid" : "U0ZRqlF5SWOYZ09twrkYBQ",
  "version" : {
    "number" : "7.17.8",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "120eabe1c8a0cb2ae87cffc109a5b65d213e9df1",
    "build_date" : "2022-12-02T17:33:09.727072865Z",
    "build_snapshot" : false,
    "lucene_version" : "8.11.1",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

 

시스템 리부팅시 자동 실행

 

$ sudo vi /etc/systemd/system/elasticsearch.service

아래 내용을 넣는다.
===========================
[Unit]
Description=Elasticsearch

[Service]
Type=simple
User=ubuntu
ExecStart=/home/ubuntu/elasticsearch-7.17.8/bin/elasticsearch -d
Restart=always

[Install]
WantedBy=multi-user.target
===========================


$ sudo systemctl daemon-reload

$ sudo systemctl start elasticsearch

$ sudo systemctl enable elasticsearch

$ sudo systemctl status elasticsearch

노리 플러그인 설치

./bin/elasticsearch-plugin install analysis-nori

 

 

추가 : 오류 발생시

아래와 같은 오류 발생시

bootstrap check failure [1] of [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

 

sudo vi /etc/sysctl.conf

아래 라인 추가

vm.max_map_count=262144

리부팅 하거나 또는 리부팅 없이 하려면 아래와 같이 명령어 실행

sudo sysctl -w vm.max_map_count=262144

 

오류는 아니지만, 자꾸 로그에 이상한 라인이 뜨면

[2023-03-08T08:55:42,402][ERROR][o.e.i.g.GeoIpDownloader  ] [hipsearch02] exception during geoip databases update
org.elasticsearch.ElasticsearchException: not all primary shards of [.geoip_databases] index are active
	at org.elasticsearch.ingest.geoip.GeoIpDownloader.updateDatabases(GeoIpDownloader.java:137) ~[ingest-geoip-7.17.8.jar:7.17.8]
	at org.elasticsearch.ingest.geoip.GeoIpDownloader.runDownloader(GeoIpDownloader.java:284) [ingest-geoip-7.17.8.jar:7.17.8]
	at org.elasticsearch.ingest.geoip.GeoIpDownloaderTaskExecutor.nodeOperation(GeoIpDownloaderTaskExecutor.java:100) [ingest-geoip-7.17.8.jar:7.17.8]
	at org.elasticsearch.ingest.geoip.GeoIpDownloaderTaskExecutor.nodeOperation(GeoIpDownloaderTaskExecutor.java:46) [ingest-geoip-7.17.8.jar:7.17.8]
	at org.elasticsearch.persistent.NodePersistentTasksExecutor$1.doRun(NodePersistentTasksExecutor.java:42) [elasticsearch-7.17.8.jar:7.17.8]
	at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:777) [elasticsearch-7.17.8.jar:7.17.8]
	at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:26) [elasticsearch-7.17.8.jar:7.17.8]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) [?:?]
	at java.lang.Thread.run(Thread.java:1589) [?:?]

./config/elasticsearch.yml 에 아래 라인추가 

ingest.geoip.downloader.enabled=false

댓글