Получение ошибки типа «Не удалось проверить соединение с Elasticsearch». В вашем кластере не найдено активных узлов

Я использую докер для magento 2.4.1, во время установки я получаю эту ошибку.

Мой файл docker-compose.yml.

    version: '3'
    services:
      nginx:
        build:
          args:
            nginx_port: 80
            nginx_version: ${NGINX_VERSION}
          context: ./docker/nginx
        depends_on:
          - php-fpm
        restart: always
        volumes:
          - ./config/nginx/nginx.conf:/etc/nginx/nginx.conf:cached
          - ./src/magento:/var/www/magento:cached
      php-fpm:
        build:
          args:
            php_version: ${PHP_VERSION}
          context: ./docker/php-fpm
        env_file:
          - .env
        depends_on:
          - cron
          - elasticsearch
          - mysql
          - rabbitmq
          - redis-fpc
          - redis-obj
          - redis-ses
        restart: always
        volumes:
          - ./src/magento:/var/www/magento:cached
          - ./config/composer/auth.json:/var/www/.composer/auth.json:cached
          - ./config/php/php.ini:/usr/local/etc/php/php.ini:cached
      cron:
        build:
          args:
            php_version: ${PHP_VERSION}
          context: ./docker/cron
        restart: always
        volumes:
          - ./src/magento:/var/www/magento:cached
      mysql:
        environment:
          - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
          - MYSQL_USER=${MYSQL_USER}
          - MYSQL_PASSWORD=${MYSQL_PASSWORD}
          - MYSQL_DATABASE=${MYSQL_DATABASE}
        image: percona:${MYSQL_VERSION}
        ports:
          - "3306:3306"
        restart: always
        volumes:
          - mysql-log:/var/log/mysql
          - mysql-lib:/var/lib/mysql
      redis-obj:
        image: redis:${REDIS_VERSION}
        ports:
          - "6379:6379"
        restart: always
      redis-fpc:
        command: redis-server /usr/local/etc/redis/redis.conf
        image: redis:${REDIS_VERSION}
        ports:
          - "6380:6380"
        restart: always
        volumes:
          - ./config/redis/fpc.conf:/usr/local/etc/redis/redis.conf
      redis-ses:
        command: redis-server /usr/local/etc/redis/redis.conf
        image: redis:${REDIS_VERSION}
        ports:
          - "6381:6381"
        restart: always
        volumes:
          - ./config/redis/ses.conf:/usr/local/etc/redis/redis.conf
      elasticsearch:
        image: elasticsearch:${ELASTICSEARCH_VERSION}
        environment:
          - ELASTICSEARCH_URL=http://elasticsearch:9200
          - "ES_JAVA_OPTS=-Xmx2g -Xms2g"
          - bootstrap.memory_lock=true
          - http.cors.enabled=true
          - http.cors.allow-origin=*
          - cluster.name=adlp-cluster
          - discovery.type=single-node
        ulimits:
          memlock:
            soft: -1
            hard: -1
        volumes:
          - data01:/usr/share/elasticsearch/data
        ports:
          - 9200:9200
        networks:
          - elastic
        #healthcheck:
        #    test: ["CMD-SHELL", "curl --silent --fail localhost:9200/_cluster/health || exit 1"]
        #    interval: 30s
        #    timeout: 30s
        #    retries: 3
        restart: always
      rabbitmq:
        image: rabbitmq:${RABBITMQ_VERSION}-management
        ports:
          - "5672:5672"
          - "15672:15672"
        restart: always
    volumes:
      mysql-log:
      mysql-lib:
      data01:
        driver: local
    networks:
      elastic:
        driver: bridge
    
    /*******************My .env file *********************************/
    
    # Versions
    NGINX_VERSION=1.18
    PHP_VERSION=7.4
    MAGENTO_VERSION=2.4
    MYSQL_VERSION=8.0
    REDIS_VERSION=6
    ELASTICSEARCH_VERSION=7.6.2
    RABBITMQ_VERSION=3.8.9
    
    # MySQL
    MYSQL_ROOT_PASSWORD=magento
    MYSQL_USER=magento
    MYSQL_PASSWORD=magento
    MYSQL_DATABASE=magento
    
    # Magento (required) - see https://devdocs.magento.com/guides/v2.2/install-gde/install/cli/install-cli-install.html
    MAGENTO_ADMIN_FIRSTNAME=Magento
    MAGENTO_ADMIN_LASTNAME=Development
    MAGENTO_ADMIN_EMAIL=deepakworldphp86@gmail.com
    MAGENTO_ADMIN_USER=dev
    MAGENTO_ADMIN_PASSWORD=password1
    
    # Magento (optional)
    MAGENTO_BASE_URL=http://m2.local.docker.com/
    MAGENTO_BACKEND_FRONTNAME=admin
    MAGENTO_DB_HOST=mysql
    MAGENTO_DB_NAME=magento
    MAGENTO_DB_USER=magento
    MAGENTO_DB_PASSWORD=magento
    # MAGENTO_DB_PREFIX
    MAGENTO_LANGUAGE=en_US
    MAGENTO_CURRENCY=USD
    MAGENTO_TIMEZONE=America/New_York
    MAGENTO_USE_REWRITES=1
    MAGENTO_USE_SECURE=1
    MAGENTO_BASE_URL_SECURE=https://m2.local.docker.com/
    MAGENTO_USE_SECURE_ADMIN=1
    # MAGENTO_ADMIN_USE_SECURITY_KEY
    # MAGENTO_SESSION_SAVE
    # MAGENTO_KEY
    # MAGENTO_CLEANUP_DATABASE
    # MAGENTO_DB_INIT_STATEMENTS
    # MAGENTO_SALES_ORDER_INCREMENT_PREFIX
    
    # Magento (optional, Magento Commerce only)
    # MAGENTO_AMQP_HOST
    # MAGENTO_AMQP_PORT
    # MAGENTO_AMQP_USER
    # MAGENTO_AMQP_PASSWORD
    # MAGENTO_AMQP_VIRTUALPORT
    # MAGENTO_AMQP_SSL
    
    # Magento (optional, Redis)
    MAGENTO_REDIS_OBJ_SERVER=redis-obj
    MAGENTO_REDIS_OBJ_PORT=6379
    MAGENTO_REDIS_OBJ_DATABASE=0
    #MAGENTO_REDIS_OBJ_PASSWORD
    #MAGENTO_REDIS_FPC_SERVER=redis-fpc
    #MAGENTO_REDIS_FPC_PORT=6380
    #MAGENTO_REDIS_FPC_DATABASE=0
    #MAGENTO_REDIS_FPC_PASSWORD
    #MAGENTO_REDIS_FPC_COMPRESS_DATA=1
    MAGENTO_REDIS_SES_SERVER=redis-ses
    MAGENTO_REDIS_SES_PORT=6381
    MAGENTO_REDIS_SES_DATABASE=0
    #MAGENTO_REDIS_SES_PASSWORD
    #MAGENTO_REDIS_SES_TIMEOUT
    #MAGENTO_REDIS_SES_PERSISTENT_ID
    #MAGENTO_REDIS_SES_COMPRESSION_THRESHOLD
    #MAGENTO_REDIS_SES_COMPRESSION_LIB
    #MAGENTO_REDIS_SES_LOG_LEVEL
    #MAGENTO_REDIS_SES_MAX_CONCURRENCY
    #MAGENTO_REDIS_SES_BREAK_AFTER_FRONTEND
    #MAGENTO_REDIS_SES_BREAK_AFTER_ADMINHTML
    #MAGENTO_REDIS_SES_FIRST_LIFETIME
    #MAGENTO_REDIS_SES_BOT_LIFETIME
    #MAGENTO_REDIS_SES_DISABLE_LOCKING
    #MAGENTO_REDIS_SES_MIN_LIFETIME
    #MAGENTO_REDIS_SES_MAX_LIFETIME

# Magento (optional, Varnish)
VCL_CONFIG=/data/varnish.vcl

МОЯ команда установки.

sudo docker exec -it 47fc7052a3fa  php bin/magento setup:install --base-url=https://m2.docker.com --base-url-secure=https://m2.docker.com --db-host=mysql --db-name=magento --db-user=magento --db-password=magento  --backend-frontname=admin --admin-firstname=Magento --admin-lastname=Admin --admin-email=dkmagento@gmail.com --admin-user=admin --admin-password=admin@123 --language=en_US --currency=USD --timezone=America/Chicago --use-rewrites=1 --elasticsearch-host=localhost:9200 --elasticsearch-port=9200 

Вот результат теста curl.

curl -X GET "localhost:9200/_cat/nodes?v&pretty"
ip         heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
172.24.0.2           22          93   2    0.78    1.13     1.39 dilm      *      c6c5a3e48cfe

Любая помощь будет оценена по достоинству.

0
Deepak Rai 1 Дек 2020 в 22:01
Привет, как ты это исправил? Я получаю ту же ошибку при сборке на сервере.
 – 
CodeForGood
22 Июл 2021 в 18:31

2 ответа

В моем случае Elasticsearch был установлен через brew (Mac) на хосте.

А для доступа из Docker используется хост Elasticsearch — вроде host.docker.internal http://host.docker.internal

Просто попробуйте в Docker cli

curl -X GET "http://host.docker.internal:9200/_cat/nodes?v&pretty"

0
Alex 9 Янв 2022 в 19:29

В вашем файле .env хост elasticsearch — http://elasticsearch:9200, а в вашей команде install — хост elasticsearch localhost. Измените хост elasticsearch в конфигурации Magento (серверная часть) на http://elasticsearch.

0
Mario 2 Дек 2020 в 01:44