Créer un déploiement sur des VM

Ce document explique comment déployer Spanner Omni sur des machines virtuelles (VM). Ce déploiement n'est pas chiffré. Si vous souhaitez configurer rapidement un environnement de test ou de validation du concept pour évaluer Spanner Omni, la création d'un déploiement non sécurisé est le moyen le plus rapide de commencer, car elle ne nécessite pas de configurer mTLS ni d'autres mesures de sécurité. Toutefois, en raison des risques de sécurité (trafic réseau non chiffré, accès ouvert, etc.), 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 n'est pas compatible avec le chiffrement TLS. Pour bénéficier des fonctionnalités qui vous permettent de créer des déploiements avec chiffrement TLS, contactez Google afin de demander un accès anticipé à la version complète de Spanner Omni.

Avant de commencer

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

  • Accès SSH : vous devez disposer 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 : la configuration de votre réseau autorise la communication TCP sur les ports 15000 à 15025.

  • Stockage : chaque machine dispose d'un espace de stockage suffisant 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 Time Stamp Counter (TSC). Ajoutez monitor_control.virtual_rdtsc = FALSE au fichier de configuration .vmx de la machine virtuelle.

Étape 1 : Déterminez 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 dans une seule zone.

  • Un seul emplacement, plusieurs zones (déploiement répliqué) : le déploiement s'exécute sur plusieurs serveurs répartis dans plusieurs zones d'un même emplacement.

  • Plusieurs emplacements, plusieurs zones : 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 multisite

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échargez et configurez le binaire

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

  1. Créez un répertoire pour le fichier binaire et accédez-y.

  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 fichier 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 d'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 scale-out, démarrez le serveur sur chaque machine. Les indicateurs --server-address et --zone correspondent aux valeurs de la configuration de votre 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éez 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éterminez 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 informations suivantes :

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 multisites, vous pouvez configurer un équilibreur de charge par site et un équilibreur de charge principal pour répartir le trafic sur tous les sites.

Étape 6 : Interagir avec le déploiement

Une fois votre déploiement prêt, vous pouvez interagir avec lui à l'aide de la CLI depuis n'importe quelle VM ou machine locale. Si vous exécutez la CLI à partir d'une autre machine, comme un ordinateur portable de développeur, téléchargez et extrayez le package de la CLI. Pour en savoir plus, consultez le guide de démarrage rapide avec 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 le shell 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 :

    NOM ÉTAT VERSION_RETENTION_PERIOD EARLIEST_VERSION_TIME ENABLE_DROP_PROTECTION
    DATABASE_NAME READY 1 h 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 : (Facultatif) Mettez à l'échelle le déploiement

Pour augmenter la capacité d'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 : (Facultatif) Observer le déploiement

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 les métriques au format Prometheus sur le port 15012. Ajoutez le code suivant à votre 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 les alertes à l'aide de l'interface utilisateur ou des fichiers de configuration de Grafana. 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 trace 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
    

Étapes suivantes