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
15000bis15025zu.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
.vmxder VMmonitor_control.virtual_rdtsc = FALSEhinzu.
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:
Erstellen Sie ein Verzeichnis für die Binärdatei und rufen Sie es auf.
Binärdatei herunterladen:
gsutil cp gs://spanner-omni/VERSION/spanner-omni-VERSION-linux-x86_64.tar.gz .Sie können auch
scpoder andere Tools zur Dateiübertragung verwenden, um die Binärdatei auf Ihre VMs zu kopieren.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:
Kopieren Sie die
deployment.yaml-Datei, die Sie in Schritt 1: Bereitstellungstopologie festlegen erstellt haben, auf einen der Root-Server.Führen Sie auf diesem Stammserver den folgenden Befehl aus, um das Deployment zu erstellen:
spanner deployment create --config-file=deployment.yamlIn der Konsole jedes Computers werden Meldungen angezeigt, die darauf hinweisen, dass die Bereitstellung abgeschlossen ist.
Bereitstellung durch Auflisten der Zonen validieren:
spanner deployment zones listIn der Ausgabe werden die Standorte, Zonen und Server aufgeführt, die Sie in
deployment.yamlangegeben 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:
Erstellen Sie eine Datenbank:
spanner --deployment-endpoint=LOAD_BALANCER_IP_OR_SERVER_IP databases create DATABASE_NAMEÖffnen Sie die SQL-Shell:
spanner sql --database=DATABASE_NAMETabelle 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");Datenbank und Daten prüfen:
So listen Sie Datenbanken auf:
bash spanner databases listDie 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_NAMEFü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:
Stellen Sie die Prometheus-Datenquelle bereit, indem Sie eine Datei in
provisioning/datasourceserstellen: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: 10mErstellen Sie ein Dashboard in der Grafana-Benutzeroberfläche oder stellen Sie es mit
provisioning/dashboardsbereit.
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.
Richten Sie einen OTLP-kompatiblen Trace-Collector ein. Für Jaeger:
export COLLECTOR_OTLP_ENABLED=true jaeger-all-in-oneAchten Sie darauf, dass der OTLP-Port Netzwerkverkehr zwischen Spanner Omni und dem Collector zulässt.
Legen Sie die Umgebungsvariable
SPANNER_TRACE_EXPORTER_ENDPOINTfest 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