Questo documento spiega come eseguire il deployment di Spanner Omni sulle macchine virtuali (VM). Questo deployment non ha la crittografia. Se vuoi configurare rapidamente un ambiente di test o proof of concept per valutare Spanner Omni, la creazione di un deployment non sicuro è il modo più rapido per iniziare perché non richiede la configurazione di mTLS o altre misure di sicurezza. Tuttavia, a causa di rischi per la sicurezza, come il traffico di rete non criptato e l'accesso aperto, non consigliamo questa configurazione per gli ambienti di produzione. Puoi scegliere tra un deployment a server singolo o regionale in più zone.
Prima di iniziare
Prima di configurare un deployment non sicuro, assicurati di soddisfare i seguenti requisiti:
Accesso SSH: disponi dell'accesso SSH a ogni macchina nel deployment per scaricare ed eseguire il file binario Spanner Omni.
Connettività: tutte le macchine nel deployment possono connettersi tra loro.
Networking: la configurazione di rete consente la comunicazione TCP sulle porte
15000a15025.Spazio di archiviazione: ogni macchina dispone di spazio di archiviazione sufficiente per ospitare i dati gestiti dal deployment.
Requisiti di sistema: assicurati che la tua configurazione soddisfi tutti i requisiti di sistema.
Configurazione vSphere: se esegui Spanner Omni sulla piattaforma di virtualizzazione vSphere, disattiva la virtualizzazione del contatore di timestamp (TSC). Aggiungi
monitor_control.virtual_rdtsc = FALSEal file di configurazione.vmxdella macchina virtuale.
Passaggio 1: decidi la topologia di deployment
Spanner Omni utilizza una gerarchia di località, zone e server per definire la topologia di deployment. Puoi scegliere tra le seguenti topologie in base ai tuoi target di disponibilità:
Singolo server: il deployment ha un singolo server in esecuzione su una singola macchina.
Zona singola: il deployment viene eseguito su più server distribuiti in una singola zona.
Singola località, più zone (deployment replicato): il deployment viene eseguito su più server distribuiti in più zone di una località.
Più località, più zone: il deployment viene eseguito su più server distribuiti in più località e zone.
Per saperne di più, consulta Termini chiave di Spanner Omni e Configurazioni di deployment di Spanner Omni.
Per qualsiasi deployment diverso da un singolo server, crea un file di configurazione YAML
denominato deployment.yaml che definisca la topologia. Specifica solo i server root
in questo file. Aggiungi i server non root in un secondo momento.
Esempio: deployment multizona replicato
L'esempio seguente mostra una configurazione per un deployment regionale in tre zone.
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
Esempio: deployment in più sedi
L'esempio seguente mostra una configurazione per un deployment in tre località.
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
Passaggio 2: scarica e configura il file binario
Ripeti questi passaggi per ogni macchina nel deployment:
Crea una directory per il binario e vai al suo interno.
Scarica il file binario:
gsutil cp gs://spanner-omni/VERSION/spanner-omni-VERSION-linux-x86_64.tar.gz .Puoi anche utilizzare
scpo altri strumenti di trasferimento file per copiare il file binario nelle VM.Estrai il file binario:
tar -xvf spanner-omni-VERSION-linux-x86_64.tar.gz
Passaggio 3: avvia i server
Crea una directory di base su ogni server per archiviare dati, metadati e log. Se un server deve essere riavviato, specifica la stessa directory per garantire la continuità.
Opzione A: deployment di un singolo server
Per un deployment su un singolo server, esegui il seguente comando:
spanner start-single-server --base-dir=SPANNER_BASE_DIR
Dopo l'avvio del server, vai al passaggio 6: interagisci con il deployment.
Opzione B: deployment di scale out
Per i deployment di scalabilità orizzontale, avvia il server su ogni macchina. I flag
--server-address e --zone corrispondono ai valori nella configurazione del deployment. La rete risolve server_address.
spanner start --root --server-address=RESOLVABLE_HOSTNAME --zone=ZONE_NAME --base-dir=SPANNER_BASE_DIR
Ad esempio:
spanner start --root --server-address=rootserver1 --zone=us-central-1a --base-dir=./spanbasedir
Passaggio 4: crea il deployment
Per creare il deployment:
Copia il file
deployment.yamlche hai creato nel Passaggio 1: decidi la topologia di deployment su uno dei server radice.Su questo server radice, esegui questo comando per creare il deployment:
spanner deployment create --config-file=deployment.yamlLa console di ogni macchina mostra messaggi che indicano che il deployment è pronto.
Convalida il deployment elencando le zone:
spanner deployment zones listL'output elenca le località, le zone e i server specificati in
deployment.yaml.
(Facoltativo) Passaggio 5: configura un bilanciatore del carico
Configura un bilanciatore del carico TCP con i seguenti dettagli:
| Impostazione | Valore |
|---|---|
| Protocollo | TCP |
| IP di backend | Gli indirizzi IP dei tuoi server |
| Port (Porta) | 15000 (o la porta che utilizzi nel flag --server-address) |
| URL del controllo di integrità | http://SERVER_IP:15012/healthz |
| Strategia di bilanciamento | Round robin |
Per i deployment in più sedi, puoi configurare un bilanciatore del carico per sede e un bilanciatore del carico principale per distribuire il traffico in tutte le sedi.
Passaggio 6: interagisci con il deployment
Una volta pronto il deployment, puoi interagire con esso utilizzando la CLI da qualsiasi VM o macchina locale. Se esegui la CLI da un'altra macchina, ad esempio un laptop per sviluppatori, scarica ed estrai il pacchetto della CLI. Per saperne di più, consulta Guida rapida all'utilizzo di Spanner Omni CLI.
Per interagire con l'implementazione, segui questi passaggi:
Crea un database:
spanner --deployment-endpoint=LOAD_BALANCER_IP_OR_SERVER_IP databases create DATABASE_NAMEApri la shell SQL:
spanner sql --database=DATABASE_NAMECrea una tabella e inserisci i dati:
CREATE TABLE names ( nameId INT64 NOT NULL, name STRING(100) ) PRIMARY KEY (nameId); INSERT INTO names (nameId, name) VALUES (1, "Jack");Verifica il database e i dati:
Per elencare i database:
bash spanner databases listL'output è simile al seguente:
NOME STATO VERSION_RETENTION_PERIOD EARLIEST_VERSION_TIME ENABLE_DROP_PROTECTION DATABASE_NAME PRONTO 1 ora 2025-02-07T12:25:30Z false Per eseguire una query della tabella:
bash spanner sql --database=DATABASE_NAMEEsegui i seguenti comandi SQL:
SHOW TABLES; SELECT * FROM names;
(Facoltativo) Passaggio 7: scala il deployment
Per scalare la capacità all'interno di una zona, puoi aggiungere server non root. Esegui il seguente comando su ogni nuovo server:
spanner start --server-address=NON_ROOT_HOSTNAME --join-servers=SERVER1:PORT1,SERVER2:PORT2,SERVER3:PORT3 --zone=ZONE_NAME --base-dir=SPANNER_BASE_DIR
(Facoltativo) Passaggio 8: osserva il deployment
Per monitorare l'integrità e le prestazioni del deployment, puoi configurare la raccolta, la visualizzazione e gli avvisi delle metriche. Puoi anche raccogliere tracce distribuite per analizzare la latenza delle richieste.
Configura Prometheus
I server Spanner Omni esportano le metriche nel formato Prometheus sulla porta
15012. Aggiungi quanto segue a scrape_configs in prometheus.yml:
scrape_configs:
- job_name: 'spanner'
static_configs:
- targets: ['HOST1:15012', 'HOST2:15012', 'HOSTN:15012']
Configura Grafana
Per visualizzare i dati di monitoraggio in Grafana:
Esegui il provisioning dell'origine dati Prometheus creando un file in
provisioning/datasources: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: 10mCrea una dashboard nell'interfaccia utente di Grafana o esegui il provisioning utilizzando
provisioning/dashboards.
Configurazione degli avvisi
Configura gli avvisi utilizzando l'interfaccia utente di Grafana o i file di configurazione. Ad esempio, puoi attivare un avviso se il 95° percentile (p95) della latenza delle transazioni supera i 100 millisecondi. Per un elenco degli avvisi disponibili, consulta Utilizzare gli avvisi di Prometheus per monitorare Spanner Omni.
Raccogliere e analizzare le tracce
Raccogli informazioni di tracciamento distribuito in formato OTLP e visualizzale con strumenti come Jaeger.
Configura un agente di raccolta di tracce compatibile con OTLP. Per Jaeger:
export COLLECTOR_OTLP_ENABLED=true jaeger-all-in-oneAssicurati che la porta OTLP consenta il traffico di rete tra Spanner Omni e l'agente di raccolta.
Imposta la variabile di ambiente
SPANNER_TRACE_EXPORTER_ENDPOINTe avvia i server Spanner Omni:export SPANNER_TRACE_EXPORTER_ENDPOINT=COLLECTOR_HOST:COLLECTOR_PORT spanner start --root --server-address=RESOLVABLE_HOSTNAME --zone=ZONE_NAME --base-dir=SPANNER_BASE_DIR