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 dei 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 su più zone.

La versione di anteprima di Spanner Omni non supporta la crittografia TLS. Per ottenere le funzionalità che ti consentono di creare deployment con la crittografia TLS, contatta Google per richiedere l'accesso anticipato alla versione completa di Spanner Omni.

Prima di iniziare

Prima di configurare un deployment non sicuro, assicurati di soddisfare i seguenti requisiti:

  • Accesso SSH: devi avere l'accesso SSH a ogni macchina nel deployment per scaricare ed eseguire il file binario di Spanner Omni.

  • Connettività: tutte le macchine nel deployment possono connettersi a vicenda.

  • Networking: la configurazione di rete consente la comunicazione TCP sulle porte da 15000 a 15025.

  • Archiviazione: ogni macchina ha spazio di archiviazione sufficiente per ospitare i dati gestiti dal deployment.

  • Requisiti di sistema: verifica che la tua configurazione soddisfi tutti i requisiti di sistema.

  • Configurazione vSphere: se esegui Spanner Omni su la 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: scegli 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à:

  • Server singolo: 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 in una località.

  • Più località, più zone: il deployment viene eseguito su più server distribuiti in più località e più 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 definisce 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 su 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 multilocalità

L'esempio seguente mostra una configurazione per un deployment su 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 programma binario

Ripeti questi passaggi per ogni macchina nel deployment:

  1. Crea una directory per il programma binario e vai alla directory.

  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 la continuità.

Opzione A: deployment a server singolo

Per un deployment a server singolo, esegui il comando seguente:

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 con scalabilità orizzontale

Per i deployment con 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 creato in Passaggio 1: scegli la topologia di deployment in uno dei server root.

  2. Sul server root, esegui il comando seguente 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.

Passaggio 5: (facoltativo) 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 server
Porta 15000 (o la porta utilizzata nel flag --server-address)
URL del controllo di integrità http://SERVER_IP:15012/healthz
Strategia di bilanciamento Round robin

Per i deployment multilocalità, puoi configurare un bilanciatore del carico per località e un bilanciatore del carico principale per distribuire il traffico su tutte le località.

Passaggio 6: interagisci con il deployment

Una volta pronto il deployment, puoi interagire con esso utilizzando l'interfaccia a riga di comando da qualsiasi VM o macchina locale. Se esegui l'interfaccia a riga di comando da una macchina separata, ad esempio un laptop dello sviluppatore, scarica ed estrai il pacchetto dell'interfaccia a riga di comando. Per saperne di più, consulta la Guida rapida all'utilizzo dell'interfaccia a riga di comando di Spanner Omni.

Per interagire con il deployment:

  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:

    NAME STATO VERSION_RETENTION_PERIOD EARLIEST_VERSION_TIME ENABLE_DROP_PROTECTION
    DATABASE_NAME PRONTO 1 ora 2025-02-07T12:25:30Z falso

    Per eseguire una query della tabella: bash spanner sql --database=DATABASE_NAME

  5. Esegui i seguenti comandi SQL:

    SHOW TABLES;
    SELECT * FROM names;
    

Passaggio 7: (facoltativo) scalare il deployment

Per scalare la capacità all'interno di una zona, puoi aggiungere server non root. Esegui il comando seguente 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

Passaggio 8: (facoltativo) 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 in 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. Provisiona l'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.

Configura gli 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.

Raccogli e analizza le tracce

Raccogli le 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_BOX_OTLP_TRACE_EXPORTER_ENDPOINT e avvia i server Spanner Omni:

    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
    

Passaggi successivi