![]() | |
Sun Java System Application Server Enterprise Edition 8.1 2005Q1 |
Configuration du basculement haute disponibilité
Avec la configuration utilisée dans le chapitre précédent, en cas de défaillance d'une instance de serveur, les utilisateurs perdent l'état de la session. Cette section, la seconde de deux rubriques avancées, fournit la procédure à suivre pour installer la base de données haute disponibilité (HADB, high-availability database), créer un cluster haute disponibilité et tester la persistance de session HTTP.
Application Server prend en charge à la fois la persistance de session HTTP et la persistance pour les beans de session avec état. Les procédures décrites dans le présent chapitre couvrent la persistance de session HTTP.
Elles supposent que vous avez déjà effectué les procédures décrites dans les sections précédentes du présent Guide de démarrage rapide. Ces étapes sont décrites dans l’ordre où elles doivent être exécutées.
Remarque
Des ressources matérielles supplémentaires peuvent s'avérer nécessaires pour réaliser les procédures décrites dans cette section.
À propos des clusters haute disponibilité et de HADBDans Sun Java System Application Server Enterprise Edition, un cluster haute disponibilité intègre un service de réplication de l'état qui, allié aux clusters et à l'équilibreur de charge créés précédemment, permet le basculement des sessions HTTP.
Les objets HttpSession et l'état des beans de session avec état sont enregistrés dans la base HADB, base de données haute disponibilité permettant de stocker l'état des sessions. Ce service de gestion de l'état à évolutivité horizontale peut être géré indépendamment du niveau serveur d'applications. Il a été conçu pour prendre en charge une disponibilité à 99,999 % des services et des données grâce à des fonctions d'équilibrage de la charge, de basculement et de reprise de l'état.
L'indépendance des fonctions de gestion de l'état par rapport à Application Server offre des avantages significatifs. Alors que les instances d'Application Server s'exécutent lors de leurs cycles comme une plate-forme Java 2 haute performance évolutive, les conteneurs Enterprise Edition (plate-forme J2EE) délèguent la réplication de l'état à un service de gestion de l'état haute disponibilité externe. Grâce à cette architecture faiblement couplée, des instances du serveur d'applications peuvent être facilement ajoutées ou supprimées d'un cluster. Le service de réplication de l'état HADB peut être redimensionné de manière indépendante pour optimiser la disponibilité et la performance. Lorsqu'une instance du serveur d'applications exécute également une réplication, la performance des applications J2EE peut être affectée en particulier par des arrêts plus longs dus aux cycles Garbage collection.
Chaque nud HADB nécessitant 512 Mo de mémoire, vous devez disposer de 1 Go de mémoire pour exécuter deux nuds HADB sur la même machine. Si vous disposez de moins de mémoire, définissez chaque nud sur une machine différente. Il est déconseillé d'exécuter une base de données à deux nuds sur un seul hôte pour le déploiement car celui-n'est pas à tolérance de pannes.
Procédure de préinstallation de la base HADBCette procédure couvre les étapes de préinstallation les plus courantes. Pour plus d'informations sur d'autres aspects de la préinstallation, notamment les conditions préalables exigées pour l'installation de la base HADB, la configuration de la redondance du réseau et la prise en charge des systèmes de fichiers, consultez le manuel High Availability Administration Guide.
- Obtenez un accès root.
- Définissez les variables associées à la mémoire partagée.
Sous Solaris :
- Ajoutez les lignes suivantes au fichier /etc/system (ou si ces lignes figurent dans le fichier en commentaires, annulez leur mise en commentaire et vérifiez que les valeurs indiquées sont identiques à celles figurant ci-dessous ) :
set shmsys:shminfo_shmmax=0x80000000
set shmsys:shminfo_shmseg=20
set semsys:seminfo_semmni=16
set semsys:seminfo_semmns=128
set semsys:seminfo_semmnu=1000
Définissez shminfo_shmmax sur la mémoire totale de votre système (en notation hexadécimale, la valeur 0x80000000 indiquée correspond à 2 giga-octets de mémoire).
Si les variables seminfo_* sont déjà définies, incrémentez-les des montants indiqués.
- Redémarrez le système à l'aide de la commande suivante :
sync; sync; reboot
Sous Linux :
- Ajoutez les lignes suivantes au fichier /etc/sysctl.conf (ou si ces lignes figurent en commentaires dans le fichier, annulez leur mise en commentaire). Indiquez la valeur correspondant à la quantité de mémoire physique de la machine, sous la forme d'un nombre décimal d'octets. Par exemple, pour une machine dotée de 512 Moctets de mémoire physique :
kernel.shmmax=536870912
kernel.shmall=536870912
- Redémarrez le système à l'aide de la commande suivante :
sync; sync; reboot
- Si vous avez utilisé un logiciel JDK existant pour l'installation d'un logiciel Application Server autonome, HADB requiert Sun JDK 1.4.1_03 ou version ultérieure (pour consulter les dernières informations relatives aux versions de JDK, reportez-vous aux Notes de version). Vérifiez la version installée, puis, si ce n'est pas déjà fait, définissez la variable d'environnement JAVA_HOME sur le répertoire d'installation du JDK.
- Si nécessaire, après avoir redémarré le système, redémarrez le domaine, Web Server et l'agent de nud.
Pour redémarrer le domaine, utilisez la commande asadmin start-domain domain1.
Pour redémarrer Web Server, utilisez la commande rép_install_web_server/https-nom_hôte/start.
Pour redémarrer l'agent de nud, utilisez la commande asadmin start-node-agent nom_hôte. Remplacez la variable nom_hôte par le nom de l’hôte sur lequel fonctionne Application Server.
Installation de la base HADBCette section fournit la procédure d'installation de la base de données haute disponibilité (HADB).
Remarque
Si vous prévoyez d'exécuter la base de données haute disponibilité sur la machine Application Server, et que vous avez installé HADB avant d'installer Application Server, passez directement à l'étape Démarrage de la base HADB.
Vous pouvez installer le composant HADB sur la même machine que votre système Application Server si vous disposez de 2 Goctets de mémoire et de 1 à 2 CPU. Si ce n'est pas le cas, installez du matériel supplémentaire. Par exemple :
Pour installer la base HADB :
Démarrage de la base HADBCette section décrit le démarrage de l'agent de gestion HADB à l'aide du script ma-initd. Pour un déploiement de production, démarrez l'agent de gestion en tant que service afin de garantir sa disponibilité. Pour plus d'informations, reportez-vous au manuel High Availability Administration Guide.
Pour démarrer une base de données avec des nuds HADB sur plusieurs hôtes, démarrez l'agent de gestion sur chaque hôte.
Dans une installation Java Enterprise System :
Dans une installation Application Server autonome :
Configuration d'un cluster et d'une application pour la haute disponibilité
- À partir de la machine sur laquelle le serveur d'administration du domaine est exécuté, configurez FirstCluster pour l'utilisation de HADB à l'aide de la commande suivante :
asadmin configure-ha-cluster --hosts nomhôte_hadb,nomhôte_hadb --devicesize 256 FirstCluster
Remplacez nomhôte_hadb par le nom d'hôte de la machine sur laquelle doit s'exécuter la base HADB. Si vous utilisez une seule machine, vous devez la nommer deux fois.
Dans cet exemple simplifié, deux nuds de la base HADB sont exécutés sur la même machine. Pour les paramètres de production, utilisez plusieurs machines.
Remarque
Pour réduire l'encombrement en mémoire de la base HADB à des fins de démonstration, exécutez la commande hadbm suivante. Vous êtes invité à entrer le mot de passe d'administration.
- Configurez l'application clusterjsp pour la persistance de session HTTP en activant la haute disponibilité :
- Sur la console d'administration, développez le nud Applications.
- Développez Applications Entreprise.
- Cliquez sur clusterjsp.
- Dans le volet de droite, sur l'onglet Général, cliquez sur la case à cocher Disponibilité activée.
- Cliquez sur Enregistrer.
La disponibilité est activée par défaut au niveau de l'instance de serveur et du conteneur.
Redémarrage du clusterPour redémarrer le cluster :
Vérification du basculement des sessions HTTPLa procédure utilisée pour tester la récupération des données de session est similaire à celle utilisée pour vérifier l'équilibrage de la charge, décrite dans la rubrique Vérification de l’équilibrage de charge. Cette fois, les données de session sont conservées après toute défaillance. Le basculement est transparent pour l'utilisateur car cet exemple d'application est configuré pour la tentative automatique de reprise en cas de panne.
- Pour afficher la première page de l’application clusterjsp, tapez l’URL suivante dans votre navigateur :
http://hôtelocal:port_web_server/clusterjsp
Remplacez la variable hôtelocal par le nom du système sur lequel Web Server est exécuté.
Remplacez la variable port_web_server par la valeur de l’attribut de port de l’élément LS dans rép_install_web_server/https-nom_hôte/config/server.xml. Pour cet exemple, le port 38000 est utilisé.
Une page comparable à celle figurant dans la section Vérification de l’application clusterisée apparaît.
- Examinez les informations d’hôte et de session affichées. Par exemple :
- Exécuté à partir du serveur : hôtelocal
- Numéro de port du serveur : 38000
- Adresse IP du serveur exécuté : 192.18.145.133
- ID de session : 41880f618e4593e14fb5d0ac434b1
- Session créée le : Wed Feb 23 15:23:18 PST 2005
Affichez les fichiers journaux des accès au serveur pour déterminer l'instance du serveur d'applications qui traite l'application. Les fichiers journaux se trouvent à cet emplacement :
- Installation Solaris Java Enterprise System :
/var/opt/SUNWappserver/nodeagents/nom_agent_nud/i1/logs/access/server_access_log
/var/opt/SUNWappserver/nodeagents/nom_agent_nud/i2/logs/access/server_access_log- Installation Linux Java Enterprise System :
/var/opt/sun/appserver/nodeagents/nom_agent_nud/i1/logs/access/server_access_log
/var/opt/sun/appserver/nodeagents/nom_agent_nud/i2/logs/access/server_access_log- Installations Application Server autonomes :
rép_install/nodeagents/nom_agent_noeud/i1/logs/access/server_access_log
rép_install/nodeagents/nom_agent_nud/i2/logs/access/server_access_log- Arrêtez l'instance d'Application Server qui traite la page.
- Rechargez la page de l'exemple d'application clusterjsp.
L'ID de session et les données d'attributs de session sont conservées.
- Vérifiez le journal des accès de l'autre instance Application Server, et remarquez qu'elle traite actuellement la requête.
Les fonctions de reprise de l'état fonctionnent car la session HTTP est stockée de manière persistante dans la base HADB. Outre l'état de la session HTTP, le serveur Application Server peut également stocker l'état du bean enterprise EJB dans la base HADB.
NettoyagePour procéder au nettoyage, vous pouvez désinstaller Application Server en suivant les étapes de la section Option 1 : désinstallation globale, ou vous pouvez tout simplement supprimer l’exemple de cluster que vous venez de créer en suivant les étapes de la section Option 2: suppression de l’exemple de cluster.
Option 1 : désinstallation globale
Pour désinstaller complètement l’application :
- Arrêtez les processus Application Server à l’aide des commandes suivantes :
asadmin stop-cluster FirstCluster
asadmin remove-ha-cluster --hosts nomhôte_hadb,nomhôte-hadb FirstCluster
Remplacez nomhôte_hadb par le nom d'hôte de la machine sur laquelle doit s'exécuter la base HADB. Si vous utilisez une seule machine, vous devez la nommer deux fois.
asadmin stop-node-agent hostname
asadmin stop-domain domain1
- Arrêtez l'agent de gestion HADB à l'aide de l'une des méthodes suivantes :
Dans une installation Java Enterprise System :
- Placez-vous dans le répertoire /etc/init.d :
cd /etc/init.d
- Exécutez la commande suivante pour arrêter l'agent :
./ma-initd stop
Dans une installation Application Server autonome :
- Placez-vous dans le répertoire bin de la base HADB de l'installation d'Application Server :
cd rép_install/hadb/4/bin
- Exécutez la commande suivante pour arrêter l'agent :
./ma-initd stop
À ce stade, tous les processus liés à Sun Java System Application Server sont arrêtés.
- Désinstallez Application Server.
Dans une installation Java Enterprise System, exécutez var/sadm/prod/entsys/uninstall, puis effectuez la procédure indiquée dans l'Assistant de désinstallation.
Dans une installation Application Server autonome, exécutez rép_install/uninstall, puis effectuez la procédure indiquée dans l'Assistant de désinstallation.
- Si vous avez créé une nouvelle instance de Web Server pour cet exercice, supprimez-la :
- Pour désinstaller le produit Web Server, exécutez le programme de désinstallation à partir de rép_install_web_server.
Option 2: suppression de l’exemple de cluster
Pour supprimer uniquement FirstCluster (l’exemple de cluster haute disponibilité) et l’exemple d’application utilisé dans cet exercice :
- Arrêtez les processus Application Server et effacez la configuration :
asadmin stop-cluster FirstCluster
asadmin remove-ha-cluster --hosts nomhôte_hadb,nomhôte-hadb FirstCluster
Remplacez nomhôte_hadb par le nom d'hôte de la machine sur laquelle doit s'exécuter la base HADB. Si vous utilisez une seule machine, vous devez la nommer deux fois.
asadmin disable-http-lb-server FirstCluster
asadmin delete-http-lb-ref --config MyLbConfig FirstCluster
asadmin delete-http-lb-config MyLbConfig
asadmin delete-instance i1
asadmin delete-instance i2
asadmin delete-cluster FirstCluster
asadmin undeploy clusterjsp
- Arrêtez l’instance Web Server jouant le rôle d’équilibreur de charge :
rép_install_web_server/https-nom_hôte/stop
- Renommez le fichier loadbalancer.xml situé sous rép_install_web_server/https-nom_hôte/config en loadbalancer.xml.sav
- Arrêtez l'agent de gestion HADB à l'aide de l'une des méthodes suivantes :
Dans une installation Java Enterprise System :
- Placez-vous dans le répertoire /etc/init.d :
cd /etc/init.d
- Exécutez la commande suivante pour arrêter l'agent :
./ma-initd stop
Dans une installation Application Server autonome :
- Placez-vous dans le répertoire bin de la base HADB de l'installation d'Application Server :
cd rép_install/hadb/4/bin
- Exécutez la commande suivante pour arrêter l'agent :
./ma-initd stop
Dans cette section, vous avez installé, configuré et démarré la base HADB, et configuré un cluster et une application pour l'utilisation de la haute disponibilité. Vous avez également effectué le nettoyage pour préparer le système à d'autres tâches.
Félicitations ! Vous venez de terminer la procédure de démarrage rapide pour Application Server.
Autres ressourcesD’autres ressources vous permettant d’en apprendre davantage sur le logiciel Application Server et son utilisation sont disponibles :