|
<< Показать Оглавление >> Установка > Установка и обновление сервиса статистики Установка и настройка ElasticSearch |
![]()
|
Для настройки сервера Dictation Server потребуются следующие параметры установленного ElasticSearch:
•Имена хостов, на которых установлен ElasticSearch (на ОС Linux или Windows)
•Порт подключения
•Логин и пароль учетной записи в ElasticSearch
•Протокол, по которому происходит подключение
Требования
Рекомендуется, чтобы:
•сервис статистики был установлен на главном узле кластера ElasticSearch;
•всего в кластере было установлено не менее трех экземпляров ElasticSearch 7.10 (строго эта версия).
Три экземпляра ElasticSearch обеспечивают отказоустойчивость: при сбое главного узла решение о назначении нового главного узла исходит от оставшихся узлов. Это решение формируется после ответа как минимум двух узлов.
Если узлов в кластере меньше трех, при сбое главного узла назначить новый главный узел будет невозможно и запросы к системе не будут выполняться.
Установка ElasticSearch на ОС Linux
Инструкции по установке пакета ElasticSearch на ОС Linux актуальны только для ОС Astra Linux Smolensk 1.7.5. |
Установка с помощью готового скрипта
Установить ElasticSearch можно из установочного пакета, входившего в вашу поставку, с помощью готового скрипта. В процессе установки будут заданы нужные настройки.
1.Создайте файл script_install.sh и сохраните в нем код ниже.
#!/bin/bash set -e
path_to_elastic=$1 elasticsearch_hosts=$2
#проверяет, что параметр path_to_elastic не пуст if [ -z "${path_to_elastic}" ] || [ "${path_to_elastic}" = '""' ] ; then echo "Not found parameter for elasticsearch package" exit 1 fi
#устанавливает пакет ElasticSearch dpkg -i "$path_to_elastic"
#проверяет, что параметр elasticsearch_hosts не пуст и создает переменные для файла конфигурации if [ -z "${elasticsearch_hosts}" ] || [ "${elasticsearch_hosts}" = '""' ] ; then echo "Not found parameter for elasticsearch hosts" exit 1 else for i in $elasticsearch_hosts do ping_hosts+="\"$i:9300\", " nodes_hosts+="\"$i\", " done
#правит файл конфигурации ElasticSearch cat <<EOT > /etc/elasticsearch/elasticsearch.yml bootstrap.memory_lock: false cluster.name: dictation http.port: 9200 node.data: true node.master: true node.name: $(echo "$elasticsearch_hosts" | cut -d" " -f1) path.data: /var/lib/elasticsearch path.logs: /var/log/elasticsearch transport.tcp.port: 9300 discovery.zen.ping.unicast.hosts: [${ping_hosts::-2}] discovery.zen.minimum_master_nodes: 1 network.host: 0.0.0.0 cluster.initial_master_nodes: [${nodes_hosts::-2}] EOT fi
#запускает ElasticSearch systemctl enable elasticsearch.service systemctl start elasticsearch.service |
2.Запустите скрипт с помощью команд:
sudo chmod +x script_install.sh
sudo ./script_install.sh "<путь до установщика elasticsearch 7.10.0>" "<IP текущей машины> <IP 2-го хоста> <IP 3-го хоста>"
Параметры команды:
•путь до пакета ElasticSearch (пакет входит в вашу поставку);
•IP-адреса хостов, которые будут использоваться для кластера ElasticSearch. Первым должен идти адрес текущего хоста, на котором запускается скрипт.
Скрипт нужно запустить последовательно на каждом хосте, который входит в кластер.
Роль главного хоста будет выполнять тот хост, который запустится первым. |
Установка вручную на три узла
1.Загрузите пакет для установки ElasticSearch, входивший в вашу поставку, и установите его:
wget https://ftp.speechpro.com/ST/DevOps/Distr/elasticsearch-7.10.0-amd64.deb
sudo dpkg -i elasticsearch-7.10.0-amd64.deb
2.Приведите файл конфигурации ElasticSearch /etc/elasticsearch/elasticsearch.yml к следующему виду (в этом примере показана установка на три узла):
bootstrap.memory_lock: false cluster.name: dictation http.port: 9200 node.data: true node.master: true node.name: <IP текущей машины> path.data: /var/lib/elasticsearch path.logs: /var/log/elasticsearch transport.tcp.port: 9300 discovery.zen.ping.unicast.hosts: ["<IP текущей машины>:9300", "<IP 2-го хоста>:9300", "<IP 3-го хоста>:9300"] discovery.zen.minimum_master_nodes: 1 network.host: 0.0.0.0 cluster.initial_master_nodes: ["<IP текущей машины>", "<IP 2-го хоста>", "<IP 3-го хоста>"] |
3.Активируйте и запустите службу:
sudo systemctl enable elasticsearch.service
sudo systemctl start elasticsearch.service
Установка вручную на один узел
1.Загрузите пакет для установки ElasticSearch, входивший в вашу поставку, и установите его:
wget https://ftp.speechpro.com/ST/DevOps/Distr/elasticsearch-7.10.0-amd64.deb
sudo dpkg -i elasticsearch-7.10.0-amd64.deb
2.Приведите файл конфигурации ElasticSearch /etc/elasticsearch/elasticsearch.yml к следующему виду:
bootstrap.memory_lock: false cluster.name: dictation http.port: 9200 node.data: true node.master: true node.name: <IP текущей машины> path.data: /var/lib/elasticsearch path.logs: /var/log/elasticsearch network.host: <IP текущей машины> discovery.type: single-node # параметр, необходимый для работы ElasticSearch, если он развернут на одном узле |
3.Активируйте и запустите службу:
sudo systemctl enable elasticsearch.service
sudo systemctl start elasticsearch.service
Настройка авторизации по логину и паролю
При установке на один узел:
1.Добавьте в файл конфигурации /etc/elasticsearch/elasticsearch.yml строку:
| xpack.security.enabled: true |
2.Задайте пароль пользователю, который будет подключаться к ElasticSearch, командой:
/usr/share/elasticsearch/bin/elasticsearch-users useradd {{ elasticsearch_user }} -p {{ elasticsearch_password }} -r {{ elasticsearch_role }}
Параметры команды:
•elasticsearch_user — пользователь, который будет входить в систему;
•elasticsearch_password — пароль для этого пользователя;
•elasticsearch_role — роль пользователя.
Пример:
/usr/share/elasticsearch/bin/elasticsearch-users useradd admin -p 1q2w3E4R -r superuser
При установке на несколько узлов:
1.Остановите службу ElasticSearch:
sudo systemctl stop elasticsearch.service
2.Добавьте в файл конфигурации /etc/elasticsearch/elasticsearch.yml строку:
| xpack.security.enabled: true |
3.Сформируйте внутренний сертификат:
a.Создайте центр сертификации кластера на любом узле кластера с помощью инструмента elasticsearch-certutil. Задайте пароль либо используйте настройки по умолчанию:
/usr/share/elasticsearch/bin/elasticsearch-certutil ca
| Присвойте имя elastic-stack-ca.p12 созданному файлу. |
b.Сформируйте сертификат и закрытый ключ для узлов кластера в центре сертификации. Включите в команду файл elastic-stack-ca.p12, созданный на предыдущем шаге.
/usr/share/elasticsearch/bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
| Перейдите в директорию /usr/share/elasticsearch/ и скопируйте созданный сертификат. |
4.Скопируйте сертификат elastic-certificates.p12 в директорию /etc/elasticsearch/ на каждом узле кластера.
5.Убедитесь, что права настроены корректно:
chown elasticsearch: /etc/elasticsearch/elastic-certificates.p12
6.Если вы задавали пароль при создании сертификата для узлов кластера, сохраните этот пароль в хранилище ключей ElasticSearch. Для этого выполните приведенные ниже команды на каждом узле кластера.
/usr/share/elasticsearch/bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
/usr/share/elasticsearch/bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
7.Убедитесь, что скопировали сертификат на все узлы кластера, и добавьте в файлы конфигурации /etc/elasticsearch/elasticsearch.yml каждого узла строки:
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.client_authentication: required
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
8.На каждом узле кластера задайте пароль пользователю, который будет подключаться к ElasticSearch, командой:
/usr/share/elasticsearch/bin/elasticsearch-users useradd {{ elasticsearch_user }} -p {{ elasticsearch_password }} -r {{ elasticsearch_role }}
| Параметры команды: |
•elasticsearch_user — пользователь, который будет входить в систему;
•elasticsearch_password — пароль для этого пользователя;
•elasticsearch_role — роль пользователя.
| Пример: |
/usr/share/elasticsearch/bin/elasticsearch-users useradd admin -p 1q2w3E4R -r superuser
9.Запустите службу ElasticSearch.
Установка ElasticSearch на ОС Windows
При установке пакета ElasticSearch на ОС Windows необходимо также установить и настроить nginx. |
Установка через графический интерфейс инсталлятора
1.Запустите инсталлятор. В первом окне убедитесь, что напротив Use default directories установлен флажок, и нажмите Next.
2.Во втором окне убедитесь, что выбраны следующие опции:
oInstall as a service;
oВ блоке Account information выбрано Use Local System Account.
3.Нажмите Next.
4.В третьем окне заполните только следующие поля (остальные заполнятся автоматически):
oВ блоке Network укажите в поле Network host IP-адрес текущего узла.
oВ блоке Discovery установите флажок напротив опции This is the first master in a new cluster. Этот флажок устанавливается для каждого узла с ElasticSearch.
oВ блоке Discovery в поле Seed Hosts введите адреса дополнительных хостов для ElasticSearch (всех остальных хостов кластера) с портом, который автоматически подставится в поле Transport Port (см.рисунок Установка ElasticSearch через графический интерфейс в ОС Windows).
5.Пройдите остальные шаги до завершения установки, не меняя настроек по умолчанию.

Установка ElasticSearch через графический интерфейс в ОС Windows
6.Если вы устанавливаете ElasticSearch только на один узел, приведите файл конфигурации %ProgramData%\Elastic\Elasticsearch\config\elasticsearch.yml к следующему виду:
bootstrap.memory_lock: false cluster.name: dictation http.port: 9200 node.data: true node.master: true node.name: <IP текущей машины> path.data: C:\ProgramData\Elastic\Elasticsearch\data path.logs: C:\ProgramData\Elastic\Elasticsearch\logs network.host: <IP текущей машины> discovery.type: single-node # параметр, необходимый для работы ElasticSearch, если он установлен на одном узле |
Тихая установка
Вы можете установить ElasticSearch в тихом режиме.
1.В командной строке выполните команду:
msiexec.exe /i elasticsearch-7.10.0.msi /qn |
2.Приведите файл конфигурации %ProgramData%\Elastic\Elasticsearch\config\elasticsearch.yml к следующему виду.
| При установке на один узел: |
bootstrap.memory_lock: false cluster.name: dictation http.port: 9200 node.data: true node.master: true node.name: <IP текущей машины> path.data: C:\ProgramData\Elastic\Elasticsearch\data path.logs: C:\ProgramData\Elastic\Elasticsearch\logs network.host: <IP текущей машины> discovery.type: single-node # параметр, необходимый для работы ElasticSearch, если он установлен на одном узле |
| При установке на три узла: |
bootstrap.memory_lock: false cluster.initial_master_nodes: - <IP текущей машины> - <IP 2-го хоста> - <IP 3-го хоста> cluster.name: elasticsearch discovery.seed_hosts: - <IP 2-го хоста>:9300 - <IP 3-го хоста>:9300 http.port: 9200 network.host: <IP текущей машины> node.data: true node.ingest: true node.master: true node.max_local_storage_nodes: 1 node.name: <IP текущей машины> path.data: C:\ProgramData\Elastic\Elasticsearch\data path.logs: C:\ProgramData\Elastic\Elasticsearch\logs transport.tcp.port: 9300 xpack.license.self_generated.type: basic xpack.security.enabled: false |
1.Установите nginx.
2.Добавьте в секцию http файла конфигурации nginx.conf (расположение зависит от места установки, например С:\nginx\conf\nginx.conf) следующие строки:
server { listen 19200; server_name <IP текущей машины>;
location / { proxy_pass http://<IP текущей машины>:9200/; proxy_redirect off; add_header x-elastic-product "Elasticsearch"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } |
3.Запустите nginx.
4.Повторите для каждого узла (при установке ElasticSearch на несколько узлов).
5.Укажите в файлах конфигурации сервера и сервиса статистики адрес http://<IP главного узла>:19200/ для подключения к ElasticSearch.
Настройка авторизации по логину и паролю
При установке на один узел:
1.Добавьте в файл конфигурации строку:
| xpack.security.enabled: true |
2.Запустите командную строку от имени администратора.
3.Выполните команду для задания пароля пользователю, который будет подключаться к ElasticSearch:
"C:\Program Files\Elastic\Elasticsearch\7.10.0\bin\elasticsearch-users" useradd {{ elasticsearch_user }} -p {{ elasticsearch_password }} -r {{ elasticsearch_role }}
Параметры команды:
•elasticsearch_user — пользователь, который будет входить в систему;
•elasticsearch_password — пароль для этого пользователя;
•elasticsearch_role — роль пользователя.
Пример:
"C:\Program Files\Elastic\Elasticsearch\7.10.0\bin\elasticsearch-users" useradd admin -p 1q2w3E4R -r superuser
4.Перезапустите службу ElasticSearch.
При установке на несколько узлов:
1.Остановите службу ElasticSearch через Службы.
2.Добавьте в файл конфигурации %ProgramData%\Elastic\Elasticsearch\config\elasticsearch.yml строку:
| xpack.security.enabled: true |
3.Запустите командную строку от имени администратора.
4.Сформируйте внутренний сертификат:
a.Создайте центр сертификации кластера на любом узле кластера с помощью инструмента elasticsearch-certutil. Задайте пароль либо используйте настройки по умолчанию:
"C:\Program Files\Elastic\Elasticsearch\7.10.0\bin\elasticsearch-certutil" ca
| Присвойте имя elastic-stack-ca.p12 созданному файлу. |
b.Сформируйте сертификат и закрытый ключ для узлов кластера в центре сертификации. Включите в команду файл elastic-stack-ca.p12, созданный на предыдущем шаге.
"C:\Program Files\Elastic\Elasticsearch\7.10.0\bin\elasticsearch-certutil" cert --ca elastic-stack-ca.p12
| Перейдите в папку %Programfiles%\Elastic\Elasticsearch\7.10.0 и скопируйте из нее сертификат. |
5.Скопируйте сертификат elastic-certificates.p12 в папку %ProgramData%\Elastic\Elasticsearch\config на каждом узле кластера.
6.Если вы задавали пароль при создании сертификата для узлов кластера, сохраните этот пароль в хранилище ключей ElasticSearch. Для этого выполните приведенные ниже команды на каждом узле кластера.
"C:\Program Files\Elastic\Elasticsearch\7.10.0\bin\elasticsearch-keystore" add xpack.security.transport.ssl.keystore.secure_password
"C:\Program Files\Elastic\Elasticsearch\7.10.0\bin\elasticsearch-keystore" add xpack.security.transport.ssl.truststore.secure_password
7.Убедитесь, что скопировали сертификат на все узлы кластера, и добавьте в конец файла конфигурации %ProgramData%\Elastic\Elasticsearch\config\elasticsearch.yml каждого узла строки:
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.client_authentication: required
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
8.На каждом узле кластера задайте пароль пользователю, который будет подключаться к ElasticSearch, командой:
"C:\Program Files\Elastic\Elasticsearch\7.10.0\bin\elasticsearch-users" useradd {{ elasticsearch_user }} -p {{ elasticsearch_password }} -r {{ elasticsearch_role }}
Параметры команды:
•elasticsearch_user — пользователь, который будет входить в систему;
•elasticsearch_password — пароль для этого пользователя;
•elasticsearch_role — роль пользователя.
Пример:
"C:\Program Files\Elastic\Elasticsearch\7.10.0\bin\elasticsearch-users" useradd admin -p 1q2w3E4R -r superuser
9.Запустите службу ElasticSearch.
Проверка состояния
Проверить состояние кластера ElasticSearch можно с помощью запросов в браузере.
http://<IP главного узла>:9200/_cluster/state |
Этот запрос выведет все узлы кластера с указанием главного узла.
Пример вывода:

Вывод состава кластера
http://<IP главного узла>:9200/_cluster/health |
Этот запрос выведет состояние кластера.
Пример вывода:

Вывод состояния кластера