Bereitstellung auf VMs erstellen

In diesem Dokument wird beschrieben, wie Sie Spanner Omni auf VMs bereitstellen. Für dieses Deployment ist keine Verschlüsselung vorhanden. Wenn Sie schnell eine Test- oder Proof-of-Concept-Umgebung einrichten möchten, um Spanner Omni zu testen, ist das Erstellen einer unsicheren Bereitstellung die schnellste Möglichkeit, da Sie weder mTLS noch 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.

Hinweis

Bevor Sie eine unsichere Bereitstellung einrichten, müssen die folgenden Anforderungen erfüllt sein:

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

  • Konnektivität: Alle Maschinen in der Bereitstellung können sich miteinander verbinden.

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

  • Speicher: Jede Maschine hat genügend Speicherplatz für die Daten, die vom Deployment verarbeitet werden.

  • Systemanforderungen: Prüfen Sie, ob Ihre Einrichtung alle Systemanforderungen erfüllt.

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

Schritt 1: Bereitstellungstopologie festlegen

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

  • Einzelner Server: Die Bereitstellung umfasst 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.

  • Ein Standort, mehrere Zonen (replizierte Bereitstellung): Die Bereitstellung wird auf mehreren Servern ausgeführt, die auf mehrere Zonen an einem Standort verteilt sind.

  • Mehrere Standorte, mehrere Zonen: Die Bereitstellung erfolgt auf mehreren Servern, die auf mehrere Standorte und mehrere Zonen verteilt sind.

Weitere Informationen finden Sie unter Spanner Omni – wichtige Begriffe und Spanner Omni-Bereitstellungskonfigurationen.

Erstellen Sie für jede Bereitstellung, die nicht auf einem einzelnen Server erfolgt, eine YAML-Konfigurationsdatei mit dem Namen deployment.yaml, in der die Topologie definiert wird. Geben Sie in dieser Datei nur die Root-Server an. Fügen Sie Nicht-Root-Server später 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 rufen Sie es auf.

  2. Binärdatei herunterladen:

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

    Sie können auch scp oder andere Tools zur Dateiübertragung verwenden, um die Binärdatei auf Ihre VMs zu 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 zum Speichern von Daten, Metadaten und Logs. Wenn ein Server neu gestartet werden muss, geben Sie für die Kontinuität dasselbe Verzeichnis an.

Option A: Bereitstellung auf einem einzelnen Server

Führen Sie für eine Einzelserverbereitstellung den folgenden Befehl aus:

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

Fahren Sie nach dem Start des Servers mit Schritt 6: Mit der Bereitstellung interagieren fort.

Option B: Scale-out-Bereitstellung

Bei Scale-out-Bereitstellungen starten Sie den Server auf jedem Computer. Die Flags --server-address und --zone entsprechen den Werten in Ihrer Bereitstellungskonfiguration. Das Netzwerk löst das server_address.

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 das Deployment:

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

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

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

    In der Konsole jedes Computers werden Meldungen angezeigt, die darauf hinweisen, dass die Bereitstellung abgeschlossen ist.

  3. Bereitstellung durch Auflisten der Zonen validieren:

    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
Backend-IP Die IP-Adressen Ihrer Server
Port 15000 (oder der Port, den Sie im --server-address-Flag verwenden)
URL für Systemdiagnose http://SERVER_IP:15012/healthz
Balancing-Strategie 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 die Bereitstellung abgeschlossen ist, können Sie über die CLI von einer beliebigen VM oder einem lokalen Computer aus mit ihr interagieren. Wenn Sie die CLI auf einem separaten Computer ausführen, z. B. auf einem Entwicklerlaptop, laden Sie das CLI-Paket herunter und entpacken Sie es. Weitere Informationen finden Sie unter Kurzanleitung: Spanner Omni CLI verwenden.

So interagieren Sie mit Ihrem Deployment:

  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. Tabelle erstellen und Daten einfügen:

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

    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-Root-Server 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

Um den Zustand und die Leistung Ihrer Bereitstellung zu überwachen, 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 über Port 15012. Fügen Sie Folgendes zu scrape_configs in prometheus.yml 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-Benutzeroberfläche oder stellen Sie es mit provisioning/dashboards bereit.

Warnungen einrichten

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

Traces erfassen und analysieren

Informationen zum verteilten Tracing im OTLP-Format erfassen und mit Tools wie Jaeger visualisieren.

  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 Netzwerkverkehr zwischen Spanner Omni und dem Collector zulässt.

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

    export SPANNER_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