Créer un déploiement sur des VM

Ce document explique comment déployer Spanner Omni sur des machines virtuelles (VM). Ce déploiement ne comporte pas de chiffrement. Si vous souhaitez configurer rapidement un environnement de test ou de validation de concept pour évaluer Spanner Omni, la création d'un déploiement non sécurisé est le moyen le plus rapide de commencer, car vous n'avez pas besoin de configurer l'authentification mTLS ni d'autres mesures de sécurité. Toutefois, en raison des risques de sécurité, tels que le trafic réseau non chiffré et l'accès ouvert, nous ne recommandons pas cette configuration pour les environnements de production. Vous pouvez choisir entre un déploiement sur un seul serveur ou un déploiement régional sur plusieurs zones.

La version Preview de Spanner Omni ne prend pas en charge le chiffrement TLS et cesse d'écrire des données 90 jours après la création d'un déploiement. Pour bénéficier d'un accès anticipé à l'édition avec toutes les fonctionnalités, contactez Google.

Avant de commencer

Avant de configurer un déploiement non sécurisé, assurez-vous de remplir les conditions suivantes :

  • Accès SSH : disposez d'un accès SSH à chaque machine du déploiement pour télécharger et exécuter le binaire Spanner Omni.

  • Connectivité : toutes les machines du déploiement peuvent se connecter les unes aux autres.

  • Mise en réseau : votre configuration réseau autorise la communication TCP sur les ports 15000 à 15025.

  • Stockage : chaque machine dispose de suffisamment d'espace de stockage pour héberger les données gérées par le déploiement.

  • Configuration système requise : assurez-vous que votre configuration répond à toutes les exigences du système.

  • Configuration vSphere : si vous exécutez Spanner Omni sur la plate-forme de virtualisation vSphere, désactivez la virtualisation du compteur d'horodatage (TSC). Ajoutez monitor_control.virtual_rdtsc = FALSE au fichier de configuration .vmx de la machine virtuelle.

Étape 1 : Déterminer la topologie de déploiement

Spanner Omni utilise une hiérarchie d'emplacements, de zones et de serveurs pour définir sa topologie de déploiement. Vous pouvez choisir parmi les topologies suivantes en fonction de vos objectifs de disponibilité :

  • Serveur unique : le déploiement comporte un seul serveur qui s'exécute sur une seule machine.

  • Zone unique : le déploiement s'exécute sur plusieurs serveurs répartis sur une seule zone.

  • Emplacement unique, zones multiples (déploiement répliqué) : le déploiement s'exécute sur plusieurs serveurs répartis sur plusieurs zones dans un seul emplacement.

  • Emplacements multiples, zones multiples : le déploiement s'exécute sur plusieurs serveurs répartis sur plusieurs emplacements et plusieurs zones.

Pour en savoir plus, consultez Termes clés de Spanner Omni et Configurations de déploiement de Spanner Omni.

Pour tout déploiement autre qu'un serveur unique, créez un fichier de configuration YAML nommé deployment.yaml qui définit la topologie. Ne spécifiez que les serveurs racine dans ce fichier. Ajoutez les serveurs non racine ultérieurement.

Exemple : Déploiement multizone répliqué

L'exemple suivant montre une configuration pour un déploiement régional sur trois zones.

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

Exemple : Déploiement multizone

L'exemple suivant montre une configuration pour un déploiement sur trois emplacements.

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

Étape 2 : Télécharger et configurer le binaire

Répétez ces étapes pour chaque machine du déploiement :

  1. Créez un répertoire pour le binaire et accédez à celui-ci.

  2. Téléchargez le binaire :

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

    Vous pouvez également utiliser scp ou d'autres outils de transfert de fichiers pour copier le binaire sur vos VM.

  3. Extrayez le binaire :

    tar -xvf spanner-omni-VERSION-linux-x86_64.tar.gz
    

Étape 3 : Démarrer les serveurs

Créez un répertoire de base sur chaque serveur pour stocker les données, les métadonnées et les journaux. Si un serveur doit redémarrer, spécifiez le même répertoire pour assurer la continuité.

Option A : Déploiement sur un seul serveur

Pour un déploiement sur un seul serveur, exécutez la commande suivante :

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

Une fois le serveur démarré, passez à l'étape 6 : Interagir avec le déploiement.

Option B : Déploiement avec scaling horizontal

Pour les déploiements avec scaling horizontal, démarrez le serveur sur chaque machine. Les options --server-address et --zone correspondent aux valeurs de votre configuration de déploiement. Le réseau résout le server_address.

spanner start --root --server-address=RESOLVABLE_HOSTNAME --zone=ZONE_NAME --base-dir=SPANNER_BASE_DIR

Exemple :

spanner start --root --server-address=rootserver1 --zone=us-central-1a --base-dir=./spanbasedir

Étape 4 : Créer le déploiement

Pour créer le déploiement, procédez comme suit :

  1. Copiez le fichier deployment.yaml que vous avez créé à l'étape 1 : Déterminer la topologie de déploiement sur l'un des serveurs racine.

  2. Sur ce serveur racine, exécutez la commande suivante pour créer le déploiement :

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

    La console de chaque machine affiche des messages indiquant que le déploiement est prêt.

  3. Validez le déploiement en listant les zones :

    spanner deployment zones list
    

    Le résultat liste les emplacements, les zones et les serveurs que vous avez spécifiés dans deployment.yaml.

Étape 5 : Configurer un équilibreur de charge (facultatif)

Configurez un équilibreur de charge TCP avec les détails suivants :

Paramètre Valeur
Protocole TCP
Adresse IP du backend Adresses IP de vos serveurs
Port 15000 (ou le port que vous utilisez dans l'option --server-address)
URL de vérification de l'état http://SERVER_IP:15012/healthz
Stratégie d'équilibrage Round robin (à tour de rôle)

Pour les déploiements multizones, vous pouvez configurer un équilibreur de charge par emplacement et un équilibreur de charge principal pour répartir le trafic sur tous les emplacements.

Étape 6 : Interagir avec le déploiement

Une fois votre déploiement prêt, vous pouvez interagir avec lui à l'aide de la CLI à partir de n'importe quelle VM ou machine locale. Si vous exécutez la CLI à partir d'une machine distincte, telle qu'un ordinateur portable de développeur, téléchargez et extrayez le package de la CLI. Pour en savoir plus, consultez Démarrage rapide à l'aide de la CLI Spanner Omni.

Pour interagir avec votre déploiement, procédez comme suit :

  1. Créez une base de données :

    spanner --deployment-endpoint=LOAD_BALANCER_IP_OR_SERVER_IP databases create DATABASE_NAME
    
  2. Ouvrez l'interface SQL :

    spanner sql --database=DATABASE_NAME
    
  3. Créez une table et insérez des données :

    CREATE TABLE names (
      nameId INT64 NOT NULL,
      name STRING(100)
    ) PRIMARY KEY (nameId);
    
    INSERT INTO names (nameId, name) VALUES (1, "Jack");
    
  4. Vérifiez la base de données et les données :

    Pour lister les bases de données : bash spanner databases list

    La sortie ressemble à ceci :

    NAME ÉTAT VERSION_RETENTION_PERIOD EARLIEST_VERSION_TIME ENABLE_DROP_PROTECTION
    DATABASE_NAME READY 1h 2025-02-07T12:25:30Z faux

    Pour interroger la table: bash spanner sql --database=DATABASE_NAME

  5. Exécutez les commandes SQL suivantes :

    SHOW TABLES;
    SELECT * FROM names;
    

Étape 7 : Mettre à l'échelle le déploiement (facultatif)

Pour mettre à l'échelle la capacité dans une zone, vous pouvez ajouter des serveurs non racine. Exécutez la commande suivante sur chaque nouveau serveur :

spanner start --server-address=NON_ROOT_HOSTNAME --join-servers=SERVER1:PORT1,SERVER2:PORT2,SERVER3:PORT3 --zone=ZONE_NAME --base-dir=SPANNER_BASE_DIR

Étape 8 : Observer le déploiement (facultatif)

Pour surveiller l'état et les performances de votre déploiement, vous pouvez configurer la collecte, la visualisation et les alertes de métriques. Vous pouvez également collecter des traces distribuées pour analyser la latence des requêtes.

Configurer Prometheus

Les serveurs Spanner Omni exportent des métriques au format Prometheus sur le port 15012. Ajoutez le code suivant à vos scrape_configs dans prometheus.yml :

scrape_configs:
  - job_name: 'spanner'
    static_configs:
      - targets: ['HOST1:15012', 'HOST2:15012', 'HOSTN:15012']

Configurer Grafana

Pour afficher les données de surveillance dans Grafana :

  1. Provisionnez la source de données Prometheus en créant un fichier dans 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. Créez un tableau de bord dans l'interface utilisateur Grafana ou provisionnez-le à l'aide de provisioning/dashboards.

Configurer des alertes

Configurez des alertes à l'aide de l'interface utilisateur Grafana ou des fichiers de configuration. Par exemple, vous pouvez déclencher une alerte si le 95e centile (p95) de la latence des transactions dépasse 100 millisecondes. Pour obtenir la liste des alertes disponibles, consultez Utiliser les alertes Prometheus pour surveiller Spanner Omni.

Collecter et analyser des traces

Collectez des informations de traçage distribué au format OTLP et visualisez-les avec des outils tels que Jaeger.

  1. Configurez un collecteur de traces compatible avec OTLP. Pour Jaeger :

    export COLLECTOR_OTLP_ENABLED=true
    jaeger-all-in-one
    

    Assurez-vous que le port OTLP autorise le trafic réseau entre Spanner Omni et le collecteur.

  2. Définissez la variable d'environnement SPANNER_BOX_OTLP_TRACE_EXPORTER_ENDPOINT et démarrez les serveurs 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
    

Étape suivante