ArangoDB 无法使用 Docker 和 Java 在 AWS EC2 上启动

问题描述 投票:0回答:1

我有一个设置,其中使用 Java 程序来启动 ArangoDB。以下代码将启动 ArangoDB。

  ProcessBuilder processBuilder = new ProcessBuilder(arangodExecFile);
  processBuilder.environment().put("hostaddress", host);          
  arangodbProcess = processBuilder.start();

我也尝试过使用

arangodbProcess = Runtime.getRuntime().exec(arangodExecFile, env_hostaddress);
该程序在使用 Ubuntu 作为基础映像的 Docker 容器内运行。实施工作正常,ArangoDB 启动没有任何问题。

当我在 AWS EC2 实例上部署相同的 Docker 映像时,ArangoDB 无法启动并出现以下错误:

2023-10-25T10:26:08Z [50] ERROR [874fa] {communication} unable to bind to endpoint 'http+tcp://host_ip:8529': Address not available
2023-10-25T10:26:08Z [50] FATAL [c81f6] {general} failed to bind to endpoint 'http+tcp://host_ip:8529'. Please check whether another instance is already running using this endpoint and review your endpoints configuration.

我没有 ENDPOINTS 文件。 server.endpoint 已正确配置为使用 AWS 实例的 IP 地址在 AWS 实例上启动 ArangoDB。我正在使用 AWS 实例 IP 绑定服务器端点,以便我可以从不同的计算机访问它。对 ArangoDB 端点的调用是从不同的 AWS 实例完成的,以获取 ArangoDB 驱动程序,它不应该影响 ArangoDB 的启动,当我尝试获取正在运行的 ArangoDB 进程的 ArangoDB 对象时,它可能会导致问题。

  • 我确认该端口没有被任何其他进程使用 使用
    ss -tulpn
  • 此外,我还添加了一个命令来杀死任何现有的 ArangoDB 使用
    kill -9 $(ps axf | grep    arangod | grep -v grep | awk '{print $1}')
    进行处理。
  • 我尝试将端口添加/删除到安全组规则以允许 端口 8529 上的流量并映射/取消映射该端口 “docker run”命令。
  • 如果我访问在 AWS 上运行的 Docker 容器并通过以下方式启动 ArangoDB 使用
    ./arangodb
    sudo ./arangod
    执行 arangod 文件,ArangoDB 启动 没有问题。
amazon-web-services docker ubuntu aws-cloudformation arangodb
1个回答
0
投票

我假设“在 AWS EC2 实例上部署相同的 Docker 映像”意味着您已在 EC2 实例上设置了 Docker,并且它为 Docker 主机提供服务。

默认情况下,在 Docker 容器内运行的应用程序无权访问主机的网络。这意味着您的 ArangoDB 实例不会看到任何 EC2 实例的 IP 地址。它将看到的是具有自己的 IP 地址的 Docker 虚拟网络。

Docker 具有在主机网络和容器网络之间转发数据包的能力。为此,您需要公开要转发的端口。您可以通过使用

docker run --publish 8529:8529
或类似工具将容器端口发布到主机来做到这一点。

在容器内,您应该将侦听套接字绑定到内部网络接口。您可以通过从容器内获取容器的主机名来完成此操作,并且可以选择解析其 IP 地址(如果 ArangoDB 需要通过 IP 绑定)。启动容器时,Docker 会重写其

/etc/hosts
,以便容器的主机名解析为其内部地址。您不再需要从外部传递主机地址。

或者,您可以运行 Docker 容器,以便它共享主机的网络(通过使用

docker run --network=host
),但它不太安全且难以配置(这样,您确实需要知道主机地址以将侦听套接字绑定到) ).

© www.soinside.com 2019 - 2024. All rights reserved.