Elasticsearch x-pack 설치 방법

Linux에 설치

들어가기 전

  • 설치 경로 : /home/ubuntu/app/
  • 자바가 먼저 설치되어있어야함

자바 설치

  • https://sg-choi.tistory.com/99

Elasticsearch 설치 스크립트

  • https://www.elastic.co/kr/downloads/elasticsearch
mkdir -p /home/ubuntu/app \
&& cd /home/ubuntu/app \
&& wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.1-linux-x86_64.tar.gz \
&& tar xvfz elasticsearch-*.tar.gz \
&& rm elasticsearch-*.tar.gz \
&& ln -s /home/ubuntu/app/elasticsearch* elasticsearch

실행

/home/ubuntu/app/elasticsearch/bin/elasticsearch -d

설치 확인

curl -XGET http://localhost:9200

[이슈] 서버 실행시 아래 문구 오류 발생

  • 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 -p

or

sysctl -w vm.max_map_count=262144

[이슈] 서버 실행시 아래 문구 오류 발생

  • X-Pack is not supported and Machine Learning is not available for [linux-x86]; you can use the other X-Pack features (unsupported) by setting xpack.ml.enabled: false in elasticsearch.yml
vi /home/ubuntu/app/elasticsearch/config/elasticsearch.yml
# 아래 내용 설정 후 저장
xpack.ml.enabled: false

[이슈] 서버 실행시 아래 문구 오류 발생

  • system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
vi /home/ubuntu/app/elasticsearch/config/elasticsearch.yml
# 아래 내용 설정
bootstrap.system_call_filter: false

[이슈] 서버 실행시 아래 문구 오류 발생

  • JVM is using the client VM [Java HotSpot(TM) Client VM] but should be using a server VM for the best performance
# 자바 VM 버전이 Client 버전인지 확인
java -version
# Client가 맞을 경우 아래 과정 진행
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) Client VM (build 25.201-b09, mixed mode)
vi /home/ubuntu/app/elasticsearch/config/jvm.options
# 아래 설정 후 저장 및 재시작
-server

docker로 실행

docker 실행

docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.17.6

docker-compose로 실행

docker-machine 설정

docker-machine ssh
sudo sysctl -w vm.max_map_count=262144

elasticsearch.yml

  • 경로 : ./config/elasticsearch.yml
cluster.name: "docker-cluster"
cluster.initial_master_nodes: ["master"]

node.name: master
network.host: 0.0.0.0

path.data: /data
path.logs: /logs

docker-compose.yml

  • 경로 : ./docker-compose.yml
version: "3.3"
services:
  elasticsearch:
    image: elasticsearch:7.6.1
    ports:
      - "9200:9200"
    volumes:
      - ./config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - ./data/:/data/

실행 후 확인

  • http://192.168.99.100:9200

Elasticsearch x-pack 설치 방법

Elasticsearch x-pack security 인증(Authentication) 및 로그인 기능 설정하기 (무료)

Kibana Elasticsearch 인증 설정도 포함

Step

  1. 설정파일 수정 (elasticsearch.yml)
  2. 기본계정 비밀번호 재설정
  3. 확인
  4. Kibana↔Elasticsearch 간의 연동에 인증정보 추가
  5. Kibana 재시작 후 확인

1. 설정파일 수정 (elasticsearch.yml

  • /usr/local/elasticsearch/config/elasticsearch.yml
xpack.security:
  enabled: true
  transport:
    ssl:
      enabled: true
  • Elasticsearch 재기동
systemctl restart elasticsearch

xpack.security 옵션을 활성화 해주면서 xpack.security.transport.ssl 옵션도 활성화 필요

2. 기본계정 비밀번호 재설정

  • 홈 디렉토리 이동
cd /usr/local/elasticsearch
  • 실행파일 목록 중 기본 제공되는 파일인 elasticsearch-setup-passwords 실행 (interactive)
./bin/elasticsearch-setup-passwords interactive
future versions of Elasticsearch will require Java 11; your Java version from [/usr/local/java/jdk/jre] does not meet this requirement
Initiating the setup of passwords for reserved users elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user.
You will be prompted to enter passwords as the process progresses.
Please confirm that you would like to continue [y/N] y

Enter password for [elastic]: 
Reenter password for [elastic]: 
Enter password for [apm_system]: 
Reenter password for [apm_system]: 
Enter password for [kibana_system]: 
Reenter password for [kibana_system]: 
Enter password for [logstash_system]: 
Reenter password for [logstash_system]: 
Enter password for [beats_system]: 
Reenter password for [beats_system]: 
Enter password for [remote_monitoring_user]: 
Reenter password for [remote_monitoring_user]: 
Changed password for user [apm_system]
Changed password for user [kibana_system]
Changed password for user [kibana]
Changed password for user [logstash_system]
Changed password for user [beats_system]
Changed password for user [remote_monitoring_user]
Changed password for user [elastic]

Elasticsearch Documentation에 [ elastic ] 계정의 초기 비밀번호가 changeme라고 안내되어있는데 난 해당 정보로 인증이 실패했었음 ..

3. 확인

  • 인증정보 없이 Elasticsearch 요청
curl 192.168.0.10:9200?pretty

{
  "error" : {
    "root_cause" : [
      {
        "type" : "security_exception",
        "reason" : "missing authentication credentials for REST request [/?pretty]",
        "header" : {
          "WWW-Authenticate" : "Basic realm=\"security\" charset=\"UTF-8\""
        }
      }
    ],
    "type" : "security_exception",
    "reason" : "missing authentication credentials for REST request [/?pretty]",
    "header" : {
      "WWW-Authenticate" : "Basic realm=\"security\" charset=\"UTF-8\""
    }
  },
  "status" : 401
}

위와 같이 missing authentication credentials for REST request 메세지와 함께 security_exception이 발생한다.

  • 인증정보 포함하여 Elasticsearch 요청
curl --user elastic 192.168.0.10:9200

Enter host password for user 'elastic':
{
  "name" : "node_master",
  "cluster_name" : "Cluster1",
  "cluster_uuid" : "afHTbFj6RtOiKitScsaXXg",
  "version" : {
    "number" : "7.9.1",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "083627f112ba94dffc1232e8b42b73492789ef91",
    "build_date" : "2020-09-01T21:22:21.964974Z",
    "build_snapshot" : false,
    "lucene_version" : "8.6.2",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

성공적으로 Elasticsearch Root 요청이 이루어진다.

4. Kibana↔Elasticsearch 간의 연동에 인증정보 추가

  • /usr/local/kibana/config/kibana.yml
elasticsearch:
  hosts: [ "http://192.168.0.10:9200" ]
  username: "elastic"
  password: "elastic"

Kibana 설정파일에 Elasticsearch 인증정보를 설정해주면 된다.

5. Kibana 재기동 후 확인

systemctl restart kibana
  • Kibana 접속
Elasticsearch x-pack 설치 방법

Kibana를 접속했을때 위와 같이 로그인 창이 나타난다.