Dela via


Belastningsutjämning av HPC Cache-klienttrafik

I den här artikeln beskrivs några grundläggande metoder för att balansera klienttrafik till alla monteringspunkter i Azure HPC Cache.

Varje HPC Cache har minst tre olika IP-adresser, och cacheminnen med större dataflödesvärden kan ha upp till 12. Det är viktigt att använda alla IP-adresser för att få alla fördelar med Azure HPC Cache.

Det finns olika alternativ för belastningsutjämning av klientmonteringar:

  • Välj en annan monterings-IP för varje klient manuellt
  • Inkludera IP-adressrotation i klientmonteringsskripten
  • Konfigurera ett DNS-system för att automatiskt dirigera klientbegäranden mellan alla tillgängliga adresser (resursallokerings-DNS)

Rätt belastningsutjämningssystem för dig beror på arbetsflödets komplexitet, antalet IP-adresser i cacheminnet och ett stort antal andra faktorer. Kontakta din Azure-rådgivare om du behöver hjälp med att bestämma vilken metod som är bäst för dig.

Tilldela IP-adresser manuellt

Cacheminnets monterings-IP-adresser visas på sidorna översikts- och monteringsinstruktioner för cacheminnet i Azure-portalen och på meddelandet om lyckade utskrifter när du skapar en cache med Azure CLI eller PowerShell.

Du kan använda sidan Monteringsinstruktioner för att generera ett anpassat monteringskommando för varje klient. Välj alla cachemonteringsadressvärden när du skapar flera kommandon.

Mer information finns i Montera Azure HPC Cache .

Använda skriptbaserad belastningsutjämning

Det finns flera sätt att programmatiskt rotera klientmonteringar mellan tillgängliga IP-adresser. Här följer två exempel.

Exempel på monteringskommandoskript för cksum

Det här exemplet på monteringskommandot använder hash-funktionen cksum och klientvärdnamnet för att automatiskt distribuera klientanslutningarna mellan alla tillgängliga IP-adresser i HPC Cache. Om alla klientdatorer har unika värdnamn kan du köra det här kommandot på varje klient för att säkerställa att alla tillgängliga monteringspunkter används.

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

Om du vill använda det här exemplet i arbetsflödet anpassar du följande termer:

  • I uttrycket X= använder du en blankstegsavgränsad lista över alla cachens monteringsadresser i sorterad ordning.

    Uttrycket (X=(10.0.0.{7..9}) anger variabelN X som den här uppsättningen monteringsadresser: {10.0.0.7, 10.0.0.8, 10.0.0.9}. Använd cachens grundläggande IP-adress och de exakta adresser som visas på sidan Översikt för cacheminnet. Om adresserna inte är i följd listar du alla i numerisk ordning.

  • I termen %3 använder du det faktiska antalet monterings-IP-adresser som cacheminnet har (vanligtvis 3, 6, 9 eller 12).

    Använd till exempel %9 om cacheminnet exponerar nio IP-adresser för klientmontering.

  • För uttrycket ${NAMESPACE}använder du den namnområdessökväg för lagringsmål som klienten kommer åt.

    Du kan använda en variabel som du har definierat (NAMESPACE i exemplet) eller skicka literalvärdet i stället.

    Kommandoexemplet i slutet av det här avsnittet använder ett literalvärde för namnområdessökvägen, /blob-target-1.

  • Om du vill använda en anpassad lokal sökväg på klientdatorerna ändrar du värdet /mnt till den sökväg du vill använda.

Här är ett exempel på ett ifyllt klientmonteringskommando:

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 

Exempel på resursallokering

I det här kodexemplet används klient-IP-adresser som ett slumpmässigt element för att distribuera klienter till alla HPC Caches tillgängliga IP-adresser.

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
}

Använda DNS-belastningsutjämning

I det här avsnittet beskrivs grunderna i att konfigurera ett DNS-system för att distribuera klientanslutningar till alla monteringspunkter i Azure HPC Cache. Den här metoden tar inte hänsyn till mängden trafik som varje klient genererar, men den ser till att klienterna är jämnt fördelade över alla cachens gränssnitt i stället för att bara använda ett eller två.

Det här dokumentet innehåller inte instruktioner för att konfigurera och hantera en DNS-server för dina klienter i Azure-miljön.

DNS krävs inte för att montera klienter med hjälp av NFS-protokollet och IP-adresserna. DNS krävs om du vill använda domännamn i stället för IP-adresser för att nå maskinvaru-NAS-system, eller om arbetsflödet innehåller vissa avancerade protokollinställningar.

Det DNS-system som du använder för att distribuera adresser till klienter behöver inte nås av HPC Cache. I vissa situationer kanske du vill använda ett anpassat DNS-system för själva cacheminnet, men det är mycket mer komplicerat att konfigurera systemet än att konfigurera den här typen av klientallokeringssystem. Du måste kontakta Azure-supporten om du funderar på att ändra HPC Caches DNS-server till ett anpassat system.

Konfigurera resursallokeringsdistribution för cachemonteringsplatser

Ett RRDNS-system (round-robin DNS) dirigerar automatiskt klientbegäranden mellan flera adresser.

För att konfigurera det här systemet måste du anpassa DNS-serverns konfigurationsfil så att när den hämtar monteringsbegäranden till HPC Caches huvuddomänadress tilldelar den trafik mellan alla HPC Cache-systemets monteringspunkter. Klienter monterar HPC Cache med sitt domännamn som serverargument och dirigeras automatiskt till nästa monterings-IP.

Det finns två huvudsakliga steg för att konfigurera RRDNS:

  1. Ändra DNS-serverns named.conf fil för att ange cyklisk ordning för frågor till din HPC Cache. Det här alternativet gör att servern går igenom alla tillgängliga IP-värden. Lägg till en instruktion som följande:

    options {
        rrset-order {
            class IN A name "hpccache.contoso.com" order cyclic;
        };
    };
    
  2. Konfigurera en post och pekarposter (PTR) för varje tillgänglig IP-adress som i följande exempel.

    Dessa nsupdate kommandon är ett exempel på hur du konfigurerar DNS korrekt för en HPC Cache med domännamnet hpccache.contoso.com och tre monteringsadresser (10.0.0.10, 10.0.0.11 och 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
    

    Dessa kommandon skapar en A-post för var och en av HPC Caches monteringsadresser och konfigurerar även pekarposter för att stödja omvända DNS-kontroller på lämpligt sätt.

    Diagrammet nedan visar den grundläggande strukturen för den här konfigurationen.

    Diagram showing client mount point DNS configuration.

När RRDNS-systemet har konfigurerats ber du klientdatorerna att använda det för att matcha HPC Cache-adressen i deras monteringskommandon.

Nästa steg