Condividi tramite


Configurare gruppi di disponibilità Always On e istanze del cluster di failover con più subnet

Si applica a: SQL Server - Linux

Quando un gruppo di disponibilità Always On o un'istanza del cluster di failover si estende su più di un sito, in genere ogni sito ha una propria rete e di conseguenza ogni sito ha i propri indirizzi IP.

Ad esempio, gli indirizzi del sito A iniziano con 192.168.1.<x> e gli indirizzi del sito B iniziano con 192.168.2.<x>, dove <x> è la parte dell'indirizzo IP univoca per il server. Senza un qualche tipo di routing a livello di rete, questi server non sono in grado di comunicare tra loro.

Questo scenario può essere gestito in due modi diversi:

  • configurare una rete che collega le due diverse subnet (nota come VLAN)
  • configurare il routing tra le subnet.

Soluzione basata su VLAN

Prerequisite: per una soluzione basata su VLAN, ogni server che partecipa a un gruppo di disponibilità o a un'istanza del cluster di failover deve disporre di due schede di interfaccia di rete (NIC) per garantire la corretta disponibilità (una scheda di rete con due porte rappresenterebbe un singolo punto di errore in un server fisico), in modo da consentire di assegnare al server indirizzi IP nella subnet nativa, oltre a uno nella VLAN. Tale requisito è in aggiunta alle altre esigenze di rete: anche iSCSI, ad esempio, richiede una propria rete.

La creazione degli indirizzi IP per il gruppo di disponibilità o l'istanza del cluster di failover viene eseguita nella VLAN. Nell'esempio seguente la VLAN ha una subnet di 192.168.3.<x>, quindi l'indirizzo IP creato per il gruppo di disponibilità o l'istanza del cluster di failover è 192.168.3.104. Non sono necessarie altre configurazioni, perché al gruppo di disponibilità o all'istanza del cluster di failover è assegnato un solo indirizzo IP.

Diagramma che mostra come configurare più subnet con VLAN.

Configurazione con Pacemaker

In Windows un cluster di failover di Windows Server (WSFC) supporta in modo nativo più subnet e gestisce più indirizzi IP tramite una dipendenza OR dall'indirizzo IP. In Linux non esiste alcuna dipendenza OR, ma esiste un modo per ottenere più subnet appropriate in modo nativo con Pacemaker, anche se non è possibile usare la normale riga di comando di Pacemaker. È invece necessario modificare il file CIB (Cluster Information Base). Si tratta di un file XML con la configurazione di Pacemaker.

Diagramma che mostra come configurare più subnet con Pacemaker.

Aggiornare il file CIB

  1. Esportare il file CIB.

    sudo pcs cluster cib <filename>
    

    Dove <filename> è il nome che si vuole assegnare al file CIB.

  2. Modificare il file che è stato generato. Cercare la sezione <resources>. È possibile visualizzare le varie risorse create per il gruppo di disponibilità o l'istanza del cluster di failover. Individuare quella associata all'indirizzo IP. Aggiungere una sezione <instance_attributes> con le informazioni per il secondo indirizzo IP prima o dopo quello esistente, ma comunque prima di <operations>. La sintassi è simile alla seguente:

    <instance_attributes id="<NameForAttribute>">
        <nvpair id="<NameForIP>" name="ip" value="<IPAddress>"/>
    </instance_attributes>
    

    dove <NameForAttribute> è il nome univoco di questo attributo, <NameForIP> è il nome associato all'indirizzo IP, <IPAddress> è l'indirizzo IP per la seconda subnet.

    Di seguito è riportato un esempio.

    <instance_attributes id="virtualip-instance_attributes">
        <nvpair id="virtualip-instance_attributes-ip" name="ip" value="192.168.1.102"/>
    </instance_attributes>
    

    Per impostazione predefinita, è presente una sola <instance_attributes /> nel file XML CIB esportato. Se sono presenti due subnet, sono necessarie due voci <instance_attributes />.

    Di seguito è riportato un esempio di voci per due subnet:

    <instance_attributes id="virtualip-instance_attributes1">
        <rule id="Subnet1-IP" score="INFINITY" boolean-op="or">
            <expression id="Subnet1-Node1" attribute="#uname" operation="eq" value="Node1" />
            <expression id="Subnet1-Node2" attribute="#uname" operation="eq" value="Node2" />
        </rule>
        <nvpair id="IP-In-Subnet1" name="ip" value="192.168.1.102"/>
    </instance_attributes>
    <instance_attributes id="virtualip-instance_attributes2">
        <rule id="Subnet2-IP" score="INFINITY">
            <expression id="Subnet2-Node1" attribute="#uname" operation="eq" value="Node3" />
        </rule>
        <nvpair id="IP-In-Subnet2" name="ip" value="192.168.2.102"/>
    </instance_attributes>
    

    È possibile usare boolean-op="or" quando la subnet ha più di un server.

  3. Importare il file CIB modificato e riconfigurare Pacemaker.

    sudo pcs cluster cib-push <filename>
    

    dove <filename> è il nome del file CIB con le informazioni sull'indirizzo IP modificate.

Controllare e verificare il failover

  1. Dopo aver applicato correttamente il file CIB con la configurazione aggiornata, effettuare il ping del nome DNS associato alla risorsa indirizzo IP in Pacemaker. Deve riflettere l'indirizzo IP associato alla subnet che attualmente ospita il gruppo di disponibilità o l'istanza del cluster di failover.

  2. Eseguire il failover del gruppo di disponibilità o dell'istanza del cluster di failover nell'altra subnet.

  3. Quando il gruppo di disponibilità o l'istanza del cluster di failover è completamente online, effettuare il ping del nome DNS associato all'indirizzo IP. Deve riflettere l'indirizzo IP nella seconda subnet.

  4. Se si vuole, eseguire nuovamente il failover del gruppo di disponibilità o dell'istanza del cluster di failover sulla subnet originale.