Introduzione al clustering
Il clustering è una tecnica che permette di distribuire un'applicazione su più server per ottenere maggiore scalabilità, affidabilità e disponibilità del servizio.
Definizioni fondamentali
Scalabilità
La capacità di un sistema di gestire un carico crescente aggiungendo risorse (orizzontale) o potenziando quelle esistenti (verticale).
Alta disponibilità (High Availability)
La capacità del sistema di rimanere operativo anche in caso di guasto di uno o più componenti.
Load Balancing
La distribuzione del carico di lavoro tra più server per ottimizzare l'utilizzo delle risorse.
Failover
Il meccanismo che permette di trasferire automaticamente le operazioni da un server guasto ad uno funzionante.
Architettura di un cluster J2EE
Un cluster J2EE tipico è composto da:
- Load Balancer: distribuzione delle richieste
- Application Server Nodes: istanze JBoss in cluster
- Session Replication: sincronizzazione stato sessioni
- Database Cluster: persistenza dati condivisa
Configurazione JBoss Clustering
Per configurare un cluster JBoss sono necessari alcuni passi fondamentali:
1. Configurazione multicast
<mbean code="org.jboss.ha.framework.server.ClusterPartition"
name="jboss:service=DefaultPartition">
<attribute name="PartitionName">DefaultPartition</attribute>
<attribute name="BindAddress">${jboss.bind.address}</attribute>
<attribute name="ClusterConfig">
<UDP mcast_addr="228.1.2.3" mcast_port="45566"/>
</attribute>
</mbean>
2. Configurazione nodi
Ogni nodo deve essere avviato specificando la configurazione cluster:
run.sh -c all -g MyCluster -u 239.255.100.100
3. Verifica del cluster
Per verificare che i nodi siano correttamente clusterizzati:
ClusterNode[] nodes = partition.getClusterNodes();
for(ClusterNode node : nodes) {
System.out.println("Node: " + node.getName());
}
Protocolli di comunicazione
JBoss utilizza principalmente due protocolli per la comunicazione tra nodi:
- JGroups: framework per comunicazione affidabile
- UDP Multicast: per la scoperta automatica dei nodi
Conclusioni
In questa prima parte abbiamo introdotto i concetti fondamentali del clustering e visto come configurare un cluster JBoss base. Nei prossimi articoli approfondiremo il clustering di EJB e dello strato web.
