Dockerized elasticsearch и fscrawler: не удалось создать клиента elasticsearch, искатель отключен… В соединении отказано
Я получил следующую ошибку при попытке подключить Dockerized fscrawler к Dockerized elasticsearch:
[fpecfcElasticsearchClientManager] не удалось создать клиента elasticsearch, отключив сканер…
[fpecfFsCrawler] При запуске сканера получена критическая ошибка: [В соединении отказано]
1 ответ
Когда fscrawler запускается в первый раз (т. Е. docker-compose run fscrawler
) это создает /config/{fscrawer_job}/_settings.yml
со следующей настройкой по умолчанию:
elasticsearch:
nodes:
- url: "http://127.0.0.1:9200"
Это заставит fscrawler попытаться подключиться к localhost (например, 127.0.0.1). Однако это не удастся, если fscrawler находится в контейнере докеров, потому что он пытается подключиться к локальному хосту КОНТЕЙНЕРА. Это было особенно запутанным в моем случае, потому что elasticsearch БЫЛ доступен как localhost, но на локальном хосте моего физического компьютера (а НЕ localhost контейнера). Изменение URL-адреса позволило fscrawler подключиться к сетевому адресу, на котором фактически находится elasticsearch.
elasticsearch:
nodes:
- url: "http://elasticsearch:9200"
Я использовал следующий образ докера: https://hub.docker.com/r/toto1310/fscrawler
# FILE: docker-compose.yml
version: '2.2'
services:
# FSCrawler
fscrawler:
image: toto1310/fscrawler
container_name: fscrawler
volumes:
- ${PWD}/config:/root/.fscrawler
- ${PWD}/data:/tmp/es
networks:
- esnet
command: fscrawler job_name
# Elasticsearch Cluster
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.3.2
container_name: elasticsearch
environment:
- node.name=elasticsearch
- discovery.seed_hosts=elasticsearch2
- cluster.initial_master_nodes=elasticsearch,elasticsearch2
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- esdata01:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- esnet
elasticsearch2:
image: docker.elastic.co/elasticsearch/elasticsearch:7.3.2
container_name: elasticsearch2
environment:
- node.name=elasticsearch2
- discovery.seed_hosts=elasticsearch
- cluster.initial_master_nodes=elasticsearch,elasticsearch2
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- esdata02:/usr/share/elasticsearch/data
networks:
- esnet
volumes:
esdata01:
driver: local
esdata02:
driver: local
networks:
esnet:
Ран docker-compose up elasticsearch elasticsearch2
для вызова узлов elasticsearch.
Ранdocker-compose run fscrawler
создать _settings.yml
Отредактировано _settings.yml
к
elasticsearch:
nodes:
- url: "http://elasticsearch:9200"
Запущен fscrawler docker-compose up fscrawler