elasticsearch - 通过站点地址与 GCP 虚拟机实例交互
问题描述
我在尝试访问和管理 GCP 中的虚拟机实例时遇到问题。
基本上,大约两年前,我创建了一个需要 elasticsearch 的项目。我通过谷歌云平台实现了这个模块,使用的是:“Elasticsearch Certified by Bitnami”。
通过访问站点地址,并使用 GCP 提供的凭据,我能够通过直接使用带有站点地址的插件来完成我需要的一切(使用带有链接http://35.xxx的 POST、PUT 和 GET 命令.xx.xxx//elasticsearch/...)。
这工作得很好,但是,我在网站上停止了该功能一段时间,现在我需要再次使用它,按照相同的步骤操作不起作用,因为 GCP 不再提供访问或与之交互的网站地址像我以前那样做虚拟机。
我认为这与 Bitnami 直接有关,但是他们的一位工程师在他们的支持网站上回答的一个类似问题似乎指向谷歌作为这种变化的来源:https ://community.bitnami.com/t/no- more-site-address-gcp-wordpress/52133(在我的例子中是一个elasticsearch实例而不是一个wordpress实例)。
保留静态 ip 并将其插入以前的链接格式也不起作用。(http://external-IP//elasticsearch/...)
所以我的问题是:现在有没有一种方法可以像以前一样与虚拟机交互?如果是这样,我该怎么做,我应该使用什么地址?如果不可能,我如何与 VM 实例交互以分配映射并直接发送查询?
(如有必要,我发现有人做了与我之前做的类似的实现,这样您就可以了解我在寻找什么:https ://www.youtube.com/watch?v=Wv2EoMQ-5vQ )
谢谢你的时间。
解决方案
您无法访问 Elasticsearch 实例可能有多种原因。
- 验证 Elasticsearch 是否正在运行
sudo /opt/bitnami/ctlscript.sh status
- GCP 防火墙设置 - 默认情况下 API 适用于 9200,因此请确保它已打开(您的端口可能不同,但我在此示例中使用了默认端口):
$ gcloud compute firewall-rules list | grep 9200
elasticsearch default INGRESS 1000 tcp:22,tcp:9200,tcp:9300,tcp:9600 False
- VM 的防火墙设置 - 检查
sudo iptables -L
并验证是否没有阻止弹性搜索端口的规则。
此外,如果您的 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"
}
为了确保这是一个可行的解决方案,我刚刚从市场部署了“Bitnami 的 Elasticsearch”。然后我创建了一个防火墙规则:
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
我使用--target-tags=elasticsearch-1-deployment
了部署为运行 Elasticsearch 的虚拟机创建的标签——你可以使用不同的标签或根本不使用标签——这只是一个例子。
该文档也可能对您有所帮助https://docs.bitnami.com/google/faq/administration/use-firewall/
推荐阅读
- pseudocode - 医院优先队列的功能?
- javascript - 我可以在 HTML 数据中保留 Vuejs 事件吗?
- ios - 更新特定单元格
- svg - 有一个错误
代码,它影响了我网页的其余部分。有人能发现吗?如果是这样,您的帮助将不胜感激 - c# - 带有存储在外部配置文件中的连接字符串的 Excel-DNA 插件
- javascript - 如何使用 Express 发送 Windows-1255 编码文件?
- profiling - NodeJS CPU 利用率统计
- c# - 从没有特定索引的文件中读取
- powershell - 如何使用 powershell 获取 Oracle 服务器版本?
- python - 在python中不使用'for'循环的滑动搜索窗口