2

Ist es möglich, Elasticsearch in App Engine Flex-Umgebung mit einem Docker-Image bereitzustellen.Elasticsearch Bereitstellung in Google App Engine Flex

ich folgendes Eigene Dateien auf dem lokalen Rechner

Ordner versucht: Elasticsearch

app.yaml 
Dockerfile 
docker-entrypoint.sh 
config folder(containing elasticsearch.yml)file 

Inhalt von app.yaml

runtime: custom 
env: flex 

Dockerfile und docker-entrypoint.sh kopiert von https://github.com/GoogleCloudPlatform/elasticsearch-docker/tree/master/5/5.2.0

Änderungen am Dockerfile

replaced EXPOSE 9200 9300 to EXPOSE 8080 

Modifikation des 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 

Ich baue einen Container die Docker Datei auf meinem lokalen Rechner Dann

docker build -t elasticdemo . 

verwenden, betreibe ich den Container

docker run -p 8080:8080 elasticdemo 

Ich bin in der Lage Elasticsearch auf 0.0.0.0:8080

Problem zuzugreifen:

Ich versuche als App auf Google App Engine flex Umgebung bereitstellen Elasticsearch

gcloud App deploy app.yaml - -Ausführung elasticdocker --project myproject

der Einsatz schlägt mit dem folgenden Fehler

Updating service [default]...failed. 
ERROR: (gcloud.app.deploy) Error Response: [9] 

ich war erwartet ed elasticsearch zur Bereitstellung als App und zur Verfügung für die bereitgestellte URL. Könnten Sie bitte Hinweise/Hilfe/Vorschläge mit diesem Ansatz geben?

Antwort

0

Während Sie ES in der flexiblen Umgebung von App Engine bereitstellen können, ist dies nicht besonders hilfreich. Die VMs, auf denen GAE Flexible Container gehostet werden, werden im Rahmen der Wartung regelmäßig neu gestartet und alle Daten, die auf der lokalen Festplatte gespeichert sind, gehen beim Neustart verloren. Wenn Sie die lokale Festplatte zur Langzeitspeicherung verwenden möchten, würde ich vorschlagen, die GCE VM (oder alternativ eine Lösung aus der GCP Marketplace verwenden) zu implementieren oder zu GKE implementieren die supports persistent disks

Was die eigentliche Frage: Sie wahrscheinlich don Sie haben keinen Health-Check-Handler und daher geht die flexible App Engine-Umgebung nach der Bereitstellung Ihrer App nicht in eine gute Verfassung. Die Fehlermeldung ist nutzlos, da stimme ich zu.

von der flexiblen docs GAE für building custom images:

„Ein Gesundheits-Check ist eine HTTP-Anfrage an die URL/_ah/Gesundheit Eine gesunde Anwendung mit dem Statuscode reagieren soll 200.“

Alternativ können Sie Health Checks deaktivieren, indem Sie in App hinzufügen.yaml enable_health_check: False