【问题标题】:Connect to AWS Lighsail instance on port 9200 from AWS Lambda从 AWS Lambda 连接到端口 9200 上的 AWS Lightsail 实例
【发布时间】:2019-03-24 05:27:42
【问题描述】:

我正在尝试在我的 AWS lightail 实例上设置 elasticsearch,并让它在端口 9200 上运行,但是我无法从 AWS lambda 连接到同一端口上的实例。我已经更新了我的 lightsail 实例级网络设置以允许端口 9200 接受流量,但是我既无法通过静态 IP 连接到端口 9200,也无法让我的 AWS lambda 函数与我的 lightsail 通信主机在 9200 端口。

我了解 AWS 有单独的 Elasticsearch 产品可供我使用,但是我正在做一个测试设置,需要在同一个 lightail 主机上运行 vanilla ES。 ES 已启动并正在运行,我可以通过 SSH 隧道连接到它,但是当我尝试使用静态 IP 或通过其他 AWS 服务进行连接时,它不起作用。

任何指针都将不胜感激。

谢谢。

【问题讨论】:

  • 你的 lambda 在 vpc 中吗?
  • 不,它不在 vpc 中。作为一个简单的测试,如果端口 9200 已打开,我是否应该无法从本地浏览器连接 :9200?

标签: amazon-web-services elasticsearch aws-lambda amazon-lightsail


【解决方案1】:

更新 elasticsearch.yml

  network.host: _ec2:privateIpv4_

我们正在 AWS 云上运行多个版本的 elaticsearch 集群:

elasticsearch-2.4 集群 elasticsearch.yml(在经典 ec2 实例上 --i3.2xlarge )

cluster.name: ES-CLUSTER

node.name: ES-NODE-01

node.max_local_storage_nodes: 1

node.rack_id: rack_us_east_1d

index.number_of_shards: 8

index.number_of_replicas: 1

gateway.recover_after_nodes: 1

gateway.recover_after_time: 2m

gateway.expected_nodes: 1

discovery.zen.minimum_master_nodes: 1

discovery.zen.ping.multicast.enabled: false

cloud.aws.access_key: ***

cloud.aws.secret_key: ***

cloud.aws.region: us-east-1

discovery.type: ec2

discovery.ec2.groups: es-cluster-sg

network.host: _ec2:privateIpv4_

elasticsearch-6.3 cluster elasticsearch.yml(Inside VPC & i3.2xlarge instance)

cluster.name: ES-CLUSTER

node.name: ES-NODE-01

gateway.recover_after_nodes: 1

gateway.recover_after_time: 2m

gateway.expected_nodes: 1

discovery.zen.minimum_master_nodes: 1

discovery.zen.hosts_provider: ec2

discovery.ec2.groups: vpc-es-eluster-sg

network.host: _ec2:privateIpv4_

path:
  logs: /es-data/log
  data: /es-data/data

discovery.ec2.host_type: private_ip

discovery.ec2.tag.es_cluster: staging-elasticsearch  
discovery.ec2.endpoint: ec2.us-east-1.amazonaws.com

我建议不要对外开放端口 9300 和 9200。仅允许 EC2 实例与您的 elaticsearch 通信。

现在如何从我的本地盒子访问 elasticsearch?

使用以下命令从您的系统中使用隧道(端口转发):

  $ ssh -i es.pem ec2-user@es-node-public-ip -L 9200:es-node-private-ip:9200 -N 

就像,您在本地系统上运行 elasticsearch。

【讨论】:

    【解决方案2】:

    我可能迟到了,但对于仍在为此类问题苦苦挣扎的任何人都应该知道,新版本的弹性搜索默认绑定到 localhost,如 this answer 中所述,以覆盖您应该设置的此行为:

    network.bind_host: 0 
    

    允许在本地主机之外访问节点

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-24
      • 1970-01-01
      • 2019-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多