Posts Tagged ‘jboss’

Bilanciamento e deploy dinamico di un cluster con mod-cluster

Monday, August 16th, 2010

Nel mio articolo precedente ho descritto come configurare il mod_jk in presenza di piu’ cluster in modo anche da diminuire i costi dovuti alla replica delle sessioni in caso di cluster estesi.

Oggi vedremo un nuovo modulo sviluppato da jboss per la gestione dinamica del cluster:  il mod-cluster.

Questo modulo, oltre ad inoltrare le richieste dal web server verso gli application server,  apre un nuovo canale di comunicazione dagli application servers e il web server: i nodi del cluster trasmettono in questo modo i dati riguardanti i pesi di bilanciamento e gli eventi che avvengono sui server (start/stop/deploy/undeploy).

Con questa configurazione non è necessario quindi configurare staticamente i moduli del mod_jk affichè il web server inoltri le richieste al nodo corretto, ma sarà il nodo stesso ad aggiornare la configurazione del proxy.

Altra caratteristica interessante è il graceful shutdown:  il server che si intende spegnere, continuerà a rispondere alle richieste in atto e si spegnerà quando nessun client utilizzerà le risorse del server.

Riassumendo i vantaggi:

  • configurazione dinamica dei worker httpd
  • graceful shutdown
  • il calcolo del peso di load balancing avviene lato server
  • gestione “fine” del ciclo di vita della web application
  • supporto SSL nelle comunicazioni

I requisiti:

  • httpd 2.2.8 o superiore
  • Jboss AS 5.0 o superiore o jbossWeb 2.1.1

Mod_jk – la direttiva domain e loadbalancing su piu’ datacenter

Thursday, July 8th, 2010

A partire dalla versione 1.2.8 del mod_jk è disponibile la nuova direttiva domain, che permette di suddividere in gruppi i workers cosi’ da diminuire la banda occupata per la replica delle sessioni: invece di replicare la sessione su tutti i nodi del cluster, basterà replicare la sessione all’interno dei nodi dello stesso dominio.
Se uno dei nodi dovesse cadere, la richiesta verrà indirizzata su nodo attivo all’interno dello stesso dominio.

Questo è molto utile nel caso di nodi distribuiti su più datacenter; in questo modo non è necessario replicare la sessione attraverso i datacenter.

Nota: Per usare questa ottimizzazione è necessario attivare le sticky session

Se ad esempio avessimo due datacenter uno a Milano e uno a Londra, si potranno installare 2 cluster indipendenti sui 2 datacenter (tomcat o jboss). Lato apache verranno definiti i domini nel workers.properties

worker.list=balancer,status

worker.node1.type=ajp13
worker.node1.host=server1
worker.node1.port=8009
worker.node1.domain=milano

worker.node2.type=ajp13
worker.node2.host=server2
worker.node2.port=8009
worker.node2.domain=milano

worker.node3.type=ajp13
worker.node3.host=server3
worker.node3.port=8009
worker.node3.domain=londra

worker.node4.type=ajp13
worker.node4.host=server4
worker.node4.port=8009
worker.node4.domain=londra

worker.balancer.type=lb
worker.balancer.balance_workers=node1,node2,node3,node4
worker.balancer.sticky_session=True

worker.status.type=status

mod_jk_domain

Questa configurazione è statica, se si volesse aggiungere un nodo ad un dominio sarebbe necessario modificare il file workers.properties su tutti gli apache e ricaricare la configurazione.

Per una gestione piu’ dinamica sia die nodi che delle applicazione ci viene incontro il modulo mod_cluster di cui parlero’ in un altro articolo