Share via


Bilanciamento del carico Cache HPC traffico client

Questo articolo illustra alcuni metodi di base per bilanciare il traffico client verso tutti i punti di montaggio nel Cache HPC di Azure.

Ogni Cache HPC ha almeno tre indirizzi IP diversi e le cache con valori di velocità effettiva maggiori possono avere fino a 12. È importante usare tutti gli indirizzi IP per ottenere i vantaggi completi di Azure Cache HPC.

Sono disponibili varie opzioni per il bilanciamento del carico dei montaggi client:

  • Scegliere manualmente un indirizzo IP di montaggio diverso per ogni client
  • Includere la rotazione degli indirizzi IP negli script di montaggio client
  • Configurare un sistema DNS per instradare automaticamente le richieste client tra tutti gli indirizzi disponibili (DNS round robin)

Il sistema di bilanciamento del carico corretto dipende dalla complessità del flusso di lavoro, dal numero di indirizzi IP nella cache e da un numero elevato di altri fattori. Consultare Azure Advisor se è necessario aiutare a decidere quale approccio è migliore per l'utente.

Assegnare manualmente gli indirizzi IP

Gli indirizzi IP di montaggio della cache vengono visualizzati nelle pagine panoramica della cache e istruzioni di montaggio nella portale di Azure e nel messaggio di esito positivo che viene visualizzato quando si crea una cache con l'interfaccia della riga di comando di Azure o PowerShell.

È possibile usare la pagina Istruzioni di montaggio per generare un comando di montaggio personalizzato per ogni client. Selezionare tutti i valori dell'indirizzo di montaggio della cache durante la creazione di più comandi.

Per informazioni dettagliate, vedere Montare il Cache HPC di Azure.

Usare il bilanciamento del carico con script

Esistono diversi modi per ruotare i montaggi client a livello di codice tra gli indirizzi IP disponibili. Ecco due esempi.

Esempio di cksum dello script di comando mount

Questo comando di montaggio di esempio usa la funzione cksum hash e il nome host client per distribuire automaticamente le connessioni client tra tutti gli indirizzi IP disponibili nel Cache HPC. Se tutti i computer client hanno nomi host univoci, è possibile eseguire questo comando in ogni client per assicurarsi che vengano usati tutti i punti di montaggio disponibili.

mount -o hard,proto=tcp,mountproto=tcp,retry=30 $(X=(10.0.0.{1..3});echo ${X[$(($(hostname|cksum|cut -f 1 -d ' ')%3))]}):/${NAMESPACE} /mnt

Per usare questo esempio nel flusso di lavoro, personalizzare questi termini:

  • Nell'espressione X= usare un elenco separato da spazi di tutti gli indirizzi di montaggio della cache, in ordine ordinato.

    L'espressione (X=(10.0.0.{7..9}) imposta la variabile X come set di indirizzi di montaggio: {10.0.0.7, 10.0.0.8, 10.0.0.9}. Usare l'indirizzo IP di base della cache e gli indirizzi esatti visualizzati nella pagina panoramica della cache. Se gli indirizzi non sono consecutivi, elencarli tutti in ordine numerico.

  • %3 Nel termine usare il numero effettivo di indirizzi IP di montaggio presenti nella cache (in genere 3, 6, 9 o 12).

    Ad esempio, usare %9 se la cache espone nove indirizzi IP di montaggio client.

  • Per l'espressione ${NAMESPACE}, usare il percorso dello spazio dei nomi di destinazione di archiviazione a cui accederà il client.

    È possibile usare una variabile definita (SPAZIO DEI NOMI nell'esempio) oppure passare il valore letterale.

    L'esempio di comando alla fine di questa sezione usa un valore letterale per il percorso dello spazio dei nomi , /blob-target-1.

  • Se si vuole usare un percorso locale personalizzato nei computer client, modificare il valore /mnt nel percorso desiderato.

Di seguito è riportato un esempio di comando di montaggio client popolato:

mount -o hard,proto=tcp,mountproto=tcp,retry=30 $(X=(10.7.0.{1..3});echo ${X[$(($(hostname|cksum|cut -f 1 -d ' ')%3))]}):/blob-target-1 /hpc-cache/blob1 

Esempio di funzione Round robin

Questo esempio di codice usa gli indirizzi IP client come elemento casuale per distribuire i client a tutti gli indirizzi IP disponibili del Cache HPC.

function mount_round_robin() {

  # to ensure the clients are spread out somewhat evenly the default
  # mount point is based on this client's IP octet4 % number of HPC cache mount IPs.

  declare -a MOUNT_IPS="($(echo ${NFS_IP_CSV} | sed "s/,/ /g"))"
  HASH=$(hostname | cksum | cut -f 1 -d ' ')
  DEFAULT_MOUNT_INDEX=$((${HASH} % ${#MOUNT_IPS[@]}))
  ROUND_ROBIN_IP=${MOUNT_IPS[${DEFAULT_MOUNT_INDEX}]}

  DEFAULT_MOUNT_POINT="${BASE_DIR}/default"

  # no need to write again if it is already there
  if ! grep --quiet "${DEFAULT_MOUNT_POINT}" /etc/fstab; then
      echo "${ROUND_ROBIN_IP}:${NFS_PATH} ${DEFAULT_MOUNT_POINT} nfs hard,proto=tcp,mountproto=tcp,retry=30 0 0" >> /etc/fstab
      mkdir -p "${DEFAULT_MOUNT_POINT}"
      chown nfsnobody:nfsnobody "${DEFAULT_MOUNT_POINT}"
  fi
  if ! grep -qs "${DEFAULT_MOUNT_POINT} " /proc/mounts; then
      retrycmd_if_failure 12 20 mount "${DEFAULT_MOUNT_POINT}" || exit 1
  fi
}

Usare il bilanciamento del carico DNS

Questa sezione illustra le nozioni di base della configurazione di un sistema DNS per distribuire le connessioni client a tutti i punti di montaggio nel Cache HPC di Azure. Questo metodo non tiene conto della quantità di traffico generato da ogni client, ma garantisce che i client vengano distribuiti uniformemente in tutte le interfacce della cache anziché usare solo uno o due.

Questo documento non include istruzioni per la configurazione e la gestione di un server DNS per i client nell'ambiente Azure.

DNS non è necessario per montare i client usando il protocollo NFS e gli indirizzi IP. Dns è necessario se si vogliono usare nomi di dominio anziché indirizzi IP per raggiungere i sistemi NAS hardware o se il flusso di lavoro include alcune impostazioni avanzate del protocollo.

Il sistema DNS usato per distribuire gli indirizzi ai client non deve essere accessibile dal Cache HPC. In alcune situazioni potrebbe essere necessario usare un sistema DNS personalizzato per la cache stessa, ma la configurazione del sistema è molto più complessa rispetto alla configurazione di questo tipo di sistema round robin client. È necessario consultare supporto tecnico di Azure se si sta pensando di modificare il server DNS del Cache HPC in un sistema personalizzato.

Configurare la distribuzione round robin per i punti di montaggio della cache

Un sistema DNS round robin (RRDNS) instrada automaticamente le richieste client tra più indirizzi.

Per impostare questo sistema, è necessario personalizzare il file di configurazione del server DNS in modo che, quando riceve le richieste di montaggio all'indirizzo di dominio principale del Cache HPC, assegna il traffico tra tutti i punti di montaggio del sistema Cache HPC. I client montano il Cache HPC usando il relativo nome di dominio come argomento del server e vengono indirizzati automaticamente all'indirizzo IP di montaggio successivo.

Esistono due passaggi principali per configurare RRDNS:

  1. Modificare il file del named.conf server DNS per impostare l'ordine ciclico per le query sul Cache HPC. Questa opzione consente al server di scorrere tutti i valori IP disponibili. Aggiungere un'istruzione simile alla seguente:

    options {
        rrset-order {
            class IN A name "hpccache.contoso.com" order cyclic;
        };
    };
    
  2. Configurare record A e record PTR (Pointer) per ogni indirizzo IP disponibile come nell'esempio seguente.

    Questi nsupdate comandi forniscono un esempio di configurazione corretta del DNS per un Cache HPC con il nome di dominio hpccache.contoso.com e tre indirizzi di montaggio (10.0.0.10, 10.0.0.11 e 10.0.0.12):

    update add hpccache.contoso.com. 86400 A 10.0.0.10
    update add hpccache.contoso.com. 86400 A 10.0.0.11
    update add hpccache.contoso.com. 86400 A 10.0.0.12
    update add client-IP-10.contoso.com. 86400 A 10.0.0.10
    update add client-IP-11.contoso.com. 86400 A 10.0.0.11
    update add client-IP-12.contoso.com. 86400 A 10.0.0.12
    update add 10.0.0.10.in-addr.arpa. 86400 PTR client-IP-10.contoso.com
    update add 11.0.0.10.in-addr.arpa. 86400 PTR client-IP-11.contoso.com
    update add 12.0.0.10.in-addr.arpa. 86400 PTR client-IP-12.contoso.com
    

    Questi comandi creano un record A per ognuno degli indirizzi di montaggio del Cache HPC e configurano anche i record del puntatore per supportare i controlli DNS inversi in modo appropriato.

    Il diagramma seguente illustra la struttura di base di questa configurazione.

    Diagram showing client mount point DNS configuration.

Dopo aver configurato il sistema RRDNS, indicare ai computer client di usarlo per risolvere l'indirizzo Cache HPC nei comandi di montaggio.

Passaggi successivi