Taakverdeling voor HPC Cache-clientverkeer

In dit artikel worden enkele basismethoden uitgelegd voor het verdelen van clientverkeer naar alle koppelpunten in uw Azure HPC Cache.

Elke HPC-cache heeft ten minste drie verschillende IP-adressen en caches met grotere doorvoerwaarden kunnen maximaal 12 hebben. Het is belangrijk om alle IP-adressen te gebruiken om de volledige voordelen van Azure HPC Cache te krijgen.

Er zijn verschillende opties voor taakverdeling van uw clientkoppelingen:

  • Kies handmatig een ander koppelings-IP-adres voor elke client
  • IP-adresrotatie opnemen in uw client-koppelingsscripts
  • Een DNS-systeem configureren om clientaanvragen automatisch te routeren tussen alle beschikbare adressen (round robin DNS)

Het juiste taakverdelingssysteem voor u is afhankelijk van de complexiteit van uw werkstroom, het aantal IP-adressen in uw cache en een groot aantal andere factoren. Neem contact op met uw Azure-adviseur als u hulp nodig hebt bij het bepalen welke benadering het beste voor u is.

IP-adressen handmatig toewijzen

De koppelings-IP-adressen van uw cache worden weergegeven op de pagina's Overzicht en Koppelingsinstructies in Azure Portal en in het bericht dat wordt afgedrukt wanneer u een cache maakt met Azure CLI of PowerShell.

U kunt de pagina Koppelingsinstructies gebruiken om voor elke client een aangepaste koppelingsopdracht te genereren. Selecteer alle adreswaarden voor koppelen aan cache bij het maken van meerdere opdrachten.

Lees De Azure HPC Cache koppelen voor meer informatie.

Scripttaakverdeling gebruiken

Er zijn verschillende manieren om clientkoppelingen programmatisch te roteren tussen de beschikbare IP-adressen. Hier volgen twee voorbeelden.

Voorbeeld van koppelingsopdrachtscript cksum

In dit voorbeeld wordt de hash-functie cksum en de clienthostnaam gebruikt om de clientverbindingen automatisch te distribueren tussen alle beschikbare IP-adressen in uw HPC-cache. Als alle clientcomputers unieke hostnamen hebben, kunt u deze opdracht uitvoeren op elke client om ervoor te zorgen dat alle beschikbare koppelpunten worden gebruikt.

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

Als u dit voorbeeld in uw werkstroom wilt gebruiken, past u deze termen aan:

  • Gebruik in de X= expressie een door spaties gescheiden lijst met alle koppeladressen van de cache, in gesorteerde volgorde.

    De expressie (X=(10.0.0.{7..9}) stelt de variabele X in als deze set koppeladressen: {10.0.0.7, 10.0.0.8, 10.0.0.9}. Gebruik het basis-IP-adres van de cache en de exacte adressen die worden weergegeven op de pagina Overzicht van de cache. Als de adressen niet opeenvolgend zijn, vermeldt u ze allemaal in numerieke volgorde.

  • Gebruik in de %3 term het werkelijke aantal koppel-IP-adressen dat uw cache heeft (meestal 3, 6, 9 of 12).

    Gebruik bijvoorbeeld %9 als uw cache negen IP-adressen voor clientkoppeling beschikbaar maakt.

  • Gebruik voor de expressie ${NAMESPACE}het pad naar de naamruimte van het opslagdoel waartoe de client toegang heeft.

    U kunt een variabele gebruiken die u hebt gedefinieerd (NAAMRUIMTE in het voorbeeld) of de letterlijke waarde doorgeven.

    In het opdrachtvoorbeeld aan het einde van deze sectie wordt een letterlijke waarde gebruikt voor het pad naar de naamruimte. /blob-target-1

  • Als u een aangepast lokaal pad op uw clientcomputers wilt gebruiken, wijzigt u de waarde /mnt in het gewenste pad.

Hier volgt een voorbeeld van een gevulde clientkoppelingsopdracht:

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 

Voorbeeld van round robin-functie

In dit codevoorbeeld worden client-IP-adressen gebruikt als een willekeurig element om clients te distribueren naar alle beschikbare IP-adressen van de HPC-cache.

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
}

DNS-taakverdeling gebruiken

In deze sectie worden de basisbeginselen uitgelegd van het configureren van een DNS-systeem voor het distribueren van clientverbindingen naar alle koppelpunten in uw Azure HPC Cache. Deze methode houdt geen rekening met de hoeveelheid verkeer die elke client genereert, maar zorgt ervoor dat clients gelijkmatig zijn verdeeld over alle interfaces van de cache in plaats van slechts één of twee te gebruiken.

Dit document bevat geen instructies voor het instellen en beheren van een DNS-server voor uw clients in de Azure-omgeving.

DNS is niet vereist om clients te koppelen met behulp van het NFS-protocol en IP-adressen. DNS is nodig als u domeinnamen wilt gebruiken in plaats van IP-adressen om hardware NAS-systemen te bereiken, of als uw werkstroom bepaalde geavanceerde protocolinstellingen bevat.

Het DNS-systeem dat u gebruikt om adressen te distribueren naar clients hoeft niet te worden geopend door de HPC Cache. In sommige situaties wilt u mogelijk een aangepast DNS-systeem gebruiken voor de cache zelf, maar het configureren van dat systeem is veel ingewikkelder dan het instellen van dit type client round robin-systeem. Raadpleeg ondersteuning voor Azure als u nadenkt over het wijzigen van de DNS-server van uw HPC-cache in een aangepast systeem.

Round robin-distributie configureren voor koppelpunten in de cache

Met een round robin DNS-systeem (RRDNS) worden clientaanvragen automatisch gerouteerd tussen meerdere adressen.

Als u dit systeem wilt instellen, moet u het configuratiebestand van de DNS-server aanpassen, zodat wanneer aanvragen worden gekoppeld aan het hoofddomeinadres van de HPC-cache, het verkeer toewijst tussen alle koppelpunten van het HPC Cache-systeem. Clients koppelen de HPC-cache met behulp van de domeinnaam als het serverargument en worden automatisch doorgestuurd naar het volgende koppel-IP-adres.

Er zijn twee hoofdstappen voor het configureren van RRDNS:

  1. Wijzig het bestand van named.conf uw DNS-server om de cyclische volgorde voor query's in te stellen op uw HPC-cache. Deze optie zorgt ervoor dat de server alle beschikbare IP-waarden doorloopt. Voeg een instructie zoals deze toe:

    options {
        rrset-order {
            class IN A name "hpccache.contoso.com" order cyclic;
        };
    };
    
  2. Configureer A-records en ptr-records (PTR) voor elk beschikbaar IP-adres, zoals in het volgende voorbeeld.

    Deze nsupdate opdrachten bieden een voorbeeld van het correct configureren van DNS voor een HPC-cache met de domeinnaam hpccache.contoso.com en drie koppeladressen (10.0.0.10, 10.0.0.11 en 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
    

    Met deze opdrachten maakt u een A-record voor elk van de koppeladressen van de HPC-cache en stelt u ook aanwijzerrecords in om omgekeerde DNS-controles op de juiste wijze te ondersteunen.

    In het onderstaande diagram ziet u de basisstructuur van deze configuratie.

    Diagram showing client mount point DNS configuration.

Nadat het RRDNS-systeem is geconfigureerd, laat u uw clientcomputers dit gebruiken om het HPC Cache-adres in hun koppelingsopdrachten op te lossen.

Volgende stappen