Effectuer d'autres tâches avec des instances

Voici une liste de tâches que vous pouvez effectuer avec vos instances.

Avant de commencer

Copier des fichiers entre une instance et un ordinateur local

Utilisez gcloud compute scp pour transférer des fichiers entre une instance Linux et un ordinateur local :

gcloud compute scp my-instance:~/file-1 \
    my-instance:~/file-2 \
    ~/local-dir

Pour copier des fichiers de votre ordinateur local vers votre instance, utilisez ce qui suit :

gcloud compute scp ~/local-dir/file-1 \
    my-instance:~/remote-destination

Vérifier que vos systèmes sont exécutés dans Compute Engine

Il est normal de vérifier si les systèmes sont exécutés dans un environnement de cloud spécifique. Utilisez les instructions suivantes pour déterminer s'ils sont bien exécutés dans Compute Engine.

Utiliser le serveur de métadonnées

Vous pouvez facilement vérifier si vos applications ou vos scripts s'exécutent dans une instance de Compute Engine à l'aide du serveur de métadonnées. Lorsque vous effectuez une requête sur le serveur, toute réponse du serveur de métadonnées contiendra l'en-tête Metadata-Flavor: Google. Vous pouvez rechercher cet en-tête pour déterminer de manière fiable que vos systèmes s'exécutent dans Compute Engine.

Par exemple, la requête curl suivante renvoie un en-tête Metadata-Flavor: Google Google, indiquant que la requête est effectuée à partir d'une instance de Compute Engine.


me@my-inst:~$ curl metadata.google.internal -i


HTTP/1.1 200 OK
Metadata-Flavor: Google
Content-Type: application/text
Date: Thu, 10 Apr 2014 19:24:27 GMT
Server: Metadata Server for VM
Content-Length: 22
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN

0.1/

computeMetadata/

Utiliser d'autres méthodes

Linux

Pour les instances Linux, vous pouvez utiliser l'outil dmidecode pour accéder directement aux informations DMI/SMBIOS dans /proc/mem. Exécutez la commande suivante, et l'outil dmidecode va imprimer "Google Compute Engine" pour indiquer que vous utilisez Compute Engine :

my@myinst:~$ sudo dmidecode -s system-product-name | grep "Google Compute Engine"
Google Compute Engine

Windows

Sur les instances Windows, "Google" est répertorié comme fabricant et modèle du système. Vous pouvez utiliser des utilitaires comme msinfo32.exe pour rechercher ces informations. Par exemple, msinfo32 affiche les informations suivantes :

Écran msinfo32 affichant Google en tant que fabricant et modèle (cliquez pour agrandir)
Écran msinfo32 affichant Google en tant que fabricant et modèle (cliquez pour agrandir)

Si vous devez déterminer ces informations de manière automatisée sur une instance Windows, vous pouvez créer une application Windows Management Instrumentation (WMI) en apportant certaines modifications.

Gérer les échecs d'instance

Malheureusement, les instances individuelles connaissent des dysfonctionnements de temps en temps. Cela peut être dû à diverses raisons, y compris des pannes inattendues, des erreurs matérielles ou d'autres défaillances du système. Afin de remédier à ces situations, vous pouvez utiliser des disques persistants et sauvegarder régulièrement vos données.

Si une instance s'arrête, elle sera automatiquement redémarrée avec les mêmes paramètres de disque persistant racine, de métadonnées et d'instance que ceux en place au moment du dysfonctionnement. Pour contrôler le comportement au redémarrage automatique d'une instance, consultez Définition des options de planification.

En général, vous devez concevoir votre système de manière à ce que la défaillance d'une instance unique ne cause pas de dommage au niveau de votre application. Pour plus d'informations, consultez la section Concevoir des systèmes robustes.

Identifier une instance via l'UUID

Chaque machine virtuelle possède un identifiant unique universel (UUID) accessible via l'outil dmidecode pour les images Linux. Un UUID est calculé à partir de l'ID du projet, de la zone et du nom d'instance de la machine virtuelle. L'UUID d'une instance est unique parmi les machines virtuelles Compute Engine et reste stable pendant la durée de vie de l'instance. Les UUID sont persistants lors des redémarrages des machines virtuelles. Si une machine virtuelle est supprimée et recréée dans le même projet et la même zone, avec le même nom d'instance, l'UUID sera également identique.

Pour rechercher l'UUID sur une instance Linux, exécutez la commande suivante à partir de votre machine virtuelle :

me@myinst:~$ sudo dmidecode -t system | grep UUID

L'outil doit imprimer une réponse similaire à :

  UUID: FE0C672D-324F-25F1-052C-6C50FA8B7397

Installer des paquets et configurer une instance

Le créateur d'instance dispose de privilèges d'administrateur sur toute instance ajoutée à un projet et figure automatiquement dans la liste SUDO.

Lorsque vous êtes connecté à une instance en tant qu'administrateur, vous pouvez installer des packages et configurer l'instance comme vous le feriez avec une machine Linux standard. Vous pouvez installer Apache, comme sur cet exemple :


user@myinst:~$ sudo apt-get update && sudo apt-get install apache2
Reading package lists... Done

Building dependency tree
Reading state information... Done
The following extra packages will be installed:

[...]

Vous pouvez déplacer des fichiers entre votre ordinateur local et l'instance à l'aide de gcloud compute scp, comme décrit dans la section Copier des fichiers entre une instance et un ordinateur local.

Notez que votre machine doit avoir accès à Internet pour exécuter apt-get. Cela signifie qu'elle a besoin d'une adresse IP externe ou d'un accès à un proxy Internet.

Compute Engine modifie un attribut spécial dans le serveur de métadonnées d'une machine virtuelle avant toute tentative de migration, d'arrêt ou de démarrage de la machine dans le cadre d'un événement de maintenance d'infrastructure en attente. L'attribut maintenance-event sera mis à jour avant et après un événement, vous permettant de détecter à quel moment ces événements sont imminents. Vous pouvez utiliser ces informations pour automatiser les scripts ou les commandes que vous souhaitez exécuter avant et/ou après un événement de maintenance.

Pour plus d'informations, consultez la section Avis de maintenance transparente sur la page de documentation du Serveur de métadonnées.

Répertorier toutes les instances

Vous pouvez afficher une liste de toutes les instances d'un projet en appelant instances list :

gcloud compute instances list
NAME               ZONE          MACHINE_TYPE  INTERNAL_IP    EXTERNAL_IP     STATUS
example-instance   us-central1-a n1-standard-1 10.105.155.92  173.255.114.53  RUNNING
example-instance-2 us-central1-a n1-standard-1 10.181.215.203 146.148.32.59   RUNNING

Par défaut, gcloud compute fournit une liste agrégée de toutes vos ressources sur toutes les zones disponibles. Si vous voulez une liste de ressources provenant d'une seule zone, fournissez l'indicateur --zones dans votre requête.

Dans l'API, vous devez envoyer des requêtes à deux méthodes différentes pour obtenir une liste de ressources agrégées ou une liste de ressources au sein d'une zone. Pour faire une demande de liste de ressources agrégées, effectuez une requête GET auprès de l'URI aggregatedList, en remplaçant le projet avec votre propre ID de projet :

https://compute.googleapis.com/compute/v1/projects/myproject/aggregated/instances

Dans les bibliothèques clientes, faites une demande à la fonction instances().aggregatedList :

def listAllInstances(auth_http, gce_service):
  request = gce_service.instances().aggregatedList(project=PROJECT_ID)
  response = request.execute(auth_http)

  print response

Pour effectuer une demande de liste d'instances dans une zone, envoyez une requête GET à l'URI suivant, en remplaçant le projet par votre propre ID de projet et la zone avec la zone des instances :

https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instances

Dans les bibliothèques clientes de l'API, créez une requête instances().list :

def listInstances(auth_http, gce_service):
  request = gce_service.instances().list(project="myproject",
    zone="us-central1-f")
  response = request.execute(auth_http)

  print response

Réduire les coûts avec des instances préemptives

Compute Engine propose des instances préemptives que vous pouvez créer et exécuter à un prix beaucoup plus bas que les instances ordinaires. Si vos applications tolèrent les pannes et peuvent résister à de possibles interruptions d'instances, alors les instances préemptives vous aideront à réduire considérablement les coûts de Compute Engine. Consultez la documentation relative aux instances préemptives pour en savoir plus.

Configurer le protocole NTP (Network Time Protocol) pour les instances

De nombreux systèmes logiciels qui dépendent d'un séquençage minutieux des événements reposent sur une horloge système stable et cohérente. Les journaux système écrits par la plupart des services incluent un horodatage, qui aide à déboguer les problèmes qui surviennent entre les différents composants de votre système. Pour que les horloges système restent synchronisées, les instances de Compute Engine sont préconfigurées pour utiliser le protocole NTP (Network Time Protocol).

En plus de synchroniser l'heure du serveur, NTP est utile dans le cas rare de l'utilisation d'une seconde intercalaire. Une seconde intercalaire est un ajustement d'une seconde du temps universel coordonné, UTC, pour tenir compte des changements liés au ralentissement de la rotation de la Terre. Les secondes intercalaires ne se produisent pas à intervalles réguliers, car la vitesse de rotation de la Terre varie irrégulièrement en fonction des événements climatiques et géologiques. Les secondes intercalaires précédentes ont causé des dommages considérables sur une variété de services et d'applications Web. Les serveurs NTP permettent de s'assurer que tous les serveurs signalent la même heure dans le cas d'un saut de seconde.

Cette section décrit comment configurer les serveurs NTP sur vos machines virtuelles pour qu'elles s'adaptent dans l'éventualité d'un saut de seconde.

Serveurs Google NTP et lissage du saut de seconde

Les secondes intercalaires dans le temps Unix sont généralement ajoutées en répétant la dernière seconde de la journée. Cela peut causer des problèmes avec les logiciels qui ne s'attendent pas à des décalages dans le temps. Pour contourner ce problème, les serveurs de temps de Google "lissent" la seconde supplémentaire sur une période de plus de vingt heures (dix heures avant et dix heures après la seconde intercalaire) pour que les ordinateurs n'identifient pas cette seconde comme une redondance au niveau de l'horodatage. Ce dispositif réduit les risques dans les systèmes qui dépendent d'un horodatage cohérent. Il est recommandé de configurer toutes les instances de machine virtuelle Compute Engine pour l'utilisation de services Google NTP internes.

Configurer NTP pour vos instances

Google ne peut pas prédire comment les services NTP externes, tels que pool.ntp.org, vont gérer la seconde intercalaire. Dans la mesure du possible, il est recommandé de ne pas utiliser de sources NTP externes avec des machines virtuelles Compute Engine. En effet, l'utilisation du service NTP de Google et d'un service externe pourrait entraîner des modifications imprévisibles de l'horloge du système. L'utilisation d'une seule source NTP externe est préférable à l'utilisation de plusieurs combinaisons, mais les services NTP externes, tels que pool.ntp.org, utiliseront probablement la technique d'ajout ou de retrait de secondes pour gérer la seconde intercalaire. Par conséquent, vos machines virtuelles risquent d'afficher une redondance au niveau de l'horodatage.

L'approche la plus sûre consiste à configurer vos machines virtuelles Compute Engine pour seulement utiliser le serveur interne NTP fourni par Google. Ne combinez pas de serveurs NTP externes et de serveurs NTP Google, car cela pourrait entraîner un dysfonctionnement imprévisible.

Pour vous assurer que vos machines virtuelles sont correctement configurées, suivez les instructions suivantes.

Linux

  1. Utilisez ssh pour vous connecter à votre instance.

    Console

    1. Accédez à la page Instances de VM dans la console GCP.
    2. Cliquez sur le bouton ssh à côté de l'instance que vous souhaitez configurer.

      Capture d'écran du bouton SSH

    gcloud

    À l'aide de l'outil de ligne de commande gcloud, exécutez la commande suivante :

    gcloud compute instances ssh INSTANCE
    

  2. Sur votre instance, exécutez ntpq -p pour vérifier l'état actuel de votre configuration NTP :

    $ ntpq -p
    
    
         remote           refid      st t when poll reach   delay   offset  jitter
    
    ==============================================================================
    *metadata.google 255.28.23.83     2 u   27   64    1    0.634   -2.537   2.285
    *217.162.232.173 130.149.17.8     2 u  191 1024  176   79.245    3.589  27.454
    

    Si un enregistrement unique pointe vers metadata.google ou metadata.google.internal, vous n'avez pas besoin d'apporter de modifications. Si vous voyez plusieurs sources mélangées entre metadata.google et une source publique telle que pool.ntp.org, vous devez mettre à jour vos sources pour supprimer tous les serveurs NTP externes.

    Pour cet exemple, il existe deux enregistrements, l'un pointant vers metadata.google et l'autre pointant vers une adresse externe. Comme il existe plusieurs sources, vous devez mettre à jour vos serveurs NTP pour supprimer l'adresse *217.162.232.173.

    1. Configurez vos serveurs NTP pour supprimer les sources externes.

      Pour configurer vos serveurs NTP, modifiez le fichier /etc/ntp.conf dans votre éditeur de texte préféré. Recherchez la section servers de la configuration et supprimez toutes les sources NTP non-Google :

    $ vim /etc/ntp.conf
    
    ...
    # You do need to talk to an NTP server or two (or three).
    #server ntp.your-provider.example
    ...
    server metadata.google.internal iburst
    

    Après avoir modifié votre fichier /etc/ntp.conf, redémarrez le service NTP. La commande pour redémarrer varie en fonction de la distribution Linux :

    $ sudo service ntp reload
    1. Vérifiez votre configuration. Exécutez à nouveau la commande ntpq -p pour vérifier vos modifications :
    $ ntpq -p
    
         remote           refid      st t when poll reach   delay   offset  jitter
    ==============================================================================
    *metadata.google 255.28.23.83     2 u   27   64    1    0.634   -2.537   2.285
    

Windows

  1. Accédez à la page Instances de VM dans la console GCP.
  2. Cliquez sur le bouton RDP à côté de l'instance Windows à laquelle vous souhaitez vous connecter.

    Capture d'écran du bouton SSH

  3. Une fois connecté, cliquez avec le bouton droit sur l'icône Powershell et sélectionnez Exécuter en tant qu'administrateur.

    Capture d'écran de l'icône Powershell

  4. Lorsque l'invite de commande est chargée, exécutez la commande suivante pour afficher la configuration NTP actuelle :

    PS C:\Windows\system32>w32tm /query /configuration
    [Configuration]
    ...
    Type: NTP (Local)
    NtpServer: metadata.google.internal,
    ...
    

    Si un enregistrement unique pointe vers metadata.google ou metadata.google.internal, vous n'avez pas besoin d'apporter de modifications. Si vous voyez plusieurs sources mélangées entre metadata.google et une source publique, vous devez supprimer le serveur externe. Suivez les instructions dans le guide de Windows pour configurer votre serveur NTP.

La fonctionnalité de lissage de saut de seconde caractéristique des serveurs NTP de Google est un moyen pratique de gérer le risque en ajoutant une seconde au niveau des systèmes sensibles aux variations d'horloge. D'autres services NTP peuvent fournir une solution acceptable pour la plupart des systèmes logiciels. Il est tout simplement important de ne pas mélanger les services NTP de lissage de saut de seconde de Google avec les services d'ajout ou de retrait de secondes des protocoles NTP publics.

Pour synchroniser les périphériques à l'extérieur de Google Cloud avec le temps lissé, utilisez Google Public NTP. Ce service exploite le même dispositif de lissage fourni aux instances de machine virtuelle Compute Engine.

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Documentation Compute Engine