Вопрос или проблема
Я только что установил almalinux 9.5 на 3 компьютера и затем следовал официальной документации opensearch 1.3.20 для настройки кластера.
Установка была выполнена от пользователя root с помощью следующих команд:
cd /tmp
curl -SL https://artifacts.opensearch.org/releases/bundle/opensearch/1.x/opensearch-1.x.repo -o /etc/yum.repos.d/opensearch-1.x.repo
yum clean all
yum repolist
yum list opensearch --showduplicates
yum install opensearch
systemctl start opensearch
systemctl status opensearch
systemctl restart opensearch.service
less /var/log/opensearch/dw4-mongo-test.log
systemctl status firewalld
firewall-cmd --add-port=9200/tcp --permanent
firewall-cmd --add-port=9300/tcp --permanent
firewall-cmd --add-port=443/tcp --permanent
nano /etc/opensearch/opensearch.yml
systemctl restart opensearch.service
firewall-cmd --reload
sudo systemctl restart opensearch.service
Кластер должен состоять из 3 идентичных узлов, вот файл /etc/opensearch/opensearch.yml одного из узлов
cluster.name: dw4-mongo-test
node.name: dw4-test-node2
path.data: /var/lib/opensearch
path.logs: /var/log/opensearch
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["10.17.60.102", "10.17.60.103", "10.17.60.104"]
cluster.initial_master_nodes: ["dw4-test-node2", "dw4-test-node1", "dw4-test-node3"]
action.destructive_requires_name: true
plugins.security.ssl.transport.pemcert_filepath: esnode.pem
plugins.security.ssl.transport.pemkey_filepath: esnode-key.pem
plugins.security.ssl.transport.pemtrustedcas_filepath: root-ca.pem
plugins.security.ssl.transport.enforce_hostname_verification: false
plugins.security.ssl.http.enabled: false
plugins.security.ssl.http.pemcert_filepath: esnode.pem
plugins.security.ssl.http.pemkey_filepath: esnode-key.pem
plugins.security.ssl.http.pemtrustedcas_filepath: root-ca.pem
plugins.security.allow_unsafe_democertificates: true
plugins.security.allow_default_init_securityindex: true
plugins.security.authcz.admin_dn:
- CN=kirk,OU=client,O=client,L=test, C=de
plugins.security.audit.type: internal_opensearch
plugins.security.enable_snapshot_restore_privilege: true
plugins.security.check_snapshot_restore_write_privileges: true
plugins.security.restapi.roles_enabled: ["all_access", "security_rest_api_access"]
plugins.security.system_indices.enabled: true
plugins.security.system_indices.indices: [".plugins-ml-model", ".plugins-ml-task", ".opendistro-alerting-config", ".opendistro-alerting-alert*", ".opendistro-anomaly-results*", ".opendistro-anomaly-detector*", ".opendistro-anomaly-checkpoints", ".opendistro-anomaly-detection-state", ".opendistro-reports-*", ".opensearch-notifications-*", ".opensearch-notebooks", ".opensearch-observability", ".opendistro-asynchronous-search-response*", ".replication-metadata-store"]
node.max_local_storage_nodes: 3
Я нахожусь в тестовой среде и отключил HTTPS.
но когда я проверяю, создан ли кластер, я получаю 3 отдельных узла вместо кластера из 3 узлов.
curl -XGET http://10.17.60.103:9200/_cat/nodes?v -u 'admin:admin' --insecure
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
10.17.60.103 34 74 0 0.54 0.20 0.07 dimr * dw4-test-node2
curl -XGET http://10.17.60.104:9200/_cat/nodes?v -u 'admin:admin' --insecure
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
10.17.60.104 35 70 6 0.30 0.12 0.04 dimr * dw4-test-node-3
curl -XGET http://10.17.60.102:9200/_cat/nodes?v -u 'admin:admin' --insecure
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
10.17.60.102 36 75 5 0.59 0.22 0.08 dimr * dw4-test-node1
возможно, мне стоит попробовать удалить все данные, созданные opensearch, но я не знаю, как это сделать.
какую директорию мне следует удалить, чтобы сбросить ситуацию?
Ответ или решение
Для создания тестового кластера OpenSearch на трех ПК с AlmaLinux 9.5, при работе в среде тестирования, вы столкнулись с проблемой, когда создается три одиночных кластера вместо одного с тремя узлами. Давайте разберем, как можно решить эту задачу и, при необходимости, как сбросить настройки до начального состояния.
Теория
OpenSearch — это система для поиска и аналитики в реальном времени на основе данных, схожая с Elasticsearch. В кластере OpenSearch каждый узел должен знать о других узлах, чтобы сформировать единое целое. Из файла конфигурации opensearch.yml
видно, что вы правильно указали параметры discovery.seed_hosts
и cluster.initial_master_nodes
. Однако следует учитывать, что для правильной работы кластера важны и другие параметры, такие как настройки сети и безопасности.
Пример
Ваша конфигурация настроена таким образом, что узлы могут не видеть друг друга. Возможные причины:
- Неверно настроены параметры сети и безопасности (например, файрволы).
- Неправильные имени узлов или ошибок в адресах IP.
- Проблемы с сертификацией или неиспользованием HTTPS с выключенным SSL.
Применение
Шаги для диагностики и решения проблемы:
-
Проверьте сетевые настройки: Убедитесь, что все узлы правильно видят друг друга по указанным IP-адресам
10.17.60.102
,10.17.60.103
,10.17.60.104
. Используйте командыping
иtelnet
для проверки соединения по соответствующим портам 9200 и 9300. -
Перепроверьте и исправьте конфигурацию:
- Убедитесь, что в
network.host
указан адрес, который доступен другим узлам (можно использовать 0.0.0.0 для прослушивания всех интерфейсов). - Убедитесь, что имена узлов в
node.name
уникальны и соответствуют указанным вcluster.initial_master_nodes
. - Проверьте правильность сертификации по SSL, если она нужна в конфигурации безопасности, хотя в вашем случае она отключена.
- Убедитесь, что в
-
Проверьте файрвол и SELinux:
- Убедитесь, что порты 9200 и 9300 открыты на всех узлах.
- Если включен SELinux, временно отключите его или настройте соответствующие политики.
-
Сброс данных: Если нужно сбросить настройки до начального состояния, удалите данные индексации:
- Остановите службу OpenSearch:
systemctl stop opensearch
. - Удалите временные данные из директории:
rm -rf /var/lib/opensearch/*
. - Перезапустите службу:
systemctl start opensearch
.
- Остановите службу OpenSearch:
Резюме
При устранении ошибки сети или конфигурации, ваши узлы должны начать взаимодействовать и формировать единый кластер. Если проблема сохраняется, проверьте каждый пункт снова и убедитесь, что узлы могут свободно взаимодействовать между собой. Сброс данных — это радикальный способ, который должен использоваться в крайнем случае и с пониманием возможных рисков утраты данных.