serveurs:installation:bkp-srv:creation-instance

Ceci est une ancienne révision du document !


Création instance de sauvegarde

Nous décrivons ci-dessous comment créer l'instance "bkp-srv" depuis l'instance "web-srv" :

  • Créer une instance "bkp" dans un datacentre distinct de celui des instances "web-srv" et "db-srv".
  • Copier le snapshot de l'instance "web-srv" vers l'instance "bkp-srv"
  • Recréer l'instance "bkp-srv" avec le snapshot de "web-srv"
  • Modifier les configs sur l'instance "bkp-srv" : ip, hostname…

Le transfert d'une sauvegarde d'un datacentre à un autre nécessite l'utilisation de fonctionnalité d'OpenStack non accessible directement depuis le manager d'OVH. Afin de pouvoir accéder à ces fonctionnalités, il est nécessaire d'instance les utilitaires Glance, Nova et OpenStack. Ces outils vont nous permettre de manipuler les instances, les volumes et les images (sauvegardes). Ils peuvent être installé sur une machine locale ou sur une instance selon les besoins.

Commencer par mettre en place l'environnement sur votre machine locale dont la clé SSH est autorisée sur les différentes instance du projet Public Cloud :

  • Installer les outils : aptitude install python3-openstackclient python3-novaclient -y
    • Vérifier la bonne installation des outils : openstack --help , nova help et glance help
  • Installer l'autocomplétion sous Bash de ces outils :
    • Pour OpenStack : openstack complete | sudo tee /etc/bash_completion.d/osc.bash_completion > /dev/null
    • Pour Nova : sudo wget https://raw.githubusercontent.com/openstack/python-novaclient/master/tools/nova.bash_completion -O /etc/bash_completion.d/nova.bash_completion
    • Pour Glance : sudo wget https://raw.githubusercontent.com/openstack/python-glanceclient/master/tools/glance.bash_completion -O /etc/bash_completion.d/glance.bash_completion
    • Ré-ouvrir un terminal pour activer l'auto-complétion
  • Si ce n'est pas déjà fait, créer un utilisateur OpenStack (de type Administrateur) en suivant ce guide : OVH - Créer un utilisateur OpenStack
  • Récupérer ensuite le fichier openrc.sh correspondant à cet utilisateur comme indiqué dans ce guide : OVH - Charger les variables d'environnement OpenStack
  • Stocker le fichier openrc.sh téléchargé dans un dossier local au format suivant : ~/<mon-dossier-de-stockage>/ovh-openstack/sinp-<region>-<abréviation-datacentre>/
    • Ex. : ~/Applications/ovh-openstack/sinp-paca-GRA7/
  • Placer vous dans ce dossier : cd ~/<mon-dossier-de-stockage>/ovh-openstack/sinp-<region>-<abréviation-datacentre>/
  • Charger les variables du fichier openrc.sh dans l'environnement local (ATTENTION : à faire à chaque fois avant l'utilisation des utilitaires) : source ./openrc.sh

Pour télécharger localement une sauvegarde d'instance :

  • Commencer par lister les images (dont les sauvegardes) pour accéder aux ID des images : glance image-list
  • Les sauvegardes auto des instances ont toutes le même nom (Ex. : web-srv_22h-06h_r7). Vous pouvez voir le détail et donc la date de la sauvegarde avec la commande : glance image-show --human-readable <image-ID>
    • Pour voir uniquement les dates : glance image-show <image-ID> | grep -P "(?:created_at|updated_at)"
    • Pour voir uniquement la taille du fichier à télécharger : glance image-show --human-readable <image-ID> | grep "size"
  • Vous pouvez ensuite télécharger localement dans le dossier courant une image avec la commande : glance image-download <image-ID> --progress --file ./<mon-fichier-de-sauvegarde-web-srv>.qcow2

Pour transférer une sauvegarde d'instance d'un datacentre à un autre dans le même projet Public Cloude (ce qui est notre cas) :

  • Lister les images pour pouvoir récupérer l'ID de la dernière sauvegarde de l'instance web-srv (possible aussi avec Glance) : openstack image list
  • Télécharger localement l'image (avec Glance ou comme ici avec OpenStack) : openstack image save --file <mon-fichier-de-sauvegarde-web-srv>.qcow <image-ID>
    • Si le message "Processus arrêté" survient, vérifier que "openstack" ne sature pas la mémoire du serveur. Si c'est le cas, essayer avec la commande Glance.
  • Créer un nouveau dossier local qui hébergera le fichier openrc.sh modifié avec la région du datacentre vers lequel vous souhaitez uploader votre sauvegarde d'instance : ~/<mon-dossier-de-stockage>/ovh-openstack/sinp-<region>-<abréviation-datacentre>/
    • Ex. : ~/Applications/ovh-openstack/sinp-paca-UK1/
  • Copier le fichier openrc.sh configurer pour l'accès au datacentre principal vers le nouveau dossier. Ex. : cp ~/Applications/ovh-openstack/sinp-paca-GRA7/openrc.sh ~/Applications/ovh-openstack/sinp-paca-UK1/openrc.sh
  • Éditer le fichier openrc.sh copié pour modifier le paramètre OS_REGION_NAME. Ex. : vi ~/Applications/ovh-openstack/sinp-paca-UK1/openrc.sh
    • Remplacer l'abréviation du datacentre principal par celle du datacentre secondaire qui hébergera "bkp-srv". Ex. : GRA7 par UK1
  • Ouvrir un nouveau terminal et se placer dans le dossier du datacentre secondaire. Ex. : cd ~/Applications/ovh-openstack/sinp-paca-UK1/openrc.sh
  • Recharger les variable d'environnement OpenStack du datacentre secondaire. Ex. : source ~/Applications/ovh-openstack/sinp-paca-UK1/openrc.sh
  • Uploader la sauvegarde de "web-srv" télécharger précédemment vers le datacentre secondaire : openstack image create --disk-format qcow2 --container-format bare --file ~/<mon-dossier-de-stockage>/ovh-openstack/sinp-<region>-<abréviation-datacentre-principal>/<mon-fichier-de-sauvegarde-web-srv>.qcow <nom-image-web-srv>
    • Ex. : openstack image create --disk-format qcow2 --container-format bare --file ~/Applications/ovh-openstack/sinp-paca-GRA7/2021-03-29_web-srv.qcow2 copy_web-srv_for_bkp-srv
    • L'upload est visible dans le Manager d'OVH : Public Cloud > Projet SINP > Storage > Instance backups

Il n'est pas possible de télécharger directement un volume (bootable ou pas). Il est nécessaire de créer une image à partir du snapshot du volume pour ensuite télécharger localement l'image :

  • Voir la liste des volumes : openstack volume list
  • Voir le détail d'un volume : openstack volume show <volume-id>
  • Créer une image à partir du volume : openstack image create --volume <nom-volume> <nom-image>
    • Ex. : openstack image create --volume db-storage 2021-03-26_db-storage_before_deleting
  • Vérifier le statut d'avancement de la création de l'image avec : openstack image list | grep "<nom-image>"
    • Ex. : openstack image list | grep "2021-03-26_db-storage_before_deleting"
  • Une fois le statut active atteint, l'image est téléchargeable localement avec : openstack image save --file ./<nom-image-locale>.raw <image-ID>

Il faut uploader l'image locale du volume puis la transformer en volume sur le datacentre choisi :

  • Se placer dans le dossier contenant le fichier openrc.sh correspondant au datacentre sur lequel vous souhaitez uploader le volume : cd
  • Charger les variables d'environnement correspondant au datacentre choisi : source openrc.sh
  • Uploader l'image du volume précédement téléchargée : openstack image create --container-format bare --disk-format qcow2 --file <nom-fichier-image-local> <nom-image>
  • Récupérer l'ID de l'image <nom-image> que vous venez d'uploader sur le datacentre : openstack image list
  • Créer maintenant le volume à partir de l'image en indiquant son ID (<image-ID>), sa taille en Giga-Octets ( <taille-en-Go>) et le nom du volume que vous souhaitez créeer (<volume-nom>) : openstack volume create --image <image-ID> --size <taill-en-Go> <volume-nom>

Pour réaliser cette opération, il est nécessaire de passer par l'API OVH v6. Cette API peut s'utiliser via l'interface web disponible :

  • Se rendre sur l'interface web de l'API : https://api.ovh.com/console
  • Cliquer en haut à droit sur "login" pour se connecter avec son utilisateur OVH permettant d'accèder au projet Public Cloud concernant dans le Manager OVH.
  • Ouvrir le web service : GET /cloud/project/{serviceName}/network/private
    • Indiquer l'identifiant du projet Public Cloud dans le champ "serviceName" (à récupérer sous le nom du projet Public Cloud en haut à gauche dans l'interface du Manager d'OVH).
    • Cliquer sur le bouton "Execute"
    • Récupérer l'identifiant (propriété "id") du VLAN. Format : pn-10xxxxx_0
    • La propriété "régions" devrait à ce stade n'indiquer que "GRA7"
  • Ouvrir maintenant le web service : POST /cloud/project/{serviceName}/network/private/{networkId}/region
    • Remplir le champ "serviceName" comme prédément
    • Remplir le champ "networkId" avec l'identifiant du VLAN récupéré précédement.
    • Remplir le champ "ProjectNetworkPrivateRegionCreation" > "region" avec le code du datacentre où l'on veut pouvoir accéder à ce VLAN. Dans notre cas : UK1
    • Cliquer sur le bouton "Execute"
  • Ré-ouvrir le web service : GET /cloud/project/{serviceName}/network/private
    • Cliquer à nouveau sur le bouton "Execute"
    • Vérifier que la nouvelle région, dans notre cas UK1, apparait bien dans la liste.
  • Pour rendre visible ce réseau sur le nouveau Datacentre dans l'interface du Manager d'OVH, il peut être nécessaire de se déconnecter et se connecter à nouveau.
  • Notes : la création de l'instance en l'associant directement à ce réseau n'a pas fonctionnée. Erreur obtenue : Network … : requires a subnet in order to boot instances on.. L'instance a été créé sans réseau lié. Utilisaton d'OpenStack Horizon pour associer le réseau à l'instance.

Lorsque le VLAN existant est étendu au nouveau datacentre, ce dernier ne possède pas de sous-réseau. Il faut donc lui associer le même sous-réseau que celui présent dans le datacentre principal. Pour réaliser cela nous passons par la ligne de commande :

  • Se connecter sur le datacentre secondaire ou se trouve "bkp-srv" : cd sinp-aura-UK1 ; source openrc.sh
  • Récupérer depuis l'interface d'Horizon sur le datacentre principal : le nom du réseau (Ex. sinp-aura-vpn ), le nom du sous-réseau (Ex. : (d977881c-84cc) ) et le rang d'IPs du sous-réseau (Ex. 10.0.0.0/16).
  • Créer le sous-réseau : openstack subnet create --network "<nom-reseau>" --subnet-range "<rang-ip-sous-réseau>" "<nom-sous-reseau>"
    • Ex. : openstack subnet create --network "sinp-aura-vpn" --subnet-range "10.0.0.0/16" "(d977881c-84cc)"
  • Il semble aussi nécessaire de modifier le sous-réseau des 2 datacentres pour utiliser la même IP dans le champ Gateway. Par exemple : 10.0.0.1
    • Les 2 sous-réseaux devraient aussi avoir : le même nom et le même ensemble d'IP.
  • Attacher ensuite le réseau sur une instance (voir ci-dessous) puis tester la connectivité entre les différentes instances : ping 10.0.1.20 et ping 10.0.1.10

Lors de la création de la nouvelle instance :

  • Lors du choix de l'image à utiliser pour la création, sélectionner la sauvegarde préalablement créé. Dans notre cas : copy_web-srv_for_bkp-srv
  • Le choix du réseau VPN ne semble pas fonctionner, il est possible de l'attacher ensuite via l'interface d'Horizon

Après la création de la nouvelle instance dans le Manager d'OVH, il est nécessaire de :

  • Modifier le fichier hostname : vi /etc/hostname
    • Remplacer le nom de l'hôte précédent (ex. : web-aura-sinp) par le nouveau : bkp-<region>-sinp
  • Modifier le fichier hosts : vi /etc/hosts
  • Modifier la config de l'interface correspondant au réseau privé, généralement ens4 (anciennement eth1) dans le fichier /etc/network/interfaces.d/50-cloud-init :
  • Redémarrer l'instance : reboot
  • Modifier la configuration de FirewallD:
    • Ajouter le port SSH spécifique à "bkp-srv" :
      • sur la zone "public" : firewall-cmd --zone=public --permanent --add-port=<port-ssh-bkp>/tcp
      • sur la zone "internal" : firewall-cmd --zone=internal --permanent --add-port=<port-ssh-bkp>/tcp
    • Ajouter les ports pour InfluxDB :
      • firewall-cmd --zone=internal --permanent --add-port=8086/tcp
      • firewall-cmd --zone=internal --permanent --add-port=8089/udp
    • Enregistrer les changements : firewall-cmd –reload
  • Modifier le port SSH en suivant les indications présente sur la page indiquant comment configurer SSH sur le serveur et localement.
  • Supprimer le port SSH de l'instance "web-srv" la configuration de FirewallD de "bkp-srv" :
    • sur la zone "public" : firewall-cmd --zone=public --permanent --remove-port=<port-ssh-web>/tcp
    • sur la zone "internal" : firewall-cmd --zone=internal --permanent --remove-port=<port-ssh-web>/tcp
    • Enregistrer les changements : firewall-cmd –reload
  • Modifier les références au nom de l'hôte dans le fichier de config de Postfix /etc/postfix/main.cf et dans le fichier /etc/mailname. Voir la doc sur la config de Postfix.
  • Mettre en place une sauvegarde automatique de l'instance "bkp-srv" via l'interface du Manager d'OVH comme indiqué dans la documentation suivante.
  • Modifier le mot de passe de l'utilisateur root (et le stocker dans Keepass) : passwd
  • Modifier le mot de passe de l'utilisateur geonat (et le stocker dans Keepass) : passwd geonat

Vérifications :

  • Vérifier la présence de l'IP privée 10.0.1.30 sur l'interface eth1 : ip a
  • Si l'IP n'apparait pas, il peut être nécessaire de démarrer l'interface : ifup eth1
  • Vérifier la connectivité entre les différentes instances sur le réseau privé. Ex. : ping 10.0.1.20
  • serveurs/installation/bkp-srv/creation-instance.1653040341.txt.gz
  • Dernière modification : 2022/05/20 09:52
  • de jpmilcent