Follow Us on Twitter

Clusteren met GlassFish

December 2010 - Nadat Oracle Sun had overgenomen was er een tijdlang onzekerheid wat Oracle precies ging doen met de overgenomen Sun producten. Een van deze Sun producten was GlassFish. Dit is een Java EE applicatieserver die afgeleid is van het welbekende Apache Tomcat.

Deze onzekerheid heeft Oracle gelukkig kunnen wegnemen door een duidelijke roadmap te maken voor de komende GlassFish versies. Wat blijft zijn de Open Source en Oracle edities van GlassFish. Je kunt deze applicatieserver dus gratis blijven gebruiken totdat ondersteuning en support van Oracle nodig is. Verder komt er in de toekomstige versie ondersteuning voor o.a. JRockit en Hotspot. De toekomst ziet er dus rooskleurig uit voor GlassFish.

In de 3.1 versie die zeer binnenkort uitkomt ligt de focus op High Availability, Clustering en Centralized Administration. In deze Whitebook gaan we deze (bèta) versie van GlassFish installeren en kijken hoe we de nieuwe clustering feature moeten configureren.

Voorbereiding

GlassFish is gecertificeerd voor alle bekende platformen: Windows, Linux, Unix en Mac. Let erop dat er twee downloads beschikbaar zijn: de Engelse en de meertalige versie. Verder dient JDK 6 geïnstalleerd te zijn voordat de installatie van GlassFish kan plaatsvinden. Voor versie 3.0.1 is minimaal versie 1.6.0_20 van de JDK nodig. De installatie van GlassFish vind plaats via een grafische wizard en wijst zich verder vanzelf.

JDK selectie

Indien tijdens het installatie ook gekozen is voor de configuratie-optie dan kun je tijdens de installatie zelfs al een cluster aanmaken zoals hieronder is weergegeven. Uiteraard kan het aanmaken van een cluster ook na de installatie. Dit kan met de webinterface van GlassFish of via de command-line.

Configuratie

Configureren

Zodra de installatie klaar is kan de rest van de configuratie plaatsvinden. Een configuratiestap kan bijvoorbeeld het aanmaken van een JDBC connectiepool zijn. Niet alle JDBC-drivers zijn meegeleverd met GlassFish. Voor een JDBC connectie naar een Oracle database dient eerst de Oracle JDBC driver gedownload te worden. Dit bestand kun je daarna in de volgende directory zetten: $GLASSFISH_HOME/glassfish/domains/[domein naam]/lib/ext. Hierna kun je via de webinterface een connectie pool aanmaken en de connectie gegevens invullen.

Via de webinterface van GlassFish kun je praktisch alles configureren wat nodig is. Standaard is deze webinterface te benaderen via de URL: http://[server naam]:4848. Zoals in onderstaande afbeelding te zien is kun je via deze webinterface bijvoorbeeld een instance toevoegen aan een cluster.

Webinterface

Indien gewenst kunnen de gebruikte poorten van de webinterface gewijzigd worden. Voor de domain admin interface kan dit bijvoorbeeld met het volgende commando:

asadmin set configs.config.server-config.network-config.network-listeners.network-listener.admin-listener.port=34848

In principe is GlassFish geheel te bedienen en te configureren via de command-line interface. Dit is o.a. makkelijk voor het maken van start- en stop-scripts, maar ook voor het snel deployen van nieuwe GlassFish instances en het monitoren van een GlassFish-omgeving is dit uitermate prettig. Hieronder een overzicht van diverse command-line commando's:

Commandline

Mocht er een nieuwe versie van GlassFish uitkomen dan kan de GlassFish omgeving makkelijk geüpdate worden met de Update Tool. Deze is te vinden onder $GLASSFISH_HOME/updatetool/bin.

Clusteren

Een JavaEE-cluster is een cluster van Java applicatieserver instances. De voordelen van een cluster zijn o.a. hoge beschikbaarheid, makkelijke uitbreidbaarheid, betere fouttolerantie en schaalbaarheid. Mocht de Java applicatieserver software geen clustering ondersteunen (zoals GlassFish tot de huidige beta's) dan kun je deze functionaliteit 'emuleren' door gebruik te maken van dure hardware loadbalancers en veel handmatige scripting. Dit laatste vooral om de verschillende applicatieservers gelijk te houden. Deze dienen namelijk qua configuratie, applicaties, datasources etc. kopieën van elkaar zijn.

Een GlassFish-cluster bestaat uit een Domain Admin Server (DAS) en één of meerdere nodeagents. Per nodeagent kun je een of meerdere instances hebben. In de praktijk zie je vooral op productie omgevingen vaak een nodeagent en een instance per server. Dit hoeft echter niet en vooral voor ontwikkel- en testomgevingen zie je vaak uit kostenoverwegingen dat er meerdere instances gecombineerd worden op een server.

Het Domain Admin Server (DAS) is de centrale administratie van het cluster. Hiermee kun je het cluster configureren. Het DAS kan via meerdere kanten aangeroepen worden: via het admin console, de command-line en IDE's zoals Eclipse en Netbeans.

Een nodeagent is eigenlijk niets meer dan een lichtgewicht applicatieserver. Zoals gezegd dient er een nodeagent per server te draaien. Deze nodeagent zorgt voor de levenscyclus van de instances. Hij zorgt er dus voor dat de instance start, stopt, aangemaakt of verwijderd wordt. Als een instance niet meer reageert of niet meer draait dan wordt deze herstart door de nodeagent.

Voor het aanmaken van een GlassFish-cluster dat verspreidt wordt over meerdere servers is het nodig dat Secure SHell (SSH) geconfigureerd is op de servers. Ook op Windows is dit nodig. Op Windows kan dit eventueel geïnstalleerd worden met het product Cygwin dat gratis te downloaden is. Cygwin is een Linux-achtige omgeving die draait onder Windows. Met dit pakket kun je erg veel Linux-pakketten en commando's draaien onder Windows, waaronder dus SSH.

In eerdere bèta’s was voor het inrichten van een GlassFish-cluster alleen de optie om met SSH keys te werken beschikbaar. In de nieuwere bèta's is het ook mogelijk om een wachtwoord op te geven of om deze versleuteld op te slaan.

Indien een cluster gedefinieerd is, is het niet meer nodig om een applicatie op alle individuele instances te deployen. Je kunt, zoals hieronder is weergegeven, nu met één commando een applicatie deployen op alle instances in een cluster. Uiteraard zijn er nog diverse andere voorbeelden te verzinnen die nu centraal geregeld worden en niet meer per node geregeld hoeven te worden.

Deployment 
(N.B. de "--force" is alleen nodig indien je een applicatie wilt re-deployen).

Vergeet tenslotte niet om het cluster goed te testen zodra deze is ingericht. Belangrijk is om diverse testscenario's te creëren om te kijken hoe de sessies en applicaties precies reageren als er een node bijkomt of uitvalt. Is er bijvoorbeeld voor gezorgd dat de sessies persistent zijn? Hoe is de performance als er instances uitvallen? Is de integriteit van de database te allen tijde gewaarborgd?

Conclusie

Oracle GlassFish begint met de nieuwe High Availability en Clustering features zeer interessant te worden voor bedrijven die op zoek zijn naar een stabiele en complete Java applicatieserver omgeving. Door de goede integratie met bekende ontwikkelomgevingen zoals Netbeans en Eclipse heeft GlassFish ook voor ontwikkelaars veel te bieden.

Wat beheerders vooral zal aanspreken is dat GlassFish makkelijk te installeren en te updaten is. Ook het configureren is erg helder en duidelijk. En vooral van dit laatste punt kunnen veel (ook bekendere) Java applicatieservers nog wat leren.

Referenties

Waardering:
 

Reacties

Nieuwe reactie inzenden

De inhoud van dit veld is privé en zal niet openbaar worden gemaakt.

Meer informatie over formaatmogelijkheden

CAPTCHA
Deze vraag is om te testen of u een persoon bent en om spam te voorkomen
Image CAPTCHA
Enter the characters shown in the image.