Crea un deployment sulle VM

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 15000 a 15025.

  • 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 = FALSE al file di configurazione .vmx della 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:

  1. Crea una directory per il binario e vai al suo interno.

  2. Scarica il file binario:

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

    Puoi anche utilizzare scp o altri strumenti di trasferimento file per copiare il file binario nelle VM.

  3. 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:

  1. Copia il file deployment.yaml che hai creato nel Passaggio 1: decidi la topologia di deployment su uno dei server radice.

  2. Su questo server radice, esegui questo comando per creare il deployment:

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

    La console di ogni macchina mostra messaggi che indicano che il deployment è pronto.

  3. Convalida il deployment elencando le zone:

    spanner deployment zones list
    

    L'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:

  1. Crea un database:

    spanner --deployment-endpoint=LOAD_BALANCER_IP_OR_SERVER_IP databases create DATABASE_NAME
    
  2. Apri la shell SQL:

    spanner sql --database=DATABASE_NAME
    
  3. Crea 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");
    
  4. Verifica il database e i dati:

    Per elencare i database: bash spanner databases list

    L'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_NAME

  5. Esegui 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:

  1. 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: 10m
    
  2. Crea 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.

  1. Configura un agente di raccolta di tracce compatibile con OTLP. Per Jaeger:

    export COLLECTOR_OTLP_ENABLED=true
    jaeger-all-in-one
    

    Assicurati che la porta OTLP consenta il traffico di rete tra Spanner Omni e l'agente di raccolta.

  2. Imposta la variabile di ambiente SPANNER_TRACE_EXPORTER_ENDPOINT e 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
    

Passaggi successivi