Bereitstellung auf VMs erstellen

In diesem Dokument wird beschrieben, wie Sie Spanner Omni auf virtuellen Maschinen (VMs) bereitstellen. Diese Bereitstellung ist nicht verschlüsselt. Wenn Sie schnell eine Test- oder Proof-of-Concept-Umgebung einrichten möchten, um Spanner Omni zu testen, ist das Erstellen einer ungesicherten Bereitstellung der schnellste Weg, um loszulegen, da Sie keine mTLS- oder andere Sicherheitsmaßnahmen konfigurieren müssen. Aufgrund von Sicherheitsrisiken wie unverschlüsseltem Netzwerkverkehr und offenem Zugriff empfehlen wir diese Konfiguration jedoch nicht für Produktionsumgebungen. Sie können zwischen einer Bereitstellung auf einem einzelnen Server oder einer regionalen Bereitstellung in mehreren Zonen wählen.

Die Vorschau version von Spanner Omni unterstützt keine TLS-Verschlüsselung. Wenn Sie die Funktionen zum Erstellen von Bereitstellungen mit TLS-Verschlüsselung nutzen möchten, wenden Sie sich an Google, um frühzeitigen Zugriff auf die Vollversion von Spanner Omni anzufordern.

Hinweis

Bevor Sie eine ungesicherte Bereitstellung einrichten, müssen Sie die folgenden Anforderungen erfüllen:

  • SSH-Zugriff: Sie benötigen SSH-Zugriff auf jeden Computer in der Bereitstellung , um die Spanner Omni-Binärdatei herunterzuladen und auszuführen.

  • Verbindung: Alle Computer in der Bereitstellung können miteinander verbunden werden.

  • Netzwerk: Ihre Netzwerkkonfiguration lässt die TCP-Kommunikation über die Ports 15000 bis 15025 zu.

  • Speicher: Jeder Computer verfügt über genügend Speicherplatz, um die Daten zu hosten, die von der Bereitstellung verarbeitet werden.

  • Systemanforderungen: Ihre Einrichtung muss alle Systemanforderungen erfüllen.

  • vSphere-Konfiguration: Wenn Sie Spanner Omni auf der vSphere-Virtualisierungsplattform ausführen, deaktivieren Sie die Virtualisierung des Zeit stempelzählers (Time Stamp Counter, TSC). Fügen Sie der .vmx-Konfigurationsdatei der VM monitor_control.virtual_rdtsc = FALSE hinzu.

Schritt 1: Bereitstellungstopologie festlegen

Spanner Omni verwendet eine Hierarchie von Standorten, Zonen und Servern, um die Bereitstellungstopologie zu definieren. Je nach Verfügbarkeitszielen können Sie zwischen den folgenden Topologien wählen:

  • Einzelner Server: Die Bereitstellung hat einen einzelnen Server, der auf einem einzelnen Computer ausgeführt wird.

  • Einzelne Zone: Die Bereitstellung wird auf mehreren Servern ausgeführt, die sich in einer einzelnen Zone befinden.

  • Einzelner Standort, mehrere Zonen (replizierte Bereitstellung): Die Bereitstellung wird auf mehreren Servern ausgeführt, die sich in mehreren Zonen an einem Standort befinden.

  • Mehrere Standorte, mehrere Zonen: Die Bereitstellung wird auf mehreren Servern ausgeführt, die sich an mehreren Standorten und in mehreren Zonen befinden.

Weitere Informationen finden Sie unter Wichtige Begriffe für Spanner Omni und Bereitstellungskonfigurationen für Spanner Omni.

Erstellen Sie für jede Bereitstellung außer einer Bereitstellung auf einem einzelnen Server eine YAML-Konfigurationsdatei mit dem Namen deployment.yaml, in der die Topologie definiert ist. Geben Sie in dieser Datei nur die Stammserver an. Fügen Sie später Nicht-Stammserver hinzu.

Beispiel: Replizierte Bereitstellung in mehreren Zonen

Das folgende Beispiel zeigt eine Konfiguration für eine regionale Bereitstellung in drei Zonen.

name: regional-deployment
location:
  - name: us-central1
zone:
  - name: us-central1-a
    location: us-central1
    single_server: false
    root_server:
      - host: rootserver1
  - name: us-central1-b
    location: us-central1
    single_server: false
    root_server:
      - host: rootserver2
  - name: us-central1-c
    location: us-central1
    single_server: false
    root_server:
      - host: rootserver3

Beispiel: Bereitstellung an mehreren Standorten

Das folgende Beispiel zeigt eine Konfiguration für eine Bereitstellung an drei Standorten.

name: multi-location-deployment
location:
  - name: us-central1
  - name: europe-west2
  - name: asia-southeast1
zone:
  - name: us-central1-a
    location: us-central1
    single_server: false
    root_server:
      - host: rootserver1
  - name: europe-west2-a
    location: europe-west2
    single_server: false
    root_server:
      - host: rootserver2
  - name: asia-southeast1-a
    location: asia-southeast1
    single_server: false
    root_server:
      - host: rootserver3

Schritt 2: Binärdatei herunterladen und einrichten

Wiederholen Sie diese Schritte für jeden Computer in der Bereitstellung:

  1. Erstellen Sie ein Verzeichnis für die Binärdatei und wechseln Sie zu diesem Verzeichnis.

  2. Laden Sie die Binärdatei herunter:

    gsutil cp gs://spanner-omni/VERSION/spanner-omni-VERSION-linux-x86_64.tar.gz .
    

    Sie können die Binärdatei auch mit scp oder anderen Tools zur Dateiübertragung auf Ihre VMs kopieren.

  3. Extrahieren Sie die Binärdatei:

    tar -xvf spanner-omni-VERSION-linux-x86_64.tar.gz
    

Schritt 3: Server starten

Erstellen Sie auf jedem Server ein Basisverzeichnis, um Daten, Metadaten und Logs zu speichern. Wenn ein Server neu gestartet werden muss, geben Sie dasselbe Verzeichnis an, um die Kontinuität zu gewährleisten.

Option A: Bereitstellung auf einem einzelnen Server

Führen Sie für eine Bereitstellung auf einem einzelnen Server den folgenden Befehl aus:

spanner start-single-server --base-dir=SPANNER_BASE_DIR

Nachdem der Server gestartet wurde, fahren Sie mit Schritt 6: Mit der Bereitstellung interagieren fort.

Option B: Scale-out-Bereitstellung

Starten Sie für Scale-out-Bereitstellungen den Server auf jedem Computer. Die Flags --server-address und --zone entsprechen den Werten in Ihrer Bereitstellungskonfiguration. Das Netzwerk löst die server_address auf.

spanner start --root --server-address=RESOLVABLE_HOSTNAME --zone=ZONE_NAME --base-dir=SPANNER_BASE_DIR

Beispiel:

spanner start --root --server-address=rootserver1 --zone=us-central-1a --base-dir=./spanbasedir

Schritt 4: Bereitstellung erstellen

So erstellen Sie die Bereitstellung:

  1. Kopieren Sie die Datei deployment.yaml, die Sie in Schritt 1: Bereitstellungstopologie festlegen erstellt haben, auf einen der Stammserver.

  2. Führen Sie auf diesem Stammserver den folgenden Befehl aus, um die Bereitstellung zu erstellen:

    spanner deployment create --config-file=deployment.yaml
    

    Auf der Konsole jedes Computers werden Meldungen angezeigt, die darauf hinweisen, dass die Bereitstellung bereit ist.

  3. Validieren Sie die Bereitstellung, indem Sie die Zonen auflisten:

    spanner deployment zones list
    

    In der Ausgabe werden die Standorte, Zonen und Server aufgeführt, die Sie in deployment.yaml angegeben haben.

Schritt 5: (Optional) Load-Balancer konfigurieren

Richten Sie einen TCP-Load-Balancer mit den folgenden Details ein:

Einstellung Wert
Protokoll TCP
Back-End-IP-Adresse Die IP-Adressen Ihrer Server
Port 15000 oder der Port, den Sie im Flag --server-address verwenden
URL der Systemdiagnose http://SERVER_IP:15012/healthz
Lastverteilungsstrategie Round-Robin

Bei Bereitstellungen an mehreren Standorten können Sie einen Load-Balancer pro Standort und einen primären Load-Balancer einrichten, um den Traffic auf alle Standorte zu verteilen.

Schritt 6: Mit der Bereitstellung interagieren

Nachdem Ihre Bereitstellung bereit ist, können Sie über die Befehlszeile von jeder VM oder einem lokalen Computer aus mit ihr interagieren. Wenn Sie die Befehlszeile von einem separaten Computer ausführen, z. B. von einem Laptop für Entwickler, laden Sie das Befehlszeilenpaket herunter und extrahieren Sie es. Weitere Informationen finden Sie unter siehe Schnellstart mit der Spanner Omni-Befehlszeile.

So interagieren Sie mit Ihrer Bereitstellung:

  1. Erstellen Sie eine Datenbank:

    spanner --deployment-endpoint=LOAD_BALANCER_IP_OR_SERVER_IP databases create DATABASE_NAME
    
  2. Öffnen Sie die SQL-Shell:

    spanner sql --database=DATABASE_NAME
    
  3. Erstellen Sie eine Tabelle und fügen Sie Daten ein:

    CREATE TABLE names (
      nameId INT64 NOT NULL,
      name STRING(100)
    ) PRIMARY KEY (nameId);
    
    INSERT INTO names (nameId, name) VALUES (1, "Jack");
    
  4. Prüfen Sie die Datenbank und die Daten:

    So listen Sie Datenbanken auf: bash spanner databases list

    Die Ausgabe sieht dann ungefähr so aus:

    NAME STATUS VERSION_RETENTION_PERIOD EARLIEST_VERSION_TIME ENABLE_DROP_PROTECTION
    DATABASE_NAME BEREIT 1 Std. 2025-02-07T12:25:30Z falsch

    So fragen Sie die Tabelle ab: bash spanner sql --database=DATABASE_NAME

  5. Führen Sie die folgenden SQL-Befehle aus:

    SHOW TABLES;
    SELECT * FROM names;
    

Schritt 7: (Optional) Bereitstellung skalieren

Wenn Sie die Kapazität in einer Zone skalieren möchten, können Sie Nicht-Stammserver hinzufügen. Führen Sie den folgenden Befehl auf jedem neuen Server aus:

spanner start --server-address=NON_ROOT_HOSTNAME --join-servers=SERVER1:PORT1,SERVER2:PORT2,SERVER3:PORT3 --zone=ZONE_NAME --base-dir=SPANNER_BASE_DIR

Schritt 8: (Optional) Bereitstellung beobachten

Wenn Sie den Zustand und die Leistung Ihrer Bereitstellung überwachen möchten, können Sie die Erfassung, Visualisierung und Benachrichtigung von Messwerten einrichten. Sie können auch verteilte Traces erfassen, um die Anfragelatenz zu analysieren.

Prometheus einrichten

Spanner Omni-Server exportieren Messwerte im Prometheus-Format auf Port 15012. Fügen Sie prometheus.yml in scrape_configs Folgendes hinzu:

scrape_configs:
  - job_name: 'spanner'
    static_configs:
      - targets: ['HOST1:15012', 'HOST2:15012', 'HOSTN:15012']

Grafana einrichten

So rufen Sie Monitoring-Daten in Grafana auf:

  1. Stellen Sie die Prometheus-Datenquelle bereit, indem Sie eine Datei in provisioning/datasources erstellen:

    apiVersion: 1
    datasources:
      - name: Prometheus
        uid: prometheus
        type: prometheus
        access: proxy
        url: http://PROMETHEUS_HOST:PROMETHEUS_PORT
        jsonData:
          httpMethod: POST
          manageAlerts: false
          prometheusType: Prometheus
          prometheusVersion: PROMETHEUS_VERSION
          cacheLevel: 'High'
          disableRecordingRules: false
          incrementalQueryOverlapWindow: 10m
    
  2. Erstellen Sie ein Dashboard in der Grafana-UI oder stellen Sie es mit provisioning/dashboards bereit.

Warnungen einrichten

Konfigurieren Sie Warnungen über die Grafana-UI oder Konfigurationsdateien. Sie können beispielsweise eine Warnung auslösen, wenn das 95. Perzentil (p95) der Transaktionslatenz 100 Millisekunden überschreitet. Eine Liste der verfügbaren Warnungen finden Sie unter Prometheus-Warnungen zur Überwachung von Spanner Omni verwenden.

Traces erfassen und analysieren

Erfassen Sie Informationen zum verteilten Tracing im OTLP-Format und visualisieren Sie sie mit Tools wie Jaeger.

  1. Richten Sie einen OTLP-kompatiblen Trace-Collector ein. Für Jaeger:

    export COLLECTOR_OTLP_ENABLED=true
    jaeger-all-in-one
    

    Achten Sie darauf, dass der OTLP-Port den Netzwerkverkehr zwischen Spanner Omni und dem Collector zulässt.

  2. Legen Sie die Umgebungsvariable SPANNER_BOX_OTLP_TRACE_EXPORTER_ENDPOINT fest und starten Sie die Spanner Omni-Server:

    export SPANNER_BOX_OTLP_TRACE_EXPORTER_ENDPOINT=COLLECTOR_HOST:COLLECTOR_PORT
    spanner start --root --server-address=RESOLVABLE_HOSTNAME --zone=ZONE_NAME --base-dir=SPANNER_BASE_DIR
    

Nächste Schritte