首页 > 解决方案 > 在您的集群中找不到活动节点 | 连接被拒绝(Docker,PHP)

问题描述

更新信息

dd($clientBuilder->transport->getLastConnection()->getLastRequestInfo());

我可以注销以下内容

    "curl" => array:2 [
      "error" => "Failed to connect to localhost port 30003: Connection refused"

但问题是Elasticsearch 可以通过网络浏览器在 localhost:30003 下使用

到达此站点时的示例输出:

{

    "name": "xyz",
    "cluster_name": "docker-cluster",
...
}

我确实配置了主机

        $clientBuilder = ClientBuilder::create()
            ->setHosts(['http://localhost:30003/'])
            ->build();

当 Idd($clientBuilder)时,主机设置为 localhost:30003

          #serializer: SmartSerializer {#385 …}
          #transportSchema: "http"
          #host: "localhost:30003"
          #path: "/"

同样,服务器已启动并正在运行,我可以通过 Web 浏览器访问它,但仍然收到错误消息:

在您的集群中找不到活动节点

在我的docker-compose文件中,我将端口 30003 映射到 9200

      ports:
        - "30003:9200"

标签: phplaraveldockerelasticsearch

解决方案


Elasticsearch没有导致错误。

cURL 出现错误 7,这意味着它无法建立连接。

我想出的解决方案如下:

        $clientBuilder = ClientBuilder::create()
            ->setHosts([
                [
                    'host' => 'docker.for.mac.localhost',
                    'port' => '30003'
                ]
            ])
            ->build();

我从 localhost 切换到 docker.for.mac.localhost

这很有帮助,因为我使用的是 docker 容器,并且每个容器都有不同的 IP 地址


推荐阅读