是否可以使用 docker 镜像在 App engine flex 环境中部署 Elasticsearch。
我试过以下 我在本地机器上的文件
文件夹: Elasticsearch
app.yaml
Dockerfile
docker-entrypoint.sh
config folder(containing elasticsearch.yml)file
app.yaml 的内容
runtime: custom
env: flex
从 https://github.com/GoogleCloudPlatform/elasticsearch-docker/tree/master/5/5.2.0 复制的 Dockerfile 和 docker-entrypoint.sh
对 Dockerfile 的修改
replaced EXPOSE 9200 9300 to EXPOSE 8080
修改elasticsearch.yml
cluster.name: "beaconinside-docker-cluster"
path.data: /usr/share/elasticsearch/data
http.host: 0.0.0.0
http.port: 8080
discovery.zen.minimum_master_nodes: 1
我在本地机器上使用 docker 文件构建了一个容器
docker build -t elasticdemo .
然后,我运行容器
docker run -p 8080:8080 elasticdemo
我可以在 0.0.0.0:8080 上访问 elasticsearch
问题:
我正在尝试将 elasticsearch 作为应用程序部署到 Google 应用引擎 flex 环境
gcloud app deploy app.yaml --version elasticdocker --project myproject
部署失败,出现以下错误
Updating service [default]...failed.
ERROR: (gcloud.app.deploy) Error Response: [9]
我希望 elasticsearch 部署为应用程序并在部署的 url 上可用。 您能否就此方法提供指导/帮助/建议?
最佳答案
虽然您可以将 ES 部署到 App Engine 柔性环境,但它并不是特别有用。作为维护的一部分,托管 GAE Flexible 容器的 VM 会定期重启,并且本地磁盘上存储的任何数据都将在重启时丢失。如果您想使用本地磁盘进行长期存储,我建议部署 GCE VM(或者使用 GCP Marketplace 中的解决方案)或部署到 supports persistent disks 的 GKE
至于实际问题:您可能没有运行状况检查处理程序,因此 App Engine 柔性环境在部署后认为您的应用程序运行状况不佳。错误消息没有用,我同意。
来自 building custom images 的 GAE Flexible 文档:
“健康检查是对 URL/_ah/health 的 HTTP 请求。健康的应用程序应以状态代码 200 响应。”
或者,您可以通过添加到 app.yaml 来关闭健康检查
enable_health_check:错误
关于google-app-engine - google app engine flex 上的 Elasticsearch 部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43913227/