Pagine

mercoledì 25 aprile 2012

SQL Server 2012: Always On Availability Group Listener

Nei post procedenti abbiamo visto come configurare l'Always On e come il backup del Transaction log distribuito sollevi il server principal dall'onere di effettuare il backup del tlog...
Un componente fondamentale per l'Always On Availability Group è l'Availability Group Listeners. Questo componente non è altro che un Virtual Network Name a cui i client possono connettersi per accedere a un database in una replica primaria o secondaria. In pratica i client non sono assolutamente a conoscenza del nome d'istanza a cui si connettono ma sono a conoscenza del nome del Listener dell'Availability Group. In caso di Failover non è assolutamente necessario modificare la connectionstring dei client per consentirgli di lavorare.
Il Listener è composto da un nome DNS, dal numero di porta e da uno o più indirizzi IP. Solo il protocollo TCP è supportato dal listener.
È inoltre necessario che il nome DNS del listener sia univoco. Un client utilizza il DNS per risolvere il Virtual Network Name nei suoi IP e quindi tenta di connettersi a ogni indirizzo fino a che la connessione riesce oppure va in timeout.
Vediamo come configurarlo....

Apriamo l'availability group sull'istanza principal, espandiamo l'albero e click destro su Availability Group Listener

















Ora dobbiamo inserire il DNS Name per il Listener, nel mio caso MyAGListener, la porta e selezionare se l'ip deve essere dato da un DHCP oppure deve essere
statico. Nel mio caso scelgo la seconda opzione ed inserisco l'IP.




















Diamo Ok ed il Listener è creato















A questo punto tutte le connessioni che vorranno connettersi ai database di replica potranno specificare il nome del Listener (MyAGListener) anzichè i nomi delle istanze di SQL Server 2012. Una comodità non indifferente. Il listener, ricevuta la richiesta di connessione, la girerà all'istanza SQL corretta. Tutto in modo assolutamente trasparente.

















Nel mio caso il server principal è WIN8SERVER. Mi sono appena connesso attraverso MYAGListener a SQL Server. Sfruttando la funzione @@SERVERNAME vediamo a quale istanza sono connesso.

Select @@SERVERNAME NomeServer
Go













In effetti sono connesso all'istanza WIN8SERVER che in questo momento è Principal.
Ma cosa accade in caso di failover ? Accade che le connessioni attive sul principal vengono terminate. Il failover causa la trasformazione di una replica secondaria in principal ed il listener girerà le connessioni in entrata al nuovo server.
Nel mio ambiente effettuo un Failover manuale trsformando in principal l'istanza WIN8MIRROR.
Se tento di rieseguire la query sulla connessione procedente mi verrà restituito il seguente error







Rieseguendo la query, e quindi forzando la riapertura della connessione, otteniamo come nuovo nome di server














Ecco che siamo connessi a WIN8MIRROR, nuova istanza principal nell'availability group. Non abbiamo effettuato alcuna modifica alla connectionstring, semplicemente il Listener ha fatto si che la connessione giungesse alla sua corretta destinazione.

Ciao

Luca

Nessun commento:

Posta un commento