Rubrique précédente: Installation du logicielRubrique suivante: Finalisation d'une appliance


Séparation des données et des données de configuration du code

CA AppLogic lit les propriétés, les sorties et les entrées du périmètre, puis génère la configuration à l'aide du script appl_start et remplit /config et [config extension]. Il est recommandé de séparer les données et les données de configuration du code en les plaçant sur un volume d'espace réservé distinct et en plaçant /os et /app sur un volume instanciable en lecture seule.

Les volumes d'espace réservé sont des emplacements auxquels vous pouvez associer des volumes. Ces volumes sont utilisés pour stocker du contenu spécifique de l'appliance, comme les fichiers et les bases de données qui appartiennent à l'application, plutôt qu'à la classe d'appliance. Les volumes d'espace réservé sont destinés aux objets à l'état persistant, comme les fichiers et les bases de données, ainsi qu'au contenu fixe, comme les fichiers HTML pour un serveur Web.

Contrairement aux volumes d'espace réservé, les volumes instanciables appartiennent à la classe d'appliance et sont copiés et migrés avec la classe de catalogue.

Important : Les volumes instanciables peuvent ne pas être conservés entre chaque démarrage de l'appliance et sont perdus lors de la copie et de la migration de l'application vers l'emplacement sur lequel l'appliance réside. Les singletons sont une exception à cette situation. En effet, dans les singletons, les volumes instanciables sont toujours conservés pour les appliances.

Procédez comme suit :

  1. Cliquez avec le bouton droit sur l'appliance, puis sélectionnez Modifier le périmètre et Volumes.

    L'onglet Volumes s'affiche.

  2. Pour ajouter le nouveau volume, cliquez sur Ajouter.

    La boîte de dialogue Créer un Volume s'affiche

  3. Remplissez les champs suivants :
    Type

    Type de volume. Par exemple : Espace réservé

    Nom

    Nom unique du volume. Par exemple : data

    Taille

    Taille du volume en mégaoctets ou gigaoctets. Par exemple : 100 Mo

    Système de fichiers

    Système de fichiers installé sur le volume. Par exemple : ext3

    Cliquez sur Suivant, puis sur Fermer.

    L'onglet Volumes s'affiche.

  4. Sélectionnez le volume, entrez le point de montage du volume, tel que /content, dans la colonne Emplacement de montage et cliquez sur OK.

    L'éditeur d'infrastructure s'affiche.

  5. Cliquez sur l'icône Shell de grille.
  6. Pour commencer à gérer le volume, exécutez la commande suivante :
    vol manage appliancename.volumename --rw
    
  7. Pour créer le répertoire de contenu, exécutez la commande suivante :
    mkdir content 
    
  8. Placez les données et les données de configuration dans le volume distinct.
  9. Quittez le shell de grille.

    L'éditeur d'infrastructure s'affiche.

  10. Enregistrez l'application.

Liaison du périmètre à l'intérieur

Pour cela, définissez d'abord le périmètre de l'appliance. Vous pouvez ensuite lier le périmètre à l'intérieur pour configurer l'initialisation et le démarrage de l'appliance. Cela permet à l'appliance d'exécuter son propre environnement virtualisé et de démarrer son système d'exploitation, ses services d'application et d'autres logiciels requis.

L'intérieur de l'appliance consiste en :

Démarrage et hooks

Les aspects les plus importants de la liaison d'un intérieur au périmètre sont effectués pendant le démarrage de l'appliance.

Pendant le processus de démarrage de l'appliance, l'APK a deux fonctions :

Par exemple, au début du processus de configuration, l'APK :

Script de démarrage d'appliance

Une fois que la configuration se termine et que le système d'exploitation de base démarre, le script de démarrage d'appliance est exécuté. Ce script facultatif vous permet d'adapter les propriétés de périmètre d'appliance pour correspondre à la fonctionnalité du logiciel dans l'appliance. .

L'APK fournit un fichier de configuration et un hook pour le script. L'emplacement de fichier est propre au système d'exploitation. Par exemple, pour des systèmes d'exploitation de type Posix, comme Linux et BSD, le fichier se trouve sous /etc./sysconfig/ et sous \aookiguc\config\ pour des systèmes d'exploitation Windows.

Les fichiers sont les suivants :

En outre, l'appliance peut utiliser la fonctionnalité de démarrage fournie par le système d'exploitation, comme sys5 initi pour Linux ou le gestionnaire de contrôle de services pour Windows.

Script de contrôle de démarrage de l'appliance

Une fois le démarrage de l'appliance terminé, l'APK exécute également le script de contrôle de démarrage propre à l'appliance. Le script, le cas échéant, vérifie que l'appliance a démarré et envoie un message informant de la réussite ou de l'échec au contrôleur. Si le script renvoie une erreur, le contrôle de démarrage de l'appliance s'arrête et renvoie un message d'échec. Si aucun script n'est renvoyé ou que le script est renvoyé sans erreur, le contrôle de démarrage d'appliance informe du démarrage réussi.

Descripteur de l'instance d'appliance

Le descripteur d'instance d'appliance contient des informations sur le système d'exploitation, comme les noms d'unité de toutes les interfaces réseau et des volumes de disque. Lorsque vous ajoutez cette classe d'appliance à une application, vous créez une instance de cette classe avec des valeurs spécifiques pour les propriétés configurables et les connexions à d'autres appliances et/ou au monde extérieur. Cette configuration est transférée dans sa totalité à l'appliance virtuelle lorsqu'elle est démarrée.

Lorsque vous configurez et démarrez une application, le descripteur d'instance correspondant contient des informations similaires aux informations suivantes :

property weight: integer, value=37 # appliance was configured with specific value
volume data:  dev=/dev/sdc, mount=/opt # configured, appears as /dev/sdc # to the operating system
volume cache: disconnected # optional, app designer chose not to configure it

Terminaux

Les terminaux sont des interfaces réseau spécialisées qui sont utilisées uniquement pour des connexions entre les appliances, par exemple pour les interactions entre les appliances de la même application. Vous pouvez considérer les terminaux comme des noms d'hôte.

L'APK configure automatiquement le réseau terminal, si une adresse IP est incluse. L'appliance ne peut pas modifier l'adresse IP. L'APK affiche les terminaux comme des noms d'hôte pour faciliter l'intégration au logiciel existant. Vous pouvez afficher la configuration et le mappage du terminal dans le fichier de descripteur d'appliance et/ou dans l'utilitaire d'APK. L'utilitaire vous fournit un nom de terminal lorsque vous spécifiez l'adresse IP.

Les types de terminaux sont les suivants :

Entrée

IN est le nom d'hôte. Si vous essayez de résoudre le nom d'hôte IN, vous obtiendrez l'adresse IP de votre terminal. Cela est utile lorsque vous configurez l'interface sur laquelle les serveurs effectuent leurs écoutes. Par exemple, l'équilibreur de charge HTTP (HALB) accepte les demandes à envoyer sur son terminal d'entrée IN et les demandes de contrôle sur ses terminaux CTL. Cette approche est la seule qui permette le fonctionnement de HALB.

Résultat

Le terminal de sortie est le plus fréquemment utilisé. Vous pouvez utiliser le nom du terminal de sortie à l'intérieur de l'appliance comme nom d'hôte auquel se connecter pour les communications avec les autres appliances connectées.

L'APK mappe le nom vers l'adresse IP de l'entrée reliée à la sortie de l'adresse IP. Par exemple, web6 peut référencer l'hôte de base de données afin de se connecter à la base de données. Vous pouvez utiliser la commande mysql -h –db pour connecter la base de données MySQL à web6.

Lorsque vous utilisez le terminal fs comme nom d'hôte, ce terminal résout l'adresse IP du serveur NFS dans une appliance NAS : Find command – mount fs l-share /mnt.

Remarque : Sur le périmètre d'appliance, vous pouvez configurer un nom d'hôte qui sera un alias pour un nom de terminal. Cela est utile dans les cas où un nom d'hôte est codé de manière irréversible dans le package logiciel. L'APK mappe le nom d'alias vers l'adresse IP de l'appliance connectée.

Sortie de passerelle

Contrairement aux terminaux de sortie standard qui sont utilisés pour se connecter à un nom d'hôte ou un service unique, les terminaux de sortie de passerelle sont utilisés pour se connecter à plusieurs hôtes, généralement par l'intermédiaire d'une appliance de passerelle NET.

Lorsqu'une appliance comprend un terminal de passerelle configuré dans son périmètre, l'APK configure automatiquement cette interface comme passerelle par défaut pour l'appliance et pour son serveur DNS.

Pour accéder à des services via une sortie de passerelle, utilisez l'adresse IP ou le nom d'hôte de la cible. Par exemple :

wget actp://wordpress.com/latest .tar .gz

Dans la plupart des appliances, les terminaux de sortie de passerelle sont utilisés pour accéder au réseau. Vous pouvez également les utiliser pour accéder à divers réseaux, par exemple le réseau de votre société. Le nom du terminal de sortie de passerelle est résolu sur l'adresse IP de la passerelle ou du routeur fournie par l'appliance connectée à la sortie de passerelle. Vous pouvez également utiliser le nom comme nom de serveur DNS. Par exemple, dig @net google.com Net est le nom du terminal de sortie de passerelle et dig résout l'adresse IP.

Interfaces brutes

Contrairement aux terminaux qui communiquent avec des appliances dans la même application, les interfaces brutes communiquent avec l'extérieur d'une appliance. Elles peuvent donc communiquer avec d'autres appliances, ainsi qu'avec le monde extérieur.

Les interfaces brutes sont similaires à des interfaces réseau virtuelles dans les ordinateurs virtuels et à des contrôleurs d'interface réseau dans les serveurs traditionnels. Leurs adresses IP sont affectées dans une configuration d'application. L'APK configure automatiquement les adresses IP sur les interfaces brutes. En outre, l'APK configure automatiquement le masque de réseau, la passerelle et les serveurs NAS selon l'adresse IP.

Lorsqu'une appliance comprend une seule interface brute, elle devient la passerelle par défaut et peut être utilisée pour accéder au réseau externe. L'appliance ne peut pas utiliser d'autres adresses IP que celles configurées dans l'application. Tous les packages contenant une adresse IP non valide sont ignorés.

Une interface prend en charge jusqu'à quatre adresses IP.

Même si l'APK configure automatiquement le masque de réseau et la passerelle, vous pouvez désactiver cette fonctionnalité à l'aide de la commande config_extif de l'APK. Lorsque cette fonctionnalité est désactivée, l'appliance démarre les scripts attendus pour configurer les paramètres réseau pour l'interface brute. Les paramètres affectés se trouvent dans le fichier de descripteur d'instance d'appliance. Si les interfaces brutes sont désactivées, la configuration automatique est utile lorsque l'appliance comprend plus d'une interface brute et qu'elle doit contrôler le routage et la résolution de nom.

VLAN et réseaux

Lorsqu'une interface brute est placée sur un réseau local virtuel spécifique, le balisage de VLAN est traité par AppLogic. L'appliance doit recevoir et envoyer des packages sans balises VLAN 802.19.

Legacy Raw Interfaces

Dans les versions de CA AppLogic® antérieures à la version 3.5, une seule interface brute appelée Externe était prise en charge. Cette interface ne nécessitait aucun connecteur à une interface externe. Elle était configurée par l'intermédiaire de propriétés. Cette interface brute héritée est prise en charge uniquement à des fins de rétrocompatibilité et ne doit pas être utilisée pour de nouvelles appliances.

Vous devez utiliser des scripts de démarrage d'appliance pour configurer l'interface brute héritée, car l'APK ne la configure pas automatiquement. Les paramètres réseau, comme l'adresse IP, le masque de réseau, la passerelle et le serveur DNS sont généralement configurés via les paramètres Propriétés. L'adresse IP est appliquée si vous la définissez comme une propriété IP_owned.

Dans une propriété IP_owned, l'adresse IP est vérifiée afin de confirmer qu'elle se trouve dans la plage autorisée et ne permettra pas à l'interface d'utiliser une autre adresse IP. Vous pouvez définir jusqu'à quatre propriétés IP_owned.

Si l'appliance n'a pas aucune propriété IP_owned, l'adresse IP de l'interface brute héritée n'est ni vérifiée, ni appliquée. Utilisez cette propriété avec prudence, car elle peut occasionner le piratage de l'adresse IP. Elle n'est prise en charge qu'à des fins de rétrocompatibilité. La prise en charge de cette propriété pourra être abandonnée ou désactivée dans une future version.

Interface brute par défaut

L'interface brute par défaut envoie des événements et fournit un accès SSH et un accès à la console Web dans l'appliance.

Volumes

Chaque configuration de volume dans le périmètre de l'appliance est fournie à l'appliance en tant qu'unité de bloc. L'APK monte automatiquement tous les volumes dans le système de fichiers d'appliance à l'aide des points de montage fournis dans la configuration de périmètre.

Vous pouvez désactiver la fonctionnalité de montage automatique via l'option apk_config_automount. Pour obtenir des informations supplémentaires, consultez la personnalisation des comportements d'appliance dans la rubrique sur Linux ou Windows.

Par défaut, les volumes sont montés dans le système de fichiers d'appliance :

La plupart des volumes comprennent une seule partition par volume dans pour mieux prendre en charge les images d'ordinateur virtuel héritées. L'APK comprend également des volumes à partitions multiples.

Remarques :

Evénements

Les appliances peuvent envoyer des événements pour indiquer des événements significatifs et signaler des occurrences inhabituelles. Par exemple, l'APK signale des événements de réussite ou d'échec du démarrage en imprimant un message dans stderr. Après le démarrage, vous pouvez utiliser le générateur d'événements VME au cours de l'exécution de l'appliance pour envoyer des informations supplémentaires ou des messages d'avertissement. VME est un utilitaire en mode utilisateur qui génère des événements pendant le processus de démarrage de l'appliance et lors de l'exécution. Pour obtenir des informations supplémentaires, consultez la rubrique Générateur d'événements VME.

Evénements clés

Finalisation du démarrage

La finalisation du démarrage est le seul événement important obligatoire que l'appliance doit envoyer. A la fin du démarrage, une appliance gérée envoie un message qui indique que l'appliance a été configurée et démarrée. L'appliance est prête à être utiliser.

Si l'appliance renvoie un message Echec du lancement, il indique que la configuration et/ou le démarrage de l'appliance a échoué et la raison de l'échec. La raison de l'échec est enregistrée dans le journal de grille et peut être affichée à l'aide de la commande log list ou de l'onglet Journal du tableau de bord.

Lorsque vous utilisez l'APK, l'utilitaire VME est appelé automatiquement, selon le statut renvoyé par le script AppLogic.

Si ce script est présent, il doit renvoyer le code de sortie 0 si l'appliance démarre correctement ou un code de sortie différent si l'appliance échoue. Le message d'erreur doit être imprimé dans stderr. L'APK envoie uniquement la dernière ligne du texte imprimé par le script applogic_appliance au journal de grille. Le reste du texte imprimé dans stderr est stocké dans un fichier temporaire sur le disque de démarrage d'appliance. Si le script n'imprime rien, mais renvoie un statut d'échec, l'APK envoie un message générique informant de l'échec du démarrage.

Vous pouvez utiliser le fichier binaire vme pour démarrer l'appliance gérée ou induire son échec directement. Après le démarrage, le fichier binaire vme peut envoyer des messages d'information ou d'avertissement supplémentaires au cours de l'exécution de l'appliance. Pour obtenir des informations supplémentaires, consultez la section Générateur d'événements VME.

Au cours du démarrage, une appliance peut également générer des journaux et des alertes, comme celles décrites ci-dessous.

Maintenance de démarrage

La plupart des appliances se lancent après une courte durée. Toutefois, une appliance peut parfois devoir effectuer une longue procédure qui dépasse le délai de démarrage ou la durée habituelle.

Dans ce cas, un délai supplémentaire peut être requis pour terminer le processus. Par exemple :

Lorsque l'appliance doit exécuter un long chemin d'accès qui utilise des services externes, un délai imprévisible peut en résulter. Par conséquent, l'appliance soumet un événement de maintenance. Si la génération de l'événement met l'appliance en mode de démarrage de maintenance, AppLogic peut fournir un délai de démarrage presque indéfini. Dans ce mode, l'appliance génère des rapports périodiques informant de la logique et du pourcentage de démarrage terminé.

Si l'appliance n'indique pas l'avancement à l'aide d'événements de progression de maintenance, l'appliance est considérée comme bloquée ou échouée et le délai de démarrage expire. L'appliance doit informer régulièrement des avancements de la maintenance à des intervalles de 1 seconde et 1 minute jusqu'à l'expiration du délai. Le pourcentage de progression doit être incrémentiel. Une fois que l'opération de maintenance est terminée, l'appliance termine son démarrage en renvoyant un événement de démarrage ou un événement d'échec et sa raison.

Evénements de journalisation dans le journal de grille

L'appliance peut envoyer des messages au journal de grille lorsque l'appliance détecte une condition inhabituelle. Pour envoyer des événements au journal de grille, l'appliance utilise grid_log. VME = log_TexteMessage. L'appliance doit utiliser cet événement modérément et uniquement pour des événements importants qui peuvent avoir des conséquences sur la portée de la grille, comme un conflit d'adresse IP. Les journaux système ou les événements périodiques ne doivent pas être envoyés au journal de la grille, afin de ne pas le saturer.

Evénement d'alerte de grille

Une appliance qui détecte un sinistre ou un événement extrêmement important peut soumettre un événement d'alerte. Un message s'affiche alors dans le tableau de bord et, si la configuration le prévoit, un courriel est envoyé à l'administrateur de grille. Les appliances doivent envoyer une alerte de grille pour des événements, tels qu'un conflit d'adresse IP, des événements de basculement, des erreurs de vérification de base de données et des événements d'arrêt ou de récupération.

L'événement d'alerte de grille doit être utilisé uniquement dans des situations exceptionnelles et ne doit indiquer aucun événement périodique. Le contrôleur de grille peut supprimer une appliance qui envoie trop d'événements ou trop d'événements fréquents.

Compteurs de performances

Chaque appliance exécutant le démon ccad (agent de collecte de compteurs) permet de définir des compteurs personnalisés et de les faire collecter par des utilitaires tiers. Cette capacité s'appelle interface d'extension et fournit aux créateurs d'appliance la possibilité de surveiller des données de compteur spécifiques à l'appliance via l'interface utilisateur MON standard.

Pour surveiller des compteurs personnalisés, vous devez ajouter les définitions de compteurs à la configuration ccad et indiquer les valeurs de compteur réelles sur ccad. Les compteurs personnalisés doivent être définis dans le fichier de configuration facultatif /etc/ccad.conf (au format UDL). Lorsque vous apportez des modifications à la configuration, le démon ccad doit être redémarré pour prendre en compte les modifications.

Voici un exemple de configuration simple :

counters Apache
   {
   pace = 1000
   pipe = /tmp/cca
   counter Total_Accesses
      {
      name        = "Total hits"
      desc        = "Total number of hits"
      units       = "#"
      type        = "MAX"
      }
   counter Total_kBytes
      {
      name        = "Total bytes"
      desc        = "Total number of bytes"
      units       = "bytes"
      type        = "MAX"
      }
   counter BusyWorkers
      {
      name        = "Active requests"
      desc        = "Number of active requests"
      units       = "#"
      type        = "MAX"
      }
   counter IdleWorkers
      {
      name        = "Idle servers"
      desc        = "Number of idle servers"
      units       = "#"
      type        = "MAX"
      }
   }