'Elasticsearch'에 해당되는 글 43건

07. Upgrading - 01 :: 2015/05/12 19:21

Elasticsearch 단계적인 규칙으로 이루어진 upgrade process 이용하여 서비스 중단 없이 upgrade 있다 섹션에서는 어떻게 단계적으로 upgrade 수행하거나 재시작할 있는지를 살펴본다. Rolling upgrade 설치하고자 하는 elasticsearch release에서 지원하는지 아닌지 알기 위해서 다음 표를 활용하라.


Upgrade From

Upgrade To

Supported Upgrade Type

0.90.x

1.x

Restart Upgrade

< 0.90.7

0.90.x

Restart Upgrade

>= 0.90.7

0.90.x

Rolling Upgrade

1.x

1.x

Rolling Upgrade


[TIP]

Elasticsearch upgrade하기 전에 breaking changes (http://www.elastic.co/guide/en/elasticsearch/reference/current/breaking-changes.html) docs 통해 컨설팅을 받아보는 것도 좋은 생각이다.


Backup Your Data!


Upgarde 수행하기 전에 system data backup 하는 것이 좋다. Upgrade과정 중에 오류가 발생해서 원래 상태로 roll back하는데 필요하다. Upgrade 때로 Elasticsearch index file 접근하는데 필요한 Lucene libraries upgrade하기도 한다. 그리고 한번 Lucene 새로운 버전으로 upgrade되고 나면, 이전 버전의 elasticsearch release에서는 현재 Lucene 버전으로 접근할 없다.


0.90.x 이전 버전


0.90.x system 백업하고, index flushing 하지 않도록 한다. 백업 과정에서 index disk flush하지 않도록 방지한다.


$ curl -XPUT 'http://localhost:9200/_all/_settings' -d '{
   "index": {
      "translog.disable_flush": "true"
   }
}'


그리고 재할당을 하지 않도록 한다. 백업 과정 중에 하나의 노드로부터 다른 노드로 data 옮기는 것을 방지한다.


$ curl -XPUT 'http://localhost:9200/_cluster/settings' -d '{
   "transient" : {
      "cluster.routing.allocation.disable_allocation": "true"
   }
}'


재할당과 index flush 하지 않도록 설정한 다음에, 선호하는 백업 방식(tar, storage array snapshot, backup software)으로 Elasticsearch Data 백업한다. 백업이 완료되고 이상 Elasticsearch data path에서 읽을 데이터가 없으면 재할당과 index flush 가능하도록 설정한다.


$ curl -XPUT 'http://localhost:9200/_all/_settings' -d '{
   "index": {
      "translog.disable_flush": "false"
   }
}'

$ curl -XPUT 'http://localhost:9200/_cluster/settings' -d '{
   "transient" : {
      "cluster.routing.allocation.disable_allocation": "false"
   }
}'


1.0 이후 버전


1.0 이후 버전을 백업하기 위해서는 snapshot 기능을 사용하여 간단하게 있다. 자세한 방법은 backup and restore with snapshots (http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-snapshots.html) 통해서 있다.

[로그인][오픈아이디란?]
오픈아이디로만 댓글을 남길 수 있습니다
Name
Password
Homepage

Secret

06. Repositories :: 2015/05/11 19:09

APT YUM 기반 배포판을 이용할 있도록 Repositories 제공하고 있다. Source 아니라 Elasticsearch 빌드한 Binary package만을 제공한다. Major 버전을 통한 우발적인 upgrade 피하기 위해서 major 버전별로 url 나누었다. 0.90.x 버전은 전부 0.90으로, 1.0.x 1.0으로, 1.1.x 1.1 같은 숫자로 표시한다.


Elasticsearch 서명 키로는 PGP key D88E42B4 사용한다.

Fingerprint 다음과 같다.

4609 5ACC 8548 582C 1A26 99A9 D27D 666C D88E 42B4

http://pgp.mit.edu 에서 사용할 있다.


APT

Public Singing Key 다운로드 하고 설치한다.


wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -


/etc/apt/source.list 파일에 repositories 정의를 추가한다.


echo "deb http://packages.elastic.co/elasticsearch/1.5/debian stable main" | sudo tee -a /etc/apt/sources.list


[WARINIG]

Elasticsearch repositories 추구하기 위해서 echo method 사용하라. Source 제공하지 않기 때문에 Add-apt-repository deb-src 사용하지 말라. Deb-src entry 추가했다면, 다음과 같은 error 발생할 것이다.

 

Unable to find expected entry 'main/source/Sources' in Release file (Wrong sources.list entry or malformed file)

Just delete the deb-src entry from the /etc/apt/sources.list file and the installation should work as expected.


Repository 준비되었다면 apt-get update 실행하라. 다음과 같이 설치할 있다.

sudo apt-get update && sudo apt-get install elasticsearch


부팅할 자동으로 Elasticsearch 실행하도록 설정하려면 다음과 같이 하면 된다.

sudo update-rc.d elasticsearch defaults 95 10


YUM


public Signing Key
다운로드 받아서 설치한다.


rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch


/etc/yum.repos.d/ 디렉토리에 .repo 확장자를 가진 파일을 추가하라. 예를 들어 elasticsearch.repo 파일을 만든다.


[elasticsearch-1.5]
name
=Elasticsearch repository for 1.5.x packages
baseurl
=http://packages.elastic.co/elasticsearch/1.5/centos
gpgcheck
=1
gpgkey
=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled
=1


그러면 repository 사용할 준비가 것이다. 이제 설치할 있다.


yum install elasticsearch


부팅 시에 elasticsearch 자동으로 시작하도록 설정해 보자. SysV init 사용한 배포판이라면 다음과 같이 실행할 있다.


chkconfig --add elasticsearch


[WARNING]

CentOS5 같은 RPM v3 사용한 예전 rpm 기반 배포판이라면 repositories 동작하지 않는다.


아니면 systemd 사용하여 설치할 있다.


sudo /bin/systemctl daemon-reload
sudo
/bin/systemctl enable elasticsearch.service

[로그인][오픈아이디란?]
오픈아이디로만 댓글을 남길 수 있습니다
Name
Password
Homepage

Secret

05. Directory Layout :: 2015/05/11 18:16

설치된 이후 폴더 구조는 다음과 같다.


Type

Description

Default Location

Setting

home

Elasicsearch 설치


path.home

bin

Elasticsearch 노드를 시작할 있는 binary script 있는 폴더

{path.home}/bin


conf

Elasticsearch.yml 포함한 설정 파일이 있는 폴더

{path.home}/config

path.conf

data

노드에 할당된 index/shard 데이터 파일이 있는 폴더.

여러 위치에 있을 있음

{path.home}/data

path.data

logs

로그 파일이 있는 폴더

{path.home}/logs

path.logs

plugins

Plugin 파일이 위치한 폴더. 플러그인은 subdirectory 갖고 있음.

{path.home}/plugins

path.plugins


Multiple data location stripe를 허용한다. Striping 간단하게 하나의 location 모든 파일을 위치시킬 수도 있고, index.store.distributor 값에 근거해서 파일 위치를 결정할 수도 있다.

  • least_used (default) : 항상 가장 적합한 space directory 선택한다.
  • random : 랜덤하게 directory 선택한다. 특정 디렉토리가 선택될 가능성은 디렉토리에서 이용할 있는 space 비례한다. , 이용가능한 space 많을수록 선택될 가능성이 높아진다.

동일한 데이터를 여러 복사하는 것이 아니라, RAID 0 같음에 유의하라. 간단하지만, RAID 사용하여 복잡하게 구성하고 싶지 않은 사람들에게 좋은 솔루션이 있다. 다음과 같이 설정하면 된다.


path.data: /mnt/first, /mnt/second


혹은 다음과 같이 array 형태로 설정할 수도 있다.


path.data: ["/mnt/first", "/mnt/second"]


Default Paths

아래 값들은 특별히 수정하지 않았다면, elasticsearch 사용하는 default path들이다.


deb and rpm

Type

Description

Location Debian/Ubuntu

Location RHEL/CentOS

home

Elasticsearch 설치

/usr/share/elasticsearch

/usr/share/elasticsearch

bin

노드를 실행할 있는 elasticsearch 포함한

binary script 있는 폴더

/usr/share/elasticsearch/bin

/usr/share/elasticsearch/bin

conf

Elasticsearch.yml/logging.yml 설정 파일이 있는 폴더

/etc/elasticsearch

/etc/elasticsearch

conf

Heap size, file descriptor 포함한 환경 변수 설정 파일이 있는 폴더

/etc/default/elasticsearch

/etc/sysconfig/elasticsearch

data

노드에 할당된 index/shard data 파일이 위치한 폴더

/var/lib/elasticsearch/data

/var/lib/elasticsearch

logs

로그 파일 위치

/var/log/elasticsearch

/var/log/elasticsearch

plugins

플러그인 파일 위치. 플러그인은 하위에 폴더를 포함하고 있다.

/usr/share/elasticsearch/plugins

/usr/share/elasticsearch/plugins


zip and tar.gz

Type

Description

Location

home

Elasticsearch 설치

{extract.path}

bin

노드를 실행할 있는 elasticsearch 포함한

binary script 있는 폴더

{extract.path}/bin

conf

Elasticsearch.yml/logging.yml 설정 파일이 있는 폴더

{extract.path}/config

conf

Heap size, file descriptor 포함한 환경 변수 설정 파일이 있는 폴더

{extract.path}/config

data

노드에 할당된 index/shard data 파일이 위치한 폴더

{extract.path}/data

logs

로그 파일 위치

{extract.path}/logs

plugins

플러그인 파일 위치. 플러그인은 하위에 폴더를 포함하고 있다.

{extract.path}/plugins

[로그인][오픈아이디란?]
오픈아이디로만 댓글을 남길 수 있습니다
Name
Password
Homepage

Secret

04. Running as a service on Windows :: 2015/05/11 17:49

윈도우 환경에서는 별다른 사용자 작업 없이 elasticsearch background 실행하거나 자동으로 시작하도록 설정할 있다. Bin/ 폴더 아래에 있는 service.bat 스크립트를 통해 설치, 삭제, 관리, 서비스에 대한 설정, 서비스 시작과 종료를 모두 실행할 있다.


c:\elasticsearch-1.5.2\bin>service

Usage: service.bat install|remove|start|stop|manager [SERVICE_ID]


스크립트는 service id 나타내는 개의 파라미터만 필요하다.

사용할 있는 command 다음과 같다.


Install : 서비스로서 elasticsearch 설치한다.

Remove : 설치되어 있는 elasticsearch service 삭제한다. (실행되어 있다면 종료한다.)

Start : elasticsearch service 실행한다. (설치되어 있을 경우)

Stop : elasticsearch service 종료한다. (실행되어 있을 경우)

Manager : 설치되어 있는 service 관리하는 GUI 실행한다.


설치 도중에 사용할 있는 환경 변수는 복사해서 service lifecycle 사용할 있다. 설치 이후에 변경된 부분은 service 재설치하지 않으면 회복되지 않는다.


이용할 있는 JDK/JRE (JAVA_HOME 설정에 따른) 아키텍처에 기반하여 64-bit, 32-bit 적합한 서비스가 설치될 것이다. 정보는 설치 시점에 보여진다.


c:\elasticsearch-{version}bin>service install
Installing service      :  "elasticsearch-service-x64"
Using JAVA_HOME (64-bit):  "c:\jvm\jdk1.7"
The service 'elasticsearch-service-x64' has been installed.

  

[NOTE]

Elasticsearch service JRE 사용할 수는 있지만, client VM 사용하는 JRE 사용한다면 시스템 불안정성과 경고가 발생할 수도 있다. (반대로 서버에서 사용하는 JVM 오랫동안 실행되는 application 성능측면에서 좋다.)

  • 서버에는 JRE 설치해서 사용하지 말고, JDK 설치하여 사용하라는 의미.

Customizing service settings

서비스 설정을 customize하는 데는 2가지 방법이 있다.

Manager GUI

Manager command 통해서 GUI 접속할 있다. GUI 설치된 서비스에 대한 상태, startup type, JVM, start, stop등의 설정을 보여준다. Command-line에서 service.bat으로 간단하게 실행하여 앞서 언급한 option 윈도우에서 있다.


Customizing service.bat

Service.bat 파일은 서비스를 설치하기 위해서 Apache Common Daemon (http://commons.apache.org/proper/commons-daemon/) 프로젝트에 의존한다. 서비스 실행환경 하에서 사용자가 customizing하는 경우에 flexibility 보장하기 위해서 installation 파라미터를 수정하여 그에 따른 모든 파라미터들을 변경할 있다. 새로운 설정을 적용하려면 서비스를 재설치해야 한다.


[NOTE]

Customizable MSI installer 이용할 있도록 지원하는 커뮤니티도 있다.

https://github.com/salyh/elasticsearch-msi-installer (by Hendrik Saly)

[로그인][오픈아이디란?]
오픈아이디로만 댓글을 남길 수 있습니다
Name
Password
Homepage

Secret

03. Running as a service on linux :: 2015/05/11 17:14

Elasticservice OS에서 서비스로 실행하기 위해서, reboot / upgrade하는 동안 제공되는 패키지를 통해서 elasticsearch 쉽게 시작하고 종료할 있다.


Linux

현재 우리 빌드 시스템은 자동으로 데비안 패키지와 RPM 생성한다. 다운로드 페이지를 통해서 이용할 있다. 패키지는 특별히 의존관계를 갖지는 않는다. 하지만, JDK 설치되었는지 확인이 필요하다.


각각의 패키지는 다음 파라미터들로 설정 파일을 설정할 있다.


ES_USER : 실행 사용자. 기본 : elasticsearch

ES_GROUP : 실행 그룹. 기본 : elasticsearch

ES_HEAP_SIZE : 시작할 때의 Heap 메모리 크기

ES_HEAP_NEWSIZE : 새로 생성하는 Heap 메모리 크기

ES_DIRECT_SIZE : Maximum Direct Memory

MAX_OPEN_FILES : Open file 최대값. 기본 : 65535

MAX_LOCKED_MEMORY : 최대 lock 메모리 크기. bootstrap.mlockall 옵션을 elasticsearch.yml 사용하려면 "unlimited" 설정하라. 또한 ES_HEAP_SIZE 설정해야 한다.

MAX_MAP_COUNT : 하나의 Process 가질 있는 최대 memory map area 수. Mmapfs index store type으로 사용한다면 값을 높은 값으로 설정하라. 자세한 정보를 위해서는 max_map_count 대한 linux kernel documentation (https://github.com/torvalds/linux/blob/master/Documentation/sysctl/vm.txt) 확인하라. Elasticsearch 시작하기 전에 sysctl 통해서 설정할 있다. Default값은 65535이다.
LOG_DIR :
로그 디렉토리. Default /var/log/elasticsearch이다.

DATA_DIR : 데이터 디렉토리. Default /var/lib/elasticsearch이다.

WORK_DIR : Work 디렉토리. Default /tmp/elasticsearch이다.

CONF_DIR : 설정 파일 위치 디렉토리. (elasticsearch.yml logging.yml 파일이 있는 위치). Default /etc/elasticsearch이다.

CONF_FILE : 설정 파일 경로. Default /etc/elasticsearch/elasticsearch.yml이다.

ES_JAVA_OPTS : 추가적인 java options. Node.name property 추가하려고 한다면 아주 유용하게 사용할 있다. 하지만, puppet이나 chef 같은 provisioning system 통해서 배포되기 때문에 외에는 elasticsearch.yml 파일의 내용을 변경하지 말라. 예를 들어 다음과 같이 사용할 있다. ES_JAVA_OPTS="-Des.node.name=search-01"

RESTART_ON_UPGRADE : restart package upgrade 대한 설정. Default는 false이다. Package 설치한 이후, elasticsearch instance 수동으로 restart해야 한다. Cluster에서 upgrade 기능은 네트워크 트래픽을 증가시키고, cluster 전체적으로 response time 좋게 하기 때문이다.


Debian/Ubuntu

데비안 패키지에는 표준 데비안 업데이트 툴인 update-rc.d 실행하면 필요한 모든 것이 포함되어 있다. 실행 스크립트는 /etc/init.d/elasticsearch이다. 설정 파일은 /etc/default/elasticsearch 있다.

데비안 패키지는 기본적으로 service 시작하지는 않는다. 적합하게 설정되어 있지 않으면 갑작스럽게 cluster 참여하지 않도록 하기 위해서이다. dpkg -i 설치한 이후, 다음 command 사용하여 system 부팅할 , elasticsearch 시작할 있다.


sudo update-rc.d elasticsearch defaults 95 10
sudo
/etc/init.d/elasticsearch start


Installing the oracle JDK

일반적으로 추천하는 것은 Oracle JDK 환경에서 elasticsearch 구동하는 것이다. 그러나 Ubuntu Debian에는 라이선스 이슈로 OpenJDK 탑재되어 있다. 하지만 쉽게 oracle installer 이용해 설치할 있다. 데비안이나 리눅스 환경에서 add-apt-repositry command 사용하여 Debian Wheezy python-software-properties 설치되어 있는지 확인하라.


sudo add-apt-repository ppa:webupd8team/java
sudo apt
-get update
sudo apt
-get install oracle-java7-installer
java
-version


마지막 command 사용하여 Oracle JDK 성공적으로 설치되었는지 확인할 있다. Java 8 설치하려면 apt-get install oracle-java8-installer 통해서 설치할 있다.


RPM based distributions

Using chkconfig

Chkconfig 사용하여 RPM기반 배포파일을 얻을 있다. Init script /etc/init.d/elasticsearch 있다. 설정 파일은 /etc/sysconfig/elasticsearch 있다. 데비안처럼 RPM 패키지는 기본적으로 install이후 실행되지 않는다. 다음 command 통해서 수동으로 실행해야 한다.


sudo /sbin/chkconfig --add elasticsearch
sudo service elasticsearch start


Using systemd

SUSE 배포판에서는 서비스 등록을 위해서 chkconfig 사용할 없다. 서비스 실행과 종료를 위해서 systemd /bin/systemctl 사용한다.  (가장 최신 버전에서는 chkconfig command 사용할 있다.) 설정 파일은 /etc/sysconfig/elasticsearch 있다. RPM 설치 , systemd 설정을 변경하고 elasticsearch 실행해야 한다.


sudo /bin/systemctl daemon-reload
sudo
/bin/systemctl enable elasticsearch.service
sudo
/bin/systemctl start elasticsearch.service


/etc/sysconfig/elasticsearch 있는 MAX_MAP_COUNT 변경하는 것은 아무 효과가 없다. 시작시점에 변경된 값을 반영하려면 /usr/lib/sysctl.d/elasticsearch.conf 변경해야 한다는 것에 유의하라.

[로그인][오픈아이디란?]
오픈아이디로만 댓글을 남길 수 있습니다
Name
Password
Homepage

Secret
< PREV |  1  |  2  |  3  |  4  |  5  |  6  |  7  |  8  |  ...  9  |  NEXT >