Installer et configurer Glassfish en mode cluster - 3ème partie

Me voici rendu à l'installation du serveur WEB et configuration du load labalancing coté HTTP...

Préambule

me voici avec une webapp frâichement compilée et construite sous la forme d'une archive EAR .

Déploiement de l'application

Avec ASADMIN

$ bin/asadmin.bat deploy --target cluster-1  --enabled=true "d:\\java\\travel\\dist\\travel.ear"
Command deploy executed successfully.

Avec la console

glassfish-travel-deployment

Installation du serveur HTTP

J'ai installé un serveur Apache HTTPD et le connecteur mod_jk.

Configuration de GLASSFISH

Il faut d'abord créer la route coté glassfish pour la connexion via mod_jk:

Configuration du cluster

$ asadmin create-jvm-options --target cluster-1 "-DjvmRoute=\\${AJP_INSTANCE_NAME}"
Command create-jvm-options executed successfully.
$ asadmin create-jvm-options --target cluster-1 "-Dcom.sun.enterprise.web.connector.enableJK=\\${AJP_PORT}"
Command create-jvm-options executed successfully.

Assignation des ports et références AJP pour chaque instance

$ asadmin create-system-properties --target cluster-1-nodeagent-1-instance-1  AJP_INSTANCE_NAME=instance1
Command create-system-properties executed successfully.
$ asadmin create-system-properties --target cluster-1-nodeagent-1-instance-1 AJP_PORT=9000
Command create-system-properties executed successfully.
$ asadmin create-system-properties --target cluster-1-nodeagent-1-instance-2  AJP_INSTANCE_NAME=instance2
Command create-system-properties executed successfully.
$ asadmin create-system-properties --target cluster-1-nodeagent-1-instance-2 AJP_PORT=9001
Command create-system-properties executed successfully.

Après, il faut aller dans la console web, puis dans le menu configuration>cluster-1-config>system properties et ajouter les deux propriétés et leur valeur par défaut - je n'ai pas réussi à faire autrement. Redémarrer le cluster

Coté serveur APACHE HTTPD

Le fichier workers.properties qui définit les routes HTTP:


  worker.list=loadbalancer
  
  worker.instance1.type=ajp13
  worker.instance1.host=127.0.0.1
  worker.instance1.port=9000
  worker.instance1.lbfactor=50
  worker.instance1.cachesize=10
  worker.instance1.cache_timeout=600
  worker.instance1.socket_keepalive=1
  worker.instance1.socket_timeout=300

  worker.instance2.type=ajp13
  worker.instance2.host=127.0.0.1
  worker.instance2.port=9001
  worker.instance2.lbfactor=50
  worker.instance2.cachesize=10
  worker.instance2.cache_timeout=600
  worker.instance2.socket_keepalive=1
  worker.instance2.socket_timeout=300
  
  worker.loadbalancer.type=lb
  worker.loadbalancer.balance_workers=instance1,instance2

Le fichier httpd.conf

LoadModule  jk_module  modules/mod_jk.so
[...]

<IfModule jk_module>
	JkWorkersFile conf/workers.properties
	JkLogFile     logs/mod_jk.log
	JkLogLevel    debug
	JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
	JkMount  /travel/* loadbalancer
       JkMount  /clusterjsp/* loadbalancer
</IfModule>

En essayant de tester la connexion, j'obtiens l'erreur suivante :


[#|2008-12-15T17:15:20.122+0100|SEVERE|sun-appserver9.1|org.apache.tomcat.util.threads.ThreadPool|_ThreadID=22;_ThreadName=TP-Processor2;_RequestID=2df87949-340b-4efa-a4c3-39296e85c45e;|PWC5752: Caught exception (java.lang.NoSuchFieldError: USE_CUSTOM_STATUS_MSG_IN_HEADER) executing org.apache.jk.common.ChannelSocket$SocketConnection@97ccbc, terminating thread|#]

Conclusion

S'il ne devait exister q'un seul bug bloquant dans une application je tomberai dessus .... Ce dernier semble être lié au connecteur MOD_JK APACHE <-> GLASSFISH. Il est a priori résolu dans la version 2.1.

A ce stade, soit j'utilise le serveur HTTP de SUN qui semble être mieux intégré avec GLASSFISH - le contraire serait étonnant -, soit j'attends la 2.1 . Je pense tester quand même avec la première solution

Vus : 141
Publié par Littlewing : 368