19

我正在尝试从办公室的本地计算机连接到 AWS 实例中的 Neptune DB,例如从办公室连接 RDS。是否可以从本地计算机连接 Neptune db?Neptune db 是否公开可用。开发人员有什么方法可以从办公室连接 neptune db。

4

4 回答 4

17

Neptune 不支持公共终端节点(可从 VPC 外部访问的终端节点)。但是,很少有架构选项可用于访问 VPC 外部的 Neptune 实例。它们都具有相同的主题:设置驻留在您的 VPC 内的代理(EC2 机器或 ALB,或类似的东西,或这些的组合),并使该代理可从您的 VPC 外部访问。

似乎您只想出于开发目的与您的实例交谈。最简单的选择是启动 ALB,并创建一个指向您的实例 IP 的目标组。

简要步骤(这些是故意不详细的,请参阅 AWS Docs 以获取详细说明):

  1. dig +short <your cluster endpoint> 这将为您提供当前主服务器的 IP 地址。

  2. 创建 ALB(有关如何执行此操作,请参阅 AWS 文档)。

  3. 使 ALB 的目标组指向为第 1 步获得的 IP 地址。在此步骤结束时,您应该有一个 ALB 正在侦听PORT-A,它将请求转发到IP:PORTIP的数据库 IP(来自步骤 1)和PORT您的数据库端口(默认为8182)。
  4. 创建一个允许来自任何地方的入站流量的安全组。0.0.0.0即on 的入站 TCP 规则PORT-A
  5. 将安全组附加到 ALB

现在,您可以从您的开发人员框中连接到位于 PORT-A 的 ALB 端点,该端点会在内部将请求转发到您的 Neptune 实例。

请查看 ALB 文档以获取有关如何创建它以及围绕它的概念的详细信息。如果您需要我详细说明任何步骤,请随时询问。

注意:这不是生产设置的推荐解决方案。Neptune 实例使用的 IP 必然会随着故障转移和主机更换而改变。仅将此解决方案用于测试目的。如果您想要类似的生产设置,请随时提出问题,我们可以讨论选项。

于 2018-10-03T07:44:59.540 回答
4

如前所述,您无法直接在 VPC 外部访问。
以下链接描述了使用 SSH 隧道的另一种解决方案:connecting-to-aws-neptune-from-local-environment。我发现它更容易用于测试和开发目的。您也可以使用 Putty 创建 SSH 隧道。

于 2020-04-09T04:35:48.440 回答
2

参考:https ://github.com/M-Thirumal/aws-cloud-tutorial/blob/main/neptune/connect_from_local.md

从本地系统连接到 AWS Neptune

有很多方法可以Amazon Neptune从 外部连接VPC,例如设置load balancerVPC peering

Amazon Neptune 数据库集群只能在 Amazon Virtual Private Cloud (VPC). 从 VPC 外部连接到 Amazon Neptune 的一种方法是将 Amazon EC2 实例设置为proxy server同一 VPC 中的实例。使用这种方法,您还需要设置一个SSH tunnel to securely forward traffic to the VPC.

第 1 部分:设置 EC2 代理服务器。

启动Amazon EC2 instance位于same region您的Neptune cluster. 在配置方面,Ubuntu可以使用。由于这是一个代理服务器,您可以选择最低的资源设置。

确保 EC2 实例与您的 Neptune 集群位于同一 VPC 组中。要查找 Neptune 集群的 VPC 组,请检查Neptune > Subnet groups. 实例的安全组需要能够在 port 22forSSH和 port 8182for上发送和接收Neptune。请参阅下面的示例安全组设置。

在此处输入图像描述

最后,确保保存密钥对文件 (.pem) 并记下该目录以供下一步使用。

第 2 部分:设置 SSH 隧道。

此步骤可能会有所不同,具体取决于您运行的是 Windows 还是 MacOS。

  1. 修改您的主机文件以将 localhost 映射到您的 Neptune 端点。

    Windows:以管理员身份打开 hosts 文件(C:\Windows\System32\drivers\etc\hosts)

    MacOS:打开终端并输入命令:sudo nano /etc/hosts

    将以下行添加到 hosts 文件,将文本替换为您的 Neptune 端点地址。

    127.0.0.1 localhost YourNeptuneEndpoint

    对于 Windows 或终端以管理员身份打开命令提示符(对于 MacOS)并运行以下命令。对于 Windows,您可能需要从C:\Users\YourUsername\

    ssh -i path/to/keypairfilename.pem ec2-user@yourec2instanceendpoint -N -L 8182:YourNeptuneEndpoint:8182

    -N标志设置为阻止与 EC2 的交互式 bash 会话并仅转发端口。初始成功连接会询问您是否要继续连接?键入是并输入。

    要测试本地图形笔记本与 Amazon Neptune 的连接是否成功,请打开浏览器并导航至:

    https://YourNeptuneEndpoint:8182/status

    您应该会看到一份报告,类似于下面的报告,指示您的特定集群的状态和详细信息:

     {
       "status": "healthy",
       "startTime": "Wed Nov 04 23:24:44 UTC 2020",
       "dbEngineVersion": "1.0.3.0.R1",
       "role": "writer",
       "gremlin": {
         "version": "tinkerpop-3.4.3"
       },
       "sparql": {
         "version": "sparql-1.1"
       },
       "labMode": {
         "ObjectIndex": "disabled",
         "DFEQueryEngine": "disabled",
         "ReadWriteConflictDetection": "enabled"
       }
     }
    

关闭连接

当您准备好关闭连接时,使用 Ctrl+D 退出。

于 2021-08-08T17:14:11.930 回答
-3

您好,您可以在本地计算机上使用 gremlin 控制台连接 NeptuneDB。 使用此链接设置您的本地 gremlin 服务器,它适用于我 gremlin 3.3.2 版本只有您必须根据您的 url 和端口更新 remote.yaml

于 2019-04-23T08:14:37.590 回答