как установить elasticsearch на windows
Изучаем ELK. Часть I — Установка Elasticsearch
Вступительное слово
Эта статья является первой в серии статей по стеку Elasticsearch, Logstash, Kibana (ELK). Цикл статей ориентирован на тех, кто только начинает знакомится со стеком ELK, и содержит минимально необходимый набор знаний, чтобы успешно запустить свой первый кластер ELK.
В рамках данного цикла будут рассмотрены такие темы, как:
установка и настройка компонентов ELK,
безопасность кластера, репликация данных и шардирование,
конфигурирование Logstash и Beat для сборки и отправки данных в Elasticsearch,
визуализация в Kibana
запуск стека в Docker.
В данной статье будет рассмотрена процедура установки Elasticsearch и конфигурирование кластера.
План действий:
Скачиваем и устанавливаем Elasticsearch.
Запускаем и проверяем работоспособность кластера.
Делаем важные настройки.
Скачиваем и устанавливаем Elasticsearch
Существует множество вариантов установки Elasticsearch, под любые нужды и желания. С перечнем можно ознакомится на официальном сайте. Не смотря на то, что на своем стенде я использовал установку из Deb пакетов, считаю правильным так же описать установку из RPM пакетов и архива tar.gz для Linux системы.
Установка из Deb пакетов
Импортируем Elasticsearch PGP ключ:
Устанавливаем apt-transport-https пакет:
Перед установкой пакета необходимо добавить репозиторий Elastic:
Устанавливаем Elasticsearch из пакета:
Настраиваем Elasticsearch для автоматического запуска при запуске системы:
Установка из RPM пакетов
Импортируем Elasticsearch PGP ключ:
В директории /etc/yum.repos.d/ создаем файл репозитория Elasticsearch elasticsearch.repo :
Установка из архива tar.gz
Скачиваем архив с Elasticsearch
Извлекаем данные из архива и переходим в каталог с Elasticsearch:
На этом шаге установка из архива считается завершенной.
Для запуска Elasticsearch можно создать отдельного пользователя, предоставив все необходимые права к каталогу с Elasticsearch и указывая данного пользователя при настройке файловых дескрипторов.
Настраиваем кластер
На текущем этапе у нас есть три хоста с установленным Elasticsearch. Следующим и самым важным этапом является настройка каждого узла для объединения их в единый кластер.
Ниже будут приведены пример конфигурации для узла es-node01. Аналогичные настройки необходимо сделать на каждом узле, указав соответствующие имя и адрес.
Указываем имя узла и определяем роли. Укажем для узла роли master и data :
master Данная роль дает возможность узлу быть избранным, как управляющий узел кластера
data узел с данной ролью содержит данные и выполняет операции с этими данными
Со списком всех ролей узла можно ознакомится тут.
Настраиваем адрес и порт, на которых узел будет принимать запросы:
Определяем имя кластера и начальный список узлов в голосовании по выбору master узла:
При начальной загрузке кластера определяются узлы, участвующие в голосовании по выбору мастера, поэтому в новом кластере мы должны указать перечень этих узлов. Если данный параметр оставить пустым (по умолчанию), то узел будет ожидать подключения к уже созданному кластеру.
Данный параметр следует удалить после создания кластера и не использовать при добавлении новых узлов в существующий кластер.
Указываем список master узлов кластера:
Определяем, где будем хранить данные и логи
На выходе мы должны получить следующий конфигурационный файл:
При необходимости настраиваем межсетевой экран на хосте:
Запускаем и проверяем
Запускаем на каждом узле службу elasticsearch :
Для установки из архива используем:
или если мы хотим запустить Elasticsearch как демон, то:
После запуска первого узла в логах можно увидеть, что узел ожидает подключение других узлов, чтобы определить, кто возьмет роль master :
После включения остальных узлов в логах появится запись о том, что кластер собрался:
Проверяем состояние кластера, обратившись к любому его узлу:
Делаем важные настройки
Для нормальной работы кластера необходимо произвести еще некоторые настройки.
Heap size
Отключаем подкачку
Подкачка негативно сказывается на производительности и стабильности работы Elasticsearch, ведь система может выгрузить страницы JVM на диск. Есть несколько вариантов работы с подкачкой:
Полное отключение подкачки. Перезапуск Elasticseach при этом не требуется.
Использование mlockall для блокировки адресного пространства в оперативной памяти.
Перезапускаем Elasticsearch и проверяем настройки через запрос к любому узлу:
Если перезапуск Elasticsearch завершился ошибкой вида:
или проверка показывает, что данная настройка не применилась, необходимо сделать следующее в зависимости от способа установки:
Установка из архива
Установка из пакета RPM или Deb
и укажите следующее значение:
Настройка файловых дескрипторов
Elasticsearch работает с большим количеством файловых дескрипторов, и их нехватка может катастрофически сказаться на его работе. Согласно официальной документации необходимо указать значение файловых дескрипторов не ниже 65 536.
Если Elasticsearch установлен из RPM или Deb пакетов, то настройка не требуется.
Для установки из архива необходимо в файле /etc/security/limits.conf установить параметр nofile для пользователя, который осуществляет запуск Elasticsearch. В примере ниже таким пользователем является elasticsearch :
Проверить установленные значения можно следующим образом:
Настройка виртуальной памяти
Elasticsearch по умолчанию использует каталог mmapfs для хранения индексов, и ограничение операционной системы по умолчанию для счетчиков mmap может привести к нехватки памяти. Для настройки запустите из-под root следующую команду:
Если Elasticsearch установлен из RPM или Deb пакетов, то настройка не требуется.
Настройка потоков
Необходимо убедиться, что количество потоков, которые Elasticsearch может создавать, было не менее 4096.
DNS кеширование
Временный каталог для JNA
На этом шаге дополнительные настройки Elasticsearch окончены.
Заключение
Дойдя до этого места, вы должны иметь работоспособный кластер Elasticsearch.
В следующей статье будут описаны процедуры установки и настройки Kibana и Logstash. А в качестве проверки работоспособности кластера соберём данные из файла и посмотрим на них с помощью Kibana.
Как установить ElasticSearch 7
Ввиду того, что в будущем я планирую выпустить несколько статьей, основанных на работе с ElasticSearch, в этой статье я решил показать самые распространённые варианты его установки. В этой статье собраны все варианты установки Elasticsearch 7: на Ubuntu 18.10, Windows 10, Docker, Vagrant Homestead. Многие ищут статьи на тему быстрого старта по работе с ES, однако, любой старт начинается именно с установки^^.
Установка Elasticsearch на Linux/Ubuntu
Для того, чтобы установить Elasticsearch на Ubuntu, нужно открыть страницу их офф.документации.
При установке я использую Ubuntu 18.10, но, даже, если у вас другая версия, то процесс не будет иметь кардинальных отличий.
Для работы Elasticsearch на Linux, нужно сначала установить Java 8 версии, или более новую. Для этого, выполните код:
И получите окно вывод примерно с таким содержимым:
После чего, приступим к установке самого Elasticsearch.
Сначала нужно выполнить:
Этой командой мы установим ElasticSearch 7 версии. Если вам нужна какая-то конкретная версия, или более старая версия, то измените версию на нужную, вместо 7.x
После чего, выполним следующие команды:
После выполнения этих команд, Elasticsearch будет установлен. Однако, он не запустится сразу после установки, запустить его придётся вручную, выполнив:
И теперь, для того, чтобы удостовериться, что Elasticsearch успешно установлен, можем отправить HTTP-запрос на 9200 порт, на котором висит ES. Запрос отправим с помощью curl:
И вы должны увидеть что-то вроде этого:
Но, уверен, что у вас всё запустилось, мои поздравления!
Настройка Elasticsearch
По умолчанию Elasticsearch настроен только для локального доступа, для доступа только изнутри текущей системы, в которую он установлен. Вы не можете достучаться к нему удалённо. И, если клиент подключаемый к Elasticsearch запущен на том же сервере, что и сам Elasticsearch, вам не нужно менять конфигурационные файлы. Если это не так, то есть опция настройки удалённого доступа к Elasticsearch.
Удалённый доступ
Elasticsearch не имеет встроенной системы аутентификации, потому, если вы разрешите удалённый доступ, то получить информацию от Elasticsearch может кто угодно, кто имеет возможность выполнять HTTP-запросы к API. Если вы хотите разрешить удалённый доступ к серверу Elasticsearch, вам нужно настроить файрвол, и разрешить доступ к 9200 порту Elasticsearch сервера только для доверенных клиентов.
В Ubuntu стандартно установлено ПО по настройке файрвол UFW. По умолчанию, UFW установлен в систему, но не включён. Но, перед его включением, добавим одно правило для разрешения входящего трафика по SSH:
Теперь, разрешим удалённый доступ для доверенного IP адреса:
Вместо x.x.x.x напишите ваш реальный IP адрес. В моём случае, команда будет иметь вид sudo ufw allow from 134.249.138.171 to any port 9200
Если вы занимаетесь локальной разработкой, то можете не ограничивать доступ по конкретному IP, для этого, вместо предыдущей команды нужно выполнить: sudo ufw allow to any port 9200
Теперь можно включать UFW:
И последнее, проверим статус файрвола:
Где мы должны увидеть добавленное правило:
Для этого, откроем конфигурационный файл elasticsearch.yml :
Теперь, перезагрузим Elastisearch, чтобы изменения вступили в силу:
И это всё. Теперь у вас есть возможность подключения к Elastisearch удалённо.
И теперь, после всего проделанного, вы знаете, как настроить удалённое подключение к Elasticsearch. Теперь вы можете подключаться из любого места, и любого HTTP-клиента.
В этом пункте было показано, как установить Elasticsearch в Ubuntu 18.10. Теперь вы можете посетить офф.документацию для начала работы и более детального изучения основ работы с Elasticsearch.
Установка ElasticSearch в Docker
Если вы ещё не знакомы к Докером, то на сайте есть отличная статья по работе с ним.
Для начала, нужно скачать образ с предустановленным Elasticsearch:
Теперь, когда скачивание дойдёт до конца, его можно запустить командой:
В результате чего, Elasticsearch станет доступен по адресу localhost:9200.
Установка Elasticsearch в Vagrant
Вы не должны предоставлять Elasticsearch больше, чем половина вашей доступной оперативной памяти, потому, убедитесь, что ваш Homestead настроен в соответствии этому замечанию.
Для того, чтобы прокинуть порты для удалённого доступа, нужно дополнить Homestead.yaml:
И, аналогично, как описывалось в секции настройки удалённого доступа, нужно прописать в файл /etc/elasticsearch/elasticsearch.yml новые параметры, разрешив удалённый доступ.
После чего, удалённый доступ заработает. Учтите, что в этом случае, доступ к Elasticsearch будет осуществляться не по адресу localhost:9200, а по параметру IP, указанному в Homestead.yml. В моём случае, это 192.168.10.10:9200.
Установка Elasticsearch на Windows 10
Для установки Elasticsearch на Windows, перейдите на страницу и выберите нужную версия для скачивания (я предпочитаю *.msi версию).
Используя графический интерфейс, установите настройки: директории для хранения данных, логов, и конфигов, или же, используйте настройки по-умолчанию.
Потом, выберите, установка «as a service» или установка с ручной настройкой, если нужно. Когда установлено «as a service», вы можете так же настроить Windows аккаунт для запуска службы, а так же настроить поведение при старте вашей ОС (запускать ли автоматически и т.д.).
Основные системные настройки производятся на последней странице: указывается имя кластера, имя, размер ОЗУ и настройки сети.
В конце установки, на вашем компьютере запустится служба Elasticsearch, и убедиться в этом можно, перейдя по адресу localhost:9200.
Резюме
В этой статье я показал, как устанавливать Elasticsearch 7 под разные операционные системы: Ubuntu и Windows. Так же, была рассмотрена установка, запуск и настройка Elasticsearch на Docker и Homestead Vagrant. Это была первая статья по работе с Elasticsearch, для того, чтобы в будущем показать подробные примеры по работе с ним.
Subscribe to Блог php программиста: статьи по PHP, JavaScript, MySql
Get the latest posts delivered right to your inbox
Как установить elasticsearch на windows
Within the first screen, select the directory for the installation. In addition, select directories for where data, logs and configuration will be placed or use the default locations:
Then select whether to install as a service or start Elasticsearch manually as needed. When installing as a service, you can also configure the Windows account to run the service with, whether the service should be started after installation and the Windows startup behaviour:
When selecting a Windows account to run the service with, be sure that the chosen account has sufficient privileges to access the installation and other deployment directories chosen. Also ensure the account is able to run Windows services.
Common configuration settings are exposed within the Configuration section, allowing the cluster name, node name and roles to be set, in addition to memory and network settings:
A list of common plugins that can be downloaded and installed as part of the installation, with the option to configure an HTTPS proxy through which to download these plugins.
Ensure the installation machine has access to the internet and that any corporate firewalls in place are configured to allow downloads from artifacts.elastic.co :
As of version 6.3.0, X-Pack is now bundled by default. The final step allows a choice of the type of license to install, in addition to security configuration and built-in user configuration:
After clicking the install button, the installation will begin:
…and will indicate when it has been successfully installed:
Install using the command lineedit
By default, msiexec.exe does not wait for the installation process to complete, since it runs in the Windows subsystem. To wait on the process to finish and ensure that %ERRORLEVEL% is set accordingly, it is recommended to use start /wait to create a process and wait for it to exit
Supported Windows Installer command line arguments can be viewed using
Command line optionsedit
All settings exposed within the GUI are also available as command line arguments (referred to as properties within Windows Installer documentation) that can be passed to msiexec.exe :
The directory in which to store your data. Defaults to %ALLUSERSPROFILE%\Elastic\Elasticsearch\data
The directory in which to store your configuration. Defaults to %ALLUSERSPROFILE%\Elastic\Elasticsearch\config
The directory in which to store your logs. Defaults to %ALLUSERSPROFILE%\Elastic\Elasticsearch\logs
Whether the data, configuration and logs directories should be created under the installation directory. Defaults to false
Whether Elasticsearch is installed and configured as a Windows Service. Defaults to true
Whether the Windows Service is started after installation finishes. Defaults to true
Whether the Windows Service is started when Windows is started. Defaults to true
Whether the Windows service runs under the LocalSystem Account. Defaults to true
Whether the Windows service runs under the NetworkService Account. Defaults to false
Whether the Windows service runs under a specified existing account. Defaults to false
The username for the account under which the Windows service runs. Defaults to «»
The password for the account under which the Windows service runs. Defaults to «»
The name of the cluster. Defaults to elasticsearch
The name of the node. Defaults to %COMPUTERNAME%
Whether Elasticsearch is configured as a master node. Defaults to true
Whether Elasticsearch is configured as a data node. Defaults to true
Whether Elasticsearch is configured as an ingest node. Defaults to true
The amount of memory to allocate to the JVM heap for Elasticsearch. Defaults to 2048 unless the target machine has less than 4GB in total, in which case it defaults to 50% of total memory.
Whether bootstrap.memory_lock should be used to try to lock the process address space into RAM. Defaults to false
A comma separated list of hosts in the form host:port or host to be used for unicast discovery. Defaults to «»
The minimum number of master-eligible nodes that must be visible in order to form a cluster. Defaults to «»
The hostname or IP address to bind the node to and publish (advertise) this host to other nodes in the cluster. Defaults to «»
The port to use for exposing Elasticsearch APIs over HTTP. Defaults to 9200
The port to use for internal communication between nodes within the cluster. Defaults to 9300
A comma separated list of the plugins to download and install as part of the installation. Defaults to «»
The proxy host to use to download plugins over HTTPS. Defaults to «»
The proxy port to use to download plugins over HTTPS. Defaults to 443
The proxy host to use to download plugins over HTTP. Defaults to «»
The proxy port to use to download plugins over HTTP. Defaults to 80
When installing with a Trial license, whether security features are enabled. Defaults to true
When installing with a Trial license and security features are enabled, the password to used to bootstrap the cluster and persisted as the bootstrap.password setting in the keystore. Defaults to a randomized value.
When installing with a Trial license and security features enabled, whether the installation should skip setting up the built-in users. Defaults to false
To pass a value, simply append the property name and value using the format
=» » to the installation command. For example, to use a different installation directory to the default one:
Consult the Windows Installer SDK Command-Line Options for additional rules related to values containing quotation marks.
Enable automatic creation of system indicesedit
Some commercial features automatically create indices within Elasticsearch. By default, Elasticsearch is configured to allow automatic index creation, and no additional steps are required. However, if you have disabled automatic index creation in Elasticsearch, you must configure action.auto_create_index in elasticsearch.yml to allow the commercial features to create the following indices:
If you are using Logstash or Beats then you will most likely require additional index names in your action.auto_create_index setting, and the exact value will depend on your local configuration. If you are unsure of the correct value for your environment, you may consider setting the value to * which will allow automatic creation of all indices.
Running Elasticsearch from the command lineedit
Once installed, Elasticsearch can be started from the command line, if not installed as a service and configured to start when installation completes, as follows:
The command line terminal will display output similar to the following:
Configuring Elasticsearch on the command lineedit
Elasticsearch loads its configuration from the %ES_PATH_CONF%\elasticsearch.yml file by default. The format of this config file is explained in Configuring Elasticsearch.
Typically, any cluster-wide settings (like cluster.name ) should be added to the elasticsearch.yml config file, while any node-specific settings such as node.name could be specified on the command line.
Checking that Elasticsearch is runningedit
You can test that your Elasticsearch node is running by sending an HTTP request to port 9200 on localhost :
which should give you a response something like this:
Installing Elasticsearch as a Service on Windowsedit
Elasticsearch can be installed as a service to run in the background or start automatically at boot time without any user interaction. This can be achieved upon installation using the following command line options
Once installed, Elasticsearch will appear within the Services control panel:
and can be stopped and restarted from within the control panel, or from the command line using:
with Command Prompt:
Changes can be made to jvm.options and elasticsearch.yml configuration files to configure the service after installation. Most changes (like JVM settings) will require a restart of the service in order to take effect.
Upgrade using the graphical user interface (GUI)edit
The next step allows certain configuration options to be changed:
Finally, the plugins step allows currently installed plugins to be upgraded or removed, and for plugins not currently installed, to be downloaded and installed:
Upgrade using the command lineedit
A command line upgrade requires passing the same command line properties as used at first install time; the Windows Installer does not remember these properties.
The simplest upgrade, assuming Elasticsearch was installed using all defaults, is achieved by first navigating to the download directory, then running:
Similar to the install process, a path to a log file for the upgrade process can be passed using the /l command line argument