通过站点地址与 GCP VM 实例交互

Interacting with a GCP VM instance through site address

我在尝试访问和管理 GCP 中的虚拟机实例时遇到问题。

基本上,大约两年前我创建了一个项目,需要elasticsearch。我通过 google 云平台实现了这个模块,使用的是:“Elasticsearch Certified by Bitnami”。

通过访问站点地址,并使用 GCP 提供的凭据,我能够通过直接使用带有站点地址的插件来完成我需要的一切(使用 POST、PUT 和 GET 命令link http://35.xxx.xx.xxx//elasticsearch/...).

这非常有效,但是,我暂时停止了该网站上的功能,现在我需要再次使用它,按照相同的步骤进行操作不起作用,因为 GCP 不再提供网站地址像以前一样访问 VM 或与之交互。

我认为这与 Bitnami 直接相关,但他们的支持网站上也有类似的问题 他们的一位工程师的回答似乎指向 google 作为此更改的来源:https://community.bitnami.com/t/no-more-site-address-gcp-wordpress/52133(在我的例子中是一个 elasticsearch 实例而不是 wordpress 实例)。

保留一个静态ip插入到之前的link格式也没有用。 (http://external-IP//elasticsearch/...)

所以我的问题是:现在是否有一种方法可以像以前那样与 VM 进行交互?如果是这样,我该怎么做,我应该使用什么地址?如果不可能,我如何与 VM 实例交互以分配映射并直接发送查询?

(如有必要,我发现有人做了与我之前所做的类似的实现,因此您可以了解我在寻找什么:https://www.youtube.com/watch?v=Wv2EoMQ-5vQ

感谢您的宝贵时间。

您无法访问 Elasticsearch 实例可能有多种原因。

  1. 验证 Elasticsearch 是否 运行 sudo /opt/bitnami/ctlscript.sh status
  2. GCP Firewall 设置 - 默认情况下 API 在 9200 上工作,所以确保它是打开的(你的端口可能不同,但我在这个例子中使用了默认端口):
$ gcloud compute firewall-rules list | grep 9200
elasticsearch                       default  INGRESS    1000      tcp:22,tcp:9200,tcp:9300,tcp:9600        False
  1. VM 的防火墙设置 - 检查 sudo iptables -L 并验证是否没有规则阻止 elasticsearch 端口。

此外,如果您的 Elasticsearch 最近更新过,配置可能已更改(但目前只是猜测)并且可能是原因。

但是 - 如果您的实例一切正常,您应该可以通过键入 http://my_vm_external_ip:9200 访问它,并且您应该得到一个 API 响应:

  "name" : "elasticsearch-1-vm",
  "cluster_name" : "bnCluster",
  "cluster_uuid" : "0q4a-ouNQ0OechAIXz1S0g",
  "version" : {
    "number" : "7.8.0",
    "build_flavor" : "oss",
    "build_type" : "tar",
    "build_hash" : "757314695644ea9a1dc2fecd26d1a43856725e65",
    "build_date" : "2020-06-14T19:35:50.234439Z",
    "build_snapshot" : false,
    "lucene_version" : "8.5.1",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

为了确保这是一个可行的解决方案,我刚刚部署了 "Elasticsearch by Bitnami" from marketplace. 然后我创建了一个防火墙规则:

gcloud compute --project=my_project firewall-rules create elasticsearch --direction=INGRESS --priority=1000 --network=default --action=ALLOW --rules=tcp:22,tcp:9200,tcp:9300,tcp:9600 --source-ranges=0.0.0.0/0 --target-tags=elasticsearch-1-deployment

我使用了部署为 VM 创建的 --target-tags=elasticsearch-1-deployment 标签 运行 Elasticsearch - 您可以使用不同的标签或根本不使用标签 - 这只是一个例子。

本文档也可能对您有所帮助https://docs.bitnami.com/google/faq/administration/use-firewall/