Установка Elasticsearch на облачный сервер Ubuntu

Elasticsearch – это масштабируемая платформа для распределённого поиска и анализа REST. В данном руководстве показано, как загрузить, установить и запустить Elasticsearch на облачном сервере Ubuntu.

Примечание: Руководство протестировано на серверах Ubuntu 12.04 и Ubuntu 13.10 с 64-битной архитектурой.

Зависимости

Для начала обновите список доступных пакетов системы:

apt-get update

Затем установите Java runtime; выберите более подходящий вариант:

  • OpenJDK (подходит для тестирования);
  • Oracle Java (рекомендуется разработчиками Elasticsearch для гарантированной совместимости).

Для установки OpenJDK введите:

apt-get install openjdk-6-jre

Для установки Oracle Java следуйте инструкциям в документации Elasticsearch. Для начала нужно добавить репозиторий, содержащий Oracle Java:

sudo add-apt-repository ppa:webupd8team/java

Затем запустите:

apt-get update

Эта команда загрузит информацию о новом репозитории. После этого можно установить Oracle Java:

sudo apt-get install oracle-java7-installer

Во время выполнения этой команды нужно принять лицензию Oracle. Если же вы не хотите соглашаться с условиями лицензии, установите OpenJDK.

Тестирование установки Java

Чтобы убедиться, что установка Java прошла успешно, запустите:

java -version

На экране должен появиться номер только что установленной версии Java.

Теперь всё готово к установке Elasticsearch.

Загрузка и установка Elasticsearch

Elasticsearch можно загрузить с сайта проекта в формате:

  • zip и tar.gz,
  • deb,
  • rpm.

Последний вариант не подходит для Ubuntu.

Если вы хотите просто попробовать работать с Elasticsearch, рекомендуется установить платформу при помощи архива .zip или tar.gz. Такая установка открывает доступ к бинарным файлам, необходимым для запуска Elasticsearch.

Пакет deb позволяет выполнить полную установку Elasticsearch и сразу запустить сервер; такая установка включает в себя init-скрипт в /etc/init.d/elasticsearch, запускающий Elasticsearch при загрузке системы.

Установка Elasticsearch из архива zip или tar.gz

Пакеты zip и tar.gz содержат предварительно скомпилированные бинарные файлы Elasticsearch.

Для начала загрузите исходный код. Распаковав архив, запустите бинарные файлы из текущего каталога.

Примечание: Именно поэтому нужно заранее разместить файлы в каталоге, открытом для всех пользователей, у которых должен быть доступ к Elasticsearch. В данном руководстве пакеты были загружены в текущий каталог пользователя. Если загрузить их в каталог /tmp, они исчезнут после перезагрузки VPS, что вполне подходит для разового тестирования платформы; можно создать отдельный временный каталог в /tmp при помощи команды:

mktemp -d

Прежде чем извлечь файлы, убедитесь, что вы находитесь в правильном каталоге.

Чтобы загрузить архив .zip:

wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.7.zip

Примечание: Перед загрузкой архива zip нужно установить утилиту unzip.

apt-get install unzip

Для загрузки tar.gz:

wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.7.tar.gz

Распакуйте архив zip:

unzip elasticsearch-0.90.7.zip

Для того чтоб распаковать tar.gz, введите:

tar -xf elasticsearch-0.90.7.tar.gz

В результате получится каталог elasticsearch-0.90.7. Перейдите в этот каталог:

cd elasticsearch-0.90.7

Бинарные файлы находятся в каталоге bin.

Установка Elasticsearch из пакета deb

Пакет deb – самый надёжный способ установки платформы в Ubuntu. Пакетный менеджер RPM может также сработать, но сначала его нужно конвертировать, а это не входит в рамки данной статьи. Итак, загрузите пакет deb:

wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.7.deb

Чтобы запустить установку прямо из полученного пакета, введите:

dpkg -i elasticsearch-0.90.7.deb

Это установит Elasticsearch в каталог /usr/share/elasticsearch и init-скрипт платформы в каталог /etc/init.d/elasticsearch (данный скрипт автоматически запускает платформу при загрузке сервера). Elasticsearch запустится сразу после завершения установки.

Конфигурационные файлы

При установке из архива zip или tar.gz конфигурационные файлы размещаются в подкаталоге config. Установка из пакета deb помещает конфигурационные файлы в каталог /etc/elasticsearch.

Для любого типа установки существует два основных конфигурационных файла: elasticsearch.yml и logging.yml. Как можно понять из названия, первый содержит настройки сервера Elasticsearch, а второй – настройки логгера (регистратора).

По умолчанию файл elasticsearch.yml полностью закомментирован, а файл logging.yml содержит базовые настройки записи данных. Логи можно найти в var/log/elasticsearch.

Настройка доступа к Elasticsearch

Для начала нужно закрыть публичный доступ к Elasticsearch, так как данная платформа не имеет встроенной системы безопасности, а потому ей может упралять любой пользователь, получивший доступ к HTTP API. Чтобы защитить Elasticsearch, отредактируйте elasticsearch.yml. Предположим, платформа установлена с помощью пакета deb. Откройте нужный файл:

sudo vi /etc/elasticsearch/elasticsearch.yml

Найдите строку:

network.bind_host

Раскомментируйте её и измените значение на localhost:

network.bind_host: localhost

Чтобы отключить динамические скрипты, добавьте в файл следующий код:

script.disable_dynamic: true

Сохраните и закройте файл. Перезапустите Elasticsearch, чтобы обновить конфигурации:

sudo service elasticsearch restart

Другие базовые настройки будут рассмотрены немного позже.

Тестирование установки Elasticsearch

Итак, на данный момент на сервере есть готовая установка платформы из пакета Debian, zip или tar.gz. Имея доступ к бинарным файлам Elasticsearch, запустите сервер. При установке из архива zip или tar.gz перейдите в каталог программы. При установке из пакета Debian сервер уже должен быть запущен, потому можно пропустить данные инструкции.

Чтобы убедиться, что всё работает, запустите:

./bin/elasticsearch

Сейчас платформа Elasticsearch должна быть запущена на порте 9200. Имейте в виду: полный запуск Elasticsearch занимает некоторое время, потому команда curl (см. далее) может сразу не сработать. Как правило, запуск занимает не более 10 секунд; если curl не срабатывает по истечении того времени, значит, с программой что-то не так.

Убедитесь, что сервер запущен:

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

Вывод выглядит так:

{
"ok" : true,
"status" : 200,
"name" : "Xavin",
"version" : {
"number" : "0.90.7",
"build_hash" : "36897d07dadcb70886db7f149e645ed3d44eb5f2",
"build_timestamp" : "2013-11-13T12:06:54Z",
"build_snapshot" : false,
"lucene_version" : "4.5.1"
},
"tagline" : "You Know, for Search"
}

Если на экране появился подобный вывод – всё работает правильно.

Также можно запросить установку Elasticsearch на порте 9200 при помощи браузера. Вывод будет такой же, как и у команды curl.

Сервер, установленный из zip или tar.gz, можно остановить при помощи интерфейса RESTful.

curl -X POST 'http://localhost:9200/_cluster/nodes/_local/_shutdown'

Эта команда действительна и для установки из пакета Debian, но в таком случае можно также использовать:

service elasticsearch stop

Чтобы снова запустить Elasticsearch, используйте:

service elasticsearch start

Использование Elasticsearch

Базовые настройки

При установке из архива zip или tar.gz конфигурационные файлы размещаются в подкаталоге config. Установка из пакета deb помещает конфигурационные файлы в каталог /etc/elasticsearch.

Два основных конфигурационных файла называются elasticsearch.yml и logging.yml. В первом находятся общие настройки сервера Elasticsearch (по умолчанию он содержит только комментарии). У Elasticsearch нет обязательных параметров. Платформа будет нормально работать даже с настройками по умолчанию, но такое окружение разработки будет оставаться ненадёжным.

Параметр cluster.name – это метод, при помощи которого Elasticsearch выполняет автоматическое обнаружение. Это значит, что если группа серверов Elasticsearch использует одно и то же имя кластера, они автоматически обнаружат друг друга. Благодаря этому Elasticsearch легко масштабируется.

Примечание: Использование стандартного имени кластера в сети, где есть другие серверы Elasticsearch, которыми вы не управляете, – очень серьёзный риск.

Базовое использование Elasticsearch

Попробуйте добавить данные в Elasticsearch. Платформа использует RESTful API, отвечающий на базовые команды CRUD (Create, Read, Update, Destroy).

Чтобы добавить запись, введите:

curl -X POST 'http://localhost:9200/tutorial/helloworld/1' -d '{ "message": "Hello World!" }'

Должен появиться такой вывод:

{"ok":true,"index":"tutorial","type":"helloworld","id":"1","version":1}

Эта команда отправляет HTTP POST запрос серверу Elasticserach. URI запроса – /tutorial/helloworld/1. В команде использованы следующие параметры:

  • tutorial – это индекс данных в Elasticsearch;
  • helloworld – тип;
  • 1 – id записи с указанным индексом и типом.

Чтобы запросить данные, используйте:

curl -X GET 'http://localhost:9200/tutorial/helloworld/1'

Результат будет выглядеть так:

{"_index":"tutorial","_type":"helloworld","_id":"1","_version":1,"exists":true, "_source" : { "message": "Hello World!" }}

Чтобы получить более удобочитаемый вывод, используйте ?pretty=true, например:

curl -X GET 'http://localhost:9200/tutorial/helloworld/1?pretty=true'

Вывод будет выглядеть так:

{
"_index" : "tutorial",
"_type" : "helloworld",
"_id" : "1",
"_version" : 1,
"exists" : true, "_source" : { "message": "Hello World!" }
}

Как видите, такой формат намного легче читать.

Теперь попробуйте самостоятельно добавить и запросить данные при помощи Elasticsearch в своём приложении.

Tags: , , , ,

Добавить комментарий