Elasticsearch. Развёртывание без сертификатов подлинности
Введение
Для работы ПО Comindware Platform требуется сервер Elasticsearch версии не ниже 8.10.2.
Здесь представлены требования к конфигурации компьютеров, инструкции по установке Elasticsearch, и настройке узлов кластера Elasticsearch без проверки сертификатов подлинности на виртуальных машинах с ОС Linux на базе Debian.
Только после запуска службы Elasticsearch можно приступать к развертыванию Comindware Platform, указав путь к серверу Elasticsearch.
Настройка OpenSearch
Настроить сертификаты подлинности для OpenSearch можно аналогичным образом, при необходимости скорректировав шаги в соответствии с особенностями OpenSearch и вашей конкретной конфигурации.
Подготовка физических и виртуальных машин, пакетов программ
Установка в минимальной конфигурации выполняется на 3 разделённых виртуальных машинах.
Для полнофункциональной отказоустойчивой системы требуется установка на 4 виртуальных машинах, расположенных на как минимум 3 физических машинах (IP-адреса приведены ниже исключительно для примера).
Пример конфигурации серверов
masterdatanode1c IP-адресом1.1.1.1и ролямиdata,master,ingest.- ОЗУ не менее 8 ГБ, 4 ядра, SSD не менее 30 ГБ.
datanode2c IP-адресом1.1.1.2и ролямиdata,ingest.- ОЗУ не менее 8 ГБ, 4 ядра, SSD не менее 30 ГБ.
masternode3c IP-адресом1.1.1.3и рольюmaster.- ОЗУ не менее 4 ГБ, 4 ядра, SSD не менее 30 ГБ.
masternode4c IP-адресом1.1.1.4и ролью master типаvoting_only.- ОЗУ не менее 4 ГБ, 4 ядра, SSD не менее 30 ГБ.
Серверы masterdatanode1 и datanode2 необходимо разместить на разных физических машинах.
На все машины в папку /home/username необходимо загрузить:
deb-пакетelasticsearch-8.5.1-amd64.debyml-файл конфигурации для ElasticsearchcustomElasticConfig.yml
Установка Elasticsearch из deb-пакета
Повторите шаги, описанные в этом разделе, для каждого из узлов Elasticsearch.
-
Обновите ПО на сервере:
sudo apt update && sudo apt upgrade -y && sudo rebootВ процессе обновления сервер перезагрузится.
-
Перейдите в папку пользователя:
cd /home/username/ -
Запустите процесс установки Elasticsearch:
sudo dpkg --install elasticsearch-8.5.1-amd64.debПо окончании установки машина выдаст отчёт:
Setting up elasticsearch (8.10.2) ...---------------------------Security autoconfiguration informationAuthentication and authorization are enabled.TLS for the transport and HTTP layers is enabled and configured.The generated password for the elastic built-in superuser is : wfcEcSTqfyttNCNdpQgvIf this node should join an existing cluster, you can reconfigure this with'/usr/share/elasticsearch/bin/elasticsearch-reconfigure-node --enrollment-token <token-here>'after creating an enrollment token on your existing cluster.You can complete the following actions at any time:Reset the password of the elastic built-in superuser with'/usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic'.Generate an enrollment token for Kibana instances with'/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana'.Generate an enrollment token for Elasticsearch nodes with'/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node'.--------------------------------------------------------------------- -
Обратите внимание на строку
The generated password for the elastic built-in superuser is— напротив неё будет выведен автоматически сформированный пароль для встроенного суперпользователя elastic. Сохраните этот пароль.
Конфигурация Elasticsearch
Повторите шаги, описанные в этом разделе, для каждого из узлов Elasticsearch.
Помните, что имя кластера cluster.name для каждого из узлов должно совпадать, а имя узла node.name должно быть уникальным.
-
Создайте папки, в которые Elasticsearch будет сохранять данные журналов, индексов и резервных копий:
sudo mkdir /var/elasticsearchsudo mkdir /var/elasticsearch/datasudo mkdir /var/elasticsearch/logssudo mkdir /var/elasticsearch/backups -
Измените владельца папки и права доступа к ней:
sudo chown elasticsearch:elasticsearch --recursive /var/elasticsearch/sudo chmod 764 --recursive /var/elasticsearch/ -
Создайте папку для хранения резервной копии
yml-файла конфигурации Elasticsearch:sudo mkdir /etc/elasticsearch/backupConfig -
Переместите
yml-файл конфигурации Elasticsearch в папку/etc/elasticsearch/backupConfig:sudo mv /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/backupConfig -
Создайте новый
yml-файл конфигурации Elasticsearchelasticsearch.yml:sudo nano /etc/elasticsearch/elasticsearch.yml -
Скопируйте в созданный файл конфигурации следующее содержимое:
bootstrap.memory_lock: falsecluster.name: elasticsearch.example.cbapcluster.max_shards_per_node: 10000http.port: 9200node.roles: [ master, data, ingest, remote_cluster_client ]node.name: elasticsearch1path.data: /var/elasticsearch/datapath.logs: /var/elasticsearch/logspath.repo: /var/elasticsearch/backupsxpack.security.enabled: falsexpack.security.http.ssl:enabled: false# keystore.path: certs/es1.p12 # [<-] specify path to signedNodeCert.p12 herexpack.security.transport.ssl:enabled: false# key: certs/es1.key # [<-] specify path to nodecert.key here# certificate: certs/es1.crt # [<-] specify path to nodeCert.crt here# certificate_authorities: [ "certs/CMW-RootCA.crt" ] # [<-] specify path to CACert.crt herenetwork.host: 192.168.1.43discovery.seed_hosts : ["192.168.1.43", "192.168.1.42","1.1.1.3"]cluster.initial_master_nodes:- elasticsearch1- elasticsearch2- elasticsearch3#Этот флаг требуется для записи данных в индексыindices.id_field_data.enabled: true -
Сохраните изменения
yml-файла конфигурации закройте текстовый редактор Nano, нажав клавиши: ++ctrl+O++, Ввод, Ctrl+X. -
Измените для
yml-файла конфигурации Elasticsearch владельца и права доступа:sudo chown elasticsearch:elasticsearch --recursive /etc/elasticsearch/elasticsearch.ymlsudo chmod 764 --recursive /etc/elasticsearch/elasticsearch.yml -
Откройте в текстовом редакторе Nano
yml-файл конфигурации Elasticsearch:sudo nano /etc/elasticsearch/elasticsearch.yml -
Задайте имя кластера с помощью директивы
cluster.nameв строке 2yml-файла конфигурации:cluster.name: elasticsearch.example.cbapПримечание
Имя кластера должно быть одинаковым для всех узлов кластера Elasticsearch.
-
Задайте имя узла с помощью директивы
node.nameв строке 11yml-файла конфигурации.Примечание
Имя узла должно быть уникальным для каждого из узлов кластера Elasticsearch:
node.name: elasticsearch1 -
Укажите путь до директории, в которую настраиваемый узел Elasticsearch будет сохранять файлы данных шардов, отредактировав строку 13:
path.data: /var/elasticsearch/data -
Укажите путь до директории, в которую настраиваемый узел Elasticsearch будет сохранять файлы логов, отредактировав строку 14:
path.logs: /var/elasticsearch/logs -
Укажите путь до директории, в которую настраиваемый узел Elasticsearch будет сохранять файлы резервного копирования, отредактировав строку 15:
path.repo: /var/elasticsearch/backups -
Укажите уникальный IP-адрес (как пример - 192.168.ХХХ.1) машины настраиваемого узла Elasticsearch, отредактировав строку 29:
network.host: 192.168.XXX.1 -
Задайте список IP-адресов машин (как пример - 192.168.XXX.1, 192.168.XXX.2, 192.168.XXX.3), на которых будут расположены узлы кластера Elasticsearch, отредактировав строку 31. Например, для кластера из трех узлов, директива будет вот такой:
discovery.seed_hosts : ["192.168.XXX.1", "192.168.XXX.2","192.168.XXX.3"] -
Сохраните изменения
yml-файла конфигурации и закройте текстовый редактор Nano, нажав клавиши: ++ctrl+O++, Ввод, Ctrl+X.
Запуск Elasticsearch
Повторите шаги, описанные в этом разделе, для каждого из узлов Elasticsearch.
-
Перезагрузите конфигурацию
systemd:sudo systemctl daemon-reload -
Добавьте процесс
elasticsearch.serviceв список автозагрузки при запуске ОС и запустите его:sudo systemctl enable --now elasticsearch.service -
Убедитесь, что процесс
elasticsearch.serviceзапустился:sudo systemctl status elasticsearch.serviceПример результата проверки статуса процесса elasticsearch.serviceelasticsearch.service - ElasticsearchLoaded: loaded (/lib/systemd/system/elasticsearch.service; enabled; vendor preset: enabled)Active: active (running) since Thu 2022-12-01 10:12:27 UTC; 6s agoDocs: <<https://www.elastic.co>>Main PID: 3597 (java)Tasks: 63 (limit: 4575)Memory: 629.9MCPU: 44.422sCGroup: /system.slice/elasticsearch.service├─3597 /usr/share/elasticsearch/jdk/bin/java -Xms4m -Xmx64m -XX:+UseSerialGC -Dcli.name=server -Dcli.scri>├─3656 /usr/share/elasticsearch/jdk/bin/java -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.n>└─3676 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controllerDec 01 10:11:12 penguin-02 systemd[1]: Starting Elasticsearch...Dec 01 10:12:27 penguin-02 systemd[1]: Started Elasticsearch.Примечание
В случае возникновения ошибок при запуске процесса
elasticsearch.serviceрекомендуется изучить файл журнала:sudo less /var/elasticsearch/logs/yourClusterName.log -
С помощью curl убедитесь, что REST API узла Elasticsearch доступен:
sudo curl <http://192.168.XXX.XX>Х:9200Пример ответа на запрос:
{"name" : "elasticsearch1","cluster_name" : "yourClusterName","cluster_uuid" : "Xfj14lWBRf2c6GAuwtV5lg","version" : {"number" : "8.5.1","build_flavor" : "default","build_type" : "deb","build_hash" : "c1310c45fc534583afe2c1c03046491efba2bba2","build_date" : "2022-11-09T21:02:20.169855900Z","build_snapshot" : false,"lucene_version" : "9.4.1","minimum_wire_compatibility_version" : "7.17.0","minimum_index_compatibility_version" : "7.0.0"},"tagline" : "You Know, for Search"}
Проверка состояния кластера
-
Выполнив для каждого из узлов кластера Elasticsearch шаги, описанные в предыдущих разделах, от любого из узлов выполните GET-запрос проверки состояния кластера:
sudo curl <http://192.168.XXX.XX1:9200/_cluster/health?pretty>> -
Убедитесь, что в ответе на запрос значение параметра
number_of_nodesравно количеству узлов кластера:{"cluster_name" : "yourClusterName","status" : "green","timed_out" : false,"number_of_nodes" : 2,"number_of_data_nodes" : 2,"active_primary_shards" : 1,"active_shards" : 2,"relocating_shards" : 0,"initializing_shards" : 0,"unassigned_shards" : 0,"delayed_unassigned_shards" : 0,"number_of_pending_tasks" : 0,"number_of_in_flight_fetch" : 0,"task_max_waiting_in_queue_millis" : 0,"active_shards_percent_as_number" : 100.0}
Пример yml-файла конфигурации узла Elasticsearch
bootstrap.memory_lock: false
cluster.name: elasticsearch.example.cbap
cluster.max_shards_per_node: 10000
http.port: 9200
node.roles: [ master, data, ingest, remote_cluster_client ]
node.name: elasticsearch1
path.data: /var/elasticsearch/data
path.logs: /var/elasticsearch/logs
path.repo: /var/elasticsearch/backups
xpack.security.enabled: false
xpack.security.http.ssl:
enabled: false
# keystore.path: certs/es1.p12 # [<-] specify path to signedNodeCert.p12 here
xpack.security.transport.ssl:
enabled: false
# key: certs/es1.key # [<-] specify path to nodecert.key here
# certificate: certs/es1.crt # [<-] specify path to nodeCert.crt here
# certificate_authorities: [ "certs/CMW-RootCA.crt" ] # [<-] specify path to CACert.crt here
network.host: 192.168.1.43
discovery.seed_hosts : ["192.168.1.43", "192.168.1.42","1.1.1.3"]
cluster.initial_master_nodes:
- elasticsearch1
- elasticsearch2
- elasticsearch3
Эта статья была полезна 1 чел.