Запуск Elasticsearch
Метод запуска Elasticsearch зависит от способа его установки.
Архивные пакеты (.tar.gz)
Если Elasticsearch установлен с помощью пакета .tar.gz, вы можете запустить его из командной строки.
Запуск Elasticsearch из командной строки
Выполните следующую команду для запуска Elasticsearch из командной строки:
./bin/elasticsearch
При первом запуске Elasticsearch по умолчанию включены и сконфигурированы функции безопасности. Следующая конфигурация безопасности происходит автоматически:
- Включены аутентификация и авторизация, и генерируется пароль для встроенного суперпользователя
elastic. - Генерируются сертификаты и ключи для TLS для транспортного и HTTP-слоёв, и TLS включен и настроен с помощью этих ключей и сертификатов.
- Генерируется токен регистрации для Kibana, действительный в течение 30 минут.
Пароль для пользователя elastic и токен регистрации для Kibana выводятся в терминал.
Рекомендуется сохранить пароль elastic как переменную среды в вашей оболочке. Пример:
export ELASTIC_PASSWORD="your_password"
Если вы защитили хранилище ключей Elasticsearch паролем, вам будет предложено ввести пароль хранилища ключей. Подробнее см. Настройки безопасности.
По умолчанию Elasticsearch выводит свои логи в консоль (stdout) и в файл <cluster
name>.log в каталоге логов путь к каталогу. Elasticsearch записывает некоторую информацию во время запуска, но после завершения инициализации он продолжает работу в фоновом режиме и не будет ничего больше записывать, пока не произойдёт событие, которое стоит зафиксировать. Во время работы Elasticsearch вы можете взаимодействовать с ним через его HTTP-интерфейс по порту 9200 по умолчанию.
Для остановки Elasticsearch нажмите Ctrl-C.
Все скрипты, входящие в состав Elasticsearch, требуют версию Bash, поддерживающую массивы, и предполагают, что Bash доступен по адресу /bin/bash. Поэтому Bash должен быть доступен по этому пути, либо напрямую, либо через символическую ссылку.
Зачисление узлов в существующий кластер
При первом запуске Elasticsearch процесс автоматической настройки безопасности привязывает HTTP-слой к 0.0.0.0, но только транспортный слой к localhost. Такое поведение обеспечивает возможность запуска кластера из одного узла с включенной по умолчанию безопасностью без дополнительной конфигурации.
Перед зачислением нового узла в производственных кластерах обычно необходимы дополнительные действия, такие как привязка к адресу, отличному от localhost, или выполнение проверок инициализации. В это время автоматически сгенерированный токен регистрации может истечь, поэтому токены регистрации не генерируются автоматически.
Кроме того, без дополнительной конфигурации к кластеру могут присоединиться только узлы на том же хосте. Если вы хотите, чтобы узлы с другого хоста присоединились к вашему кластеру, необходимо установить transport.host на поддерживаемое значение (например, раскомментировать предложенное значение 0.0.0.0) или IP-адрес, привязанный к интерфейсу, к которому другие хосты могут получить доступ. Дополнительная информация приведена в разделе настройки транспорта.
Для зачисления новых узлов в ваш кластер создайте токен регистрации с помощью инструмента elasticsearch-create-enrollment-token на любом существующем узле в вашем кластере. Затем вы можете запустить новый узел с параметром --enrollment-token, чтобы он присоединился к существующему кластеру.
-
В отдельном терминале от того, где запущен Elasticsearch, перейдите в каталог, где вы установили Elasticsearch, и запустите инструмент
elasticsearch-create-enrollment-tokenдля генерации токена регистрации для новых узлов.bin/elasticsearch-create-enrollment-token -s node
Скопируйте токен регистрации, который вы будете использовать для зачисления новых узлов в ваш кластер Elasticsearch.
-
Из каталога установки нового узла запустите Elasticsearch и передайте токен регистрации с параметром
--enrollment-token.bin/elasticsearch --enrollment-token <enrollment-token>
Elasticsearch автоматически генерирует сертификаты и ключи в следующем каталоге:
config/certs
- Повторите предыдущий шаг для всех новых узлов, которые вы хотите добавить.
Запуск в качестве демона
Для запуска Elasticsearch в качестве демона укажите -d в командной строке и запишите идентификатор процесса в файл с помощью опции -p:
./bin/elasticsearch -d -p pid
Если вы защитили хранилище ключей Elasticsearch паролем, вам будет предложено ввести пароль хранилища ключей. Подробнее см. Настройки безопасности.
Логи можно найти в каталоге $ES_HOME/logs/.
Для остановки Elasticsearch убейте процесс с идентификатором, записанным в файл pid:
pkill -F pid
Архивные пакеты (.zip)
Если вы установили Elasticsearch на Windows с помощью пакета .zip, вы можете запустить Elasticsearch из командной строки. Если вы хотите, чтобы Elasticsearch запускался автоматически при загрузке без взаимодействия с пользователем, установите Elasticsearch как службу.
Запуск Elasticsearch из командной строки
Выполните следующую команду для запуска Elasticsearch из командной строки:
.\bin\elasticsearch.bat
При первом запуске Elasticsearch по умолчанию включены и сконфигурированы функции безопасности. Следующая конфигурация безопасности происходит автоматически:
- Включены аутентификация и авторизация, и генерируется пароль для встроенного суперпользователя
elastic. - Генерируются сертификаты и ключи для TLS для транспортного и HTTP-слоёв, и TLS включен и настроен с помощью этих ключей и сертификатов.
- Генерируется токен регистрации для Kibana, действительный в течение 30 минут.
Пароль для пользователя elastic и токен регистрации для Kibana выводятся в терминал.
Рекомендуется сохранить пароль elastic как переменную среды в вашей оболочке. Пример:
$ELASTIC_PASSWORD = "your_password"
Если вы защитили хранилище ключей Elasticsearch паролем, вам будет предложено ввести пароль хранилища ключей. Подробнее см. Настройки безопасности.
По умолчанию Elasticsearch выводит свои логи в консоль (STDOUT) и в файл <cluster
name>.log в каталоге логов путь к каталогу. Elasticsearch записывает некоторую информацию во время запуска, но после завершения инициализации он продолжает работу в фоновом режиме и не будет ничего больше записывать, пока не произойдёт событие, которое стоит зафиксировать. Во время работы Elasticsearch вы можете взаимодействовать с ним через его HTTP-интерфейс по порту 9200 по умолчанию.
Для остановки Elasticsearch нажмите Ctrl-C.
Зачисление узлов в существующий кластер
При первом запуске Elasticsearch процесс автоматической настройки безопасности привязывает HTTP-слой к 0.0.0.0, но только транспортный слой к localhost. Такое поведение обеспечивает возможность запуска кластера из одного узла с включенной по умолчанию безопасностью без дополнительной конфигурации.
Перед зачислением нового узла в производственных кластерах обычно необходимы дополнительные действия, такие как привязка к адресу, отличному от localhost, или выполнение проверок инициализации. В это время автоматически сгенерированный токен регистрации может истечь, поэтому токены регистрации не генерируются автоматически.
Кроме того, без дополнительной конфигурации к кластеру могут присоединиться только узлы на том же хосте. Если вы хотите, чтобы узлы с другого хоста присоединились к вашему кластеру, необходимо установить transport.host на поддерживаемое значение (например, раскомментировать предложенное значение 0.0.0.0) или IP-адрес, привязанный к интерфейсу, к которому другие хосты могут получить доступ. Дополнительная информация приведена в разделе настройки транспорта.
Для зачисления новых узлов в ваш кластер создайте токен регистрации с помощью инструмента elasticsearch-create-enrollment-token на любом существующем узле в вашем кластере. Затем вы можете запустить новый узел с параметром --enrollment-token, чтобы он присоединился к существующему кластеру.
-
В отдельном терминале от того, где запущен Elasticsearch, перейдите в каталог, где вы установили Elasticsearch, и запустите инструмент
elasticsearch-create-enrollment-tokenдля генерации токена регистрации для новых узлов.bin\elasticsearch-create-enrollment-token -s node
Скопируйте токен регистрации, который вы будете использовать для зачисления новых узлов в ваш кластер Elasticsearch.
-
Из каталога установки нового узла запустите Elasticsearch и передайте токен регистрации с параметром
--enrollment-token.bin\elasticsearch --enrollment-token <enrollment-token>
Elasticsearch автоматически генерирует сертификаты и ключи в следующем каталоге:
config\certs
- Повторите предыдущий шаг для всех новых узлов, которые вы хотите добавить.
Пакеты Debian
Запуск Elasticsearch с systemd
Для автоматического запуска Elasticsearch при загрузке системы выполните следующие команды:
sudo /bin/systemctl daemon-reload sudo /bin/systemctl enable elasticsearch.service
Elasticsearch можно запустить и остановить следующим образом:
sudo systemctl start elasticsearch.service sudo systemctl stop elasticsearch.service
Эти команды не предоставляют обратной связи о том, успешно ли был запущен Elasticsearch. Вместо этого эта информация будет записана в файлы журналов, расположенные в /var/log/elasticsearch/.
Если вы защитили свой хранилище ключей Elasticsearch паролем, вам потребуется предоставить systemd пароль от хранилища ключей с помощью локального файла и переменных среды systemd. Этот локальный файл должен быть защищен во время его существования и может быть безопасно удален после запуска Elasticsearch.
echo "keystore_password" > /path/to/my_pwd_file.tmp chmod 600 /path/to/my_pwd_file.tmp sudo systemctl set-environment ES_KEYSTORE_PASSPHRASE_FILE=/path/to/my_pwd_file.tmp sudo systemctl start elasticsearch.service
По умолчанию служба Elasticsearch не записывает информацию в журнал systemd. Чтобы включить журнал journalctl, необходимо удалить опцию --quiet из командной строки в файле ExecStart в файле elasticsearch.service.
При включенном журнале systemd информация о журналах доступна с помощью следующих команд:
Для просмотра журнала:
sudo journalctl -f
Для просмотра записей журнала для службы elasticsearch:
sudo journalctl --unit elasticsearch
Для просмотра записей журнала для службы elasticsearch, начиная с заданного времени:
sudo journalctl --unit elasticsearch --since "2016-10-30 18:17:16"
См. man journalctl или https://www.freedesktop.org/software/systemd/man/journalctl.html для получения дополнительной информации о параметрах командной строки.
Таймауты запуска со старыми версиями systemd
По умолчанию Elasticsearch устанавливает параметр TimeoutStartSec в значение systemd для 900s. Если вы используете версию systemd не ниже 238, Elasticsearch может автоматически продлить таймаут запуска и будет повторять это до завершения запуска, даже если это займет больше 900 секунд.
Версии systemd до 238 не поддерживают механизм продления таймаута и завершат процесс Elasticsearch, если он не будет полностью запущен в течение настроенного таймаута. Если это произойдет, Elasticsearch сообщит в своих журналах, что был остановлен нормально через короткое время после запуска:
[2022-01-31T01:22:31,077][INFO ][o.e.n.Node ] [instance-0000000123] starting ... ... [2022-01-31T01:37:15,077][INFO ][o.e.n.Node ] [instance-0000000123] stopping ...
Однако журналы systemd сообщат о том, что запуск был прерван по таймауту:
Jan 31 01:22:30 debian systemd[1]: Starting Elasticsearch... Jan 31 01:37:15 debian systemd[1]: elasticsearch.service: Start operation timed out. Terminating. Jan 31 01:37:15 debian systemd[1]: elasticsearch.service: Main process exited, code=killed, status=15/TERM Jan 31 01:37:15 debian systemd[1]: elasticsearch.service: Failed with result 'timeout'. Jan 31 01:37:15 debian systemd[1]: Failed to start Elasticsearch.
Чтобы избежать этого, обновите вашу версию systemd до версии не ниже 238. Вы также можете временно обойти проблему, увеличив параметр TimeoutStartSec.
Изображения Docker
Если вы установили образ Docker, вы можете запустить Elasticsearch из командной строки. Существуют различные методы в зависимости от того, используете ли вы режим разработки или режим производства. См. Запуск Elasticsearch в Docker.
Пакеты RPM
Запуск Elasticsearch с systemd
Для автоматического запуска Elasticsearch при загрузке системы выполните следующие команды:
sudo /bin/systemctl daemon-reload sudo /bin/systemctl enable elasticsearch.service
Elasticsearch можно запустить и остановить следующим образом:
sudo systemctl start elasticsearch.service sudo systemctl stop elasticsearch.service
Эти команды не предоставляют обратной связи о том, успешно ли был запущен Elasticsearch. Вместо этого эта информация будет записана в файлы журналов, расположенные в /var/log/elasticsearch/.
Если вы защитили свой хранилище ключей Elasticsearch паролем, вам потребуется предоставить systemd пароль от хранилища ключей с помощью локального файла и переменных среды systemd. Этот локальный файл должен быть защищен во время его существования и может быть безопасно удален после запуска Elasticsearch.
echo "keystore_password" > /path/to/my_pwd_file.tmp chmod 600 /path/to/my_pwd_file.tmp sudo systemctl set-environment ES_KEYSTORE_PASSPHRASE_FILE=/path/to/my_pwd_file.tmp sudo systemctl start elasticsearch.service
По умолчанию служба Elasticsearch не записывает информацию в журнал systemd. Чтобы включить журнал journalctl, необходимо удалить опцию --quiet из командной строки в файле ExecStart в файле elasticsearch.service.
При включенном журнале systemd информация о журналах доступна с помощью следующих команд:
Для просмотра журнала:
sudo journalctl -f
Для просмотра записей журнала для службы elasticsearch:
sudo journalctl --unit elasticsearch
Для просмотра записей журнала для службы elasticsearch, начиная с заданного времени:
sudo journalctl --unit elasticsearch --since "2016-10-30 18:17:16"
См. man journalctl или https://www.freedesktop.org/software/systemd/man/journalctl.html для получения дополнительной информации о параметрах командной строки.
Таймауты запуска со старыми версиями systemd
По умолчанию Elasticsearch устанавливает параметр TimeoutStartSec в значение systemd для 900s. Если вы используете версию systemd не ниже 238, Elasticsearch может автоматически продлить таймаут запуска и будет повторять это до завершения запуска, даже если это займет больше 900 секунд.
Версии systemd до 238 не поддерживают механизм продления таймаута и завершат процесс Elasticsearch, если он не будет полностью запущен в течение настроенного таймаута. Если это произойдет, Elasticsearch сообщит в своих журналах, что был остановлен нормально через короткое время после запуска:
[2022-01-31T01:22:31,077][INFO ][o.e.n.Node ] [instance-0000000123] starting ... ... [2022-01-31T01:37:15,077][INFO ][o.e.n.Node ] [instance-0000000123] stopping ...
Однако журналы systemd сообщат о том, что запуск был прерван по таймауту:
Jan 31 01:22:30 debian systemd[1]: Starting Elasticsearch... Jan 31 01:37:15 debian systemd[1]: elasticsearch.service: Start operation timed out. Terminating. Jan 31 01:37:15 debian systemd[1]: elasticsearch.service: Main process exited, code=killed, status=15/TERM Jan 31 01:37:15 debian systemd[1]: elasticsearch.service: Failed with result 'timeout'. Jan 31 01:37:15 debian systemd[1]: Failed to start Elasticsearch.
Чтобы избежать этого, обновите вашу версию systemd до версии не ниже 238. Вы также можете временно обойти проблему, увеличив параметр TimeoutStartSec.
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/starting-elasticsearch.html