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.