Chapitre 19. HTTP clustering et équilibrage des charges

19.1. Introduction

19.1.1. Clusters haute disponibilité (HA) et clusters d'équilibrage des charges

Le terme Clustering se réfère à l'utilisation de ressources multiples, comme des serveurs, comme s'ils constituaient une seule entité. Les deux principaux types de clustering sont Load balancing (LB) et High-availability (HA). Dans un groupement LB, toutes les ressources exécutent en même temps, et une couche de gestion se charge de répartir la charge de travail entre eux.
Dans le clustering HA, une ressource exécute, et une autre est prête à prendre position quand la première est rendue disponible. Le but du clustering HA est de réduire les chances de panne niveau matériel, logiciels ou réseau.
JBoss Enterprise Application Platform supporte le clustering à plusieurs niveaux. Certains sous-systèmes que l'on puisse rendre disponibles sont les suivants :
  • Les instances du serveur d'applications
  • Les applications web, lorsqu'elles sont utilisées en conjonction avec le serveur interne JBoss Web, Apache HTTP, Microsoft IIS ou Oracle iPlanet Web Server.
  • Les EJB (Enterprise JavaBeans) avec, ou sans état
  • Mécanismes Single Sign On (SSO)
  • Cache distribué
  • Sessions HTTP
  • Les services JMS et les MDB (Messages Driven Beans)
Le clustering est rendu disponible par deux sous-systémes : jgroups et modcluster dans JBoss EAP 6. Les profils ha et full-ha ont ces systèmes activés. Dans JBoss EAP 6, ces services démarrent et se ferment à la demande, mais ils ne démarreront que si une application configurée comme distributable est déployée sur les serveurs.
Infinispan est fourni comme fournisseur de cache dans JBoss EAP 6. Infinispan gére le clustering et la réplication des caches de JBoss EAP 6.

19.1.2. Composants pouvant bénéficier de la haute disponibilité (HA)

La haute disponibilité (HA) tombe dans un certain nombre de larges catégories de JBoss EAP 6.
Le conteneur

Plusieurs instances de JBoss EAP 6 (exécutant en tant que serveur autonome) ou les membres d'un groupe de serveurs (exécutant en tant que domaine géré) peuvent être configurés pour être hautement disponibles. Cela signifie que si une instance ou un membre est arrêté ou disparaît du groupement, sa charge de travail sera déplacée vers un père. La charge de travail peut être gérée de manière à fournir une fonctionnalité d'équilibrage de la charge, afin que les serveurs ou les groupes de serveurs avec des ressources plus ou moins supérieures puissent prendre une part plus importante à la charge de travail, ou qu'une capacité supplémentaire puisse être ajoutée pendant les périodes de forte charge.

Le serveur web

Le serveur web lui-même peut être groupé pour HA, à l'aide d'un des mécanismes d'équilibrage de charge compatible. Le plus souple est le connecteur mod_cluster, qui est intégré dans le conteneur de JBoss EAP. Les autres possibilités incluent les connecteurs Apache mod_jk ou mod_proxy, ou les connecteurs ISAPI et NSAPI.

L'application

Les application déployées peuvent être rendues HA (Highly Available) à cause de la spécification Java Enterprise Edition 6 (Java EE 6). Les EJB de session avec ou sans état peuvent être clusterisés, de façon à ce que si le nœud impliqué dans le travail disparaît, un autre nœud prendra sa place, et dans le cas de beans de session avec état, préservera l'état.

19.1.3. Connecteurs HTTP - Aperçu général

JBoss EAP 6 a la possibilité d'utiliser des mécanismes d'équilibrage de charge et de haute disponibilité intégrés à des serveurs web externes, tels que Apache Web Server, IIS de Microsoft et Oracle iPlanet. JBoss EAP 6 communique avec le serveur web externe à l'aide d'un connecteur HTTP. Ces connecteurs HTTP sont configurés dans le sous-système de web de JBoss EAP 6.
Les serveurs web incluent des modules informatiques qui contrôlent la façon dont les requêtes HTTP sont routées vers les nœuds de worker de JBoss EAP 6. Chacun de ces modules varie dans la façon dont il fonctionne et comment il est configuré. Les modules sont configurés pour équilibrer les charges de travail entre plusieurs nœuds de serveur de JBoss EAP 6, pour déplacer des charges de travail vers d'autres serveurs dans le cas d'échec, ou les deux. Ces fonctions sont appelées équilibrage de charge et Haute disponibilité (HA).
JBoss EAP 6 prend en charge un certain nombre de connecteurs HTTP. Celui que vous choisirez dépendra du serveur web que vous utilisez et de la fonctionnalité dont vous aurez besoin.
Le tableau ci-dessous liste les différences entre les différents connecteurs HTTP compatibles avec JBoss EAP 6. Pour obtenir les dernières informations sur les configurations prises en charge pour les connecteurs HTTP, voir https://access.redhat.com/site/articles/111663.

Tableau 19.1. Caractéristiques et contraintes des connecteurs HTTP

Connecteur Web server Systèmes d'exploitation pris en charge Protocoles pris en charge S'adapte au statut de déploiement Prend en charge une sticky session
mod_cluster httpd dans JBoss Enterprise Web Server, httpd fourni par un système d'exploitation (Red Hat Enterprise Linux, Hewlett-Packard HP-UX) Red Hat Enterprise Linux, Microsoft Windows Server, Oracle Solaris, Hewlett-Packard HP-UX HTTP, HTTPS, AJP Oui. Détecte le déploiement et l'annulation du déploiement d'applications et décide dynamiquement s'il faut diriger les demandes clients vers un serveur basé sur la question de savoir si l'application est déployée sur ce serveur. Oui
mod_jk httpd dans JBoss Enterprise Web Server, httpd fourni par un système d'exploitation (Red Hat Enterprise Linux, Hewlett-Packard HP-UX) Red Hat Enterprise Linux, Microsoft Windows Server, Oracle Solaris, Hewlett-Packard HP-UX AJP Non. Redirige les demandes des clients vers le conteneur tant que le conteneur est disponible, quel que soit le statut de l'application. Oui
mod_proxy httpd dans JBoss Enterprise Web Server Red Hat Enterprise Linux, Microsoft Windows Server, Oracle Solaris HTTP, HTTPS, AJP Non. Redirige les demandes des clients vers le conteneur tant que le conteneur est disponible, quel que soit le statut de l'application. Oui
ISAPI Microsoft IIS Microsoft Windows Server AJP Non. Redirige les demandes des clients vers le conteneur tant que le conteneur est disponible, quel que soit le statut de l'application. Oui
NSAPI Oracle iPlanet Web Server Oracle Solaris AJP Non. Redirige les demandes des clients vers le conteneur tant que le conteneur est disponible, quel que soit le statut de l'application. Oui
JBoss EAP 6 prend en charge les configurations disponibles ici : https://access.redhat.com/site/articles/111663.

19.1.4. Nœud de worker

Nœud de connecteur HTTP

Un worker node, connu sous le simple nom de node, est un serveur JBoss EAP 6 qui accepte des requêtes d'un ou plusieurs serveurs Web faisant face au client. JBoss EAP 6 peut accepter des requêtes de son propre serveur Web, tel quApache HTTP Server, Microsoft IIS, ou Oracle iPlanet Web Server.

Pour avoir un aperçu des connecteurs HTTP pris en charge par JBoss EAP 6 et sur la façon de les configurer, voir Section 19.1.3, « Connecteurs HTTP - Aperçu général ».
Noeud de cluster

Un nœud de cluster est un membre d'un groupement de serveurs. Un tel cluster peut être en équilibrage de charge, en haute disponibilité, ou les deux. Dans un cluster d'équilibrage de charge, un gestionnaire central distribue également la charge de travail parmi ses nœuds, par mesure d'égalité suivant la situation particulière. Dans un cluster de haute disponibilité (HA), certains nœuds travaillent activement, tandis que d'autres sont en attente d'intervenir si un des nœuds actifs quitte le cluster.