Клиент обращается к Elasticsearch по HTTP, а он ждёт HTTPS
Предупреждение Elasticsearch «received plaintext http traffic on an https channel, closing connection»: какой-то клиент ходит по http:// на порт, где включён TLS. Как найти клиента по remoteAddress и что поменять в его настройках.
Что это значит
В Elasticsearch 8 защита и TLS на HTTP-порту включены по умолчанию. Если клиент подключается по http://, Elasticsearch закрывает соединение и пишет предупреждение. Клиент получает пустой ответ или обрыв соединения.
В тексте есть адрес клиента: remoteAddress=/10.0.0.15:51022. Обычно это сервис, настроенный под старую установку без TLS: индексирование RX, экспортер метрик, сборщик журналов, скрипт проверки.
Как проверить
- Адрес из
remoteAddressсопоставить с серверами: какой сервис на нём работает. - Проверить, как отвечает Elasticsearch по HTTPS:
curl -s --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic https://es01:9200/_cluster/health
- В настройках найденного клиента посмотреть адрес Elasticsearch: схема
httpилиhttps.
Что сделать
- Поменять адрес в настройках клиента на
https://и указать ему сертификат удостоверяющего центра Elasticsearch, иначе следующей ошибкой будет недоверенный сертификат (PKIX path building failed у Java-клиентов). - Если клиент не умеет TLS, поставить перед Elasticsearch прокси, который принимает HTTP во внутренней сети и ходит к Elasticsearch по HTTPS. Отключать TLS на самом Elasticsearch не стоит.
Ошибка повторяется?
Запустите Диагностика: за полминуты он покажет состояние базы, брокера, поиска и сервера. С отчётом разберём причину за 30 минут бесплатного созвона.
Написать