Condividi tramite


Distribuzione del routing delle richieste di applicazione nella rete CDN

di Won Yoo

Questa sezione del documento si applica a Microsoft Application Request Routing versione 2 per IIS 7 e Versioni successive.

Obiettivo

Per configurare correttamente un nodo cache figlio/edge e un nodo della cache padre in una distribuzione della gerarchia di cache a 2 livelli in un ambiente di rete/memorizzazione nella cache perimetrale (CDN/ECN). Lo stato attivo di questa procedura dettagliata consiste nel comprendere le regole di riscrittura dell'URL nel nodo cache figlio/edge e nel nodo cache padre. In definitiva, questa procedura dettagliata illustra le istruzioni dettagliate per configurare la configurazione seguente:

Diagramma che mostra una panoramica della connessione tra il server di origine, i nodi padre, i nodi figlio e S A N.

Alcune delle evidenziazioni di questa configurazione sono:

  • La ricerca dell'origine viene eseguita dal nodo cache figlio/edge.

    • L'elenco dei clienti , ovvero l'elenco dei server di origine accettabili, viene gestito in modo esplicito usando una mappa di riscrittura nell'URL riscritto.
    • I nomi host non trovati nella mappa di riscrittura vengono bloccati.
  • Il nodo della cache padre è, per la maggior parte, configurato come proxy di inoltro.

  • SAN è configurato per essere condiviso dai nodi della cache figlio/perimetrale.

    • In modo efficace, sono disponibili 3 livelli di cache:

      1. Nodo cache figlio/perimetrale.
      2. SAN.
      3. Nodo cache padre.

Prerequisiti

Questa procedura dettagliata presuppone che si abbia familiarità con le configurazioni di gestione della cache del disco e della gerarchia della cache in ARR versione 2. Se non è già stato fatto, è consigliabile esaminare le procedure dettagliate seguenti prima di procedere:

Se il routing della richiesta applicazione 2 non è stato installato, è possibile scaricarlo all'indirizzo:

  • Microsoft Application Request Routing versione 2 per IIS 7 (x86) qui (https://download.microsoft.com/download/4/D/F/4DFDA851-515F-474E-BA7A-5802B3C95101/ARRv2_setup_x86.EXE).
  • Microsoft Application Request Routing versione 2 per IIS 7 (x64) qui (https://download.microsoft.com/download/3/4/1/3415F3F9-5698-44FE-A072-D4AF09728390/ARRv2_setup_x64.EXE).

Seguire i passaggi descritti nell'articolo Installa routing richiesta applicazione versione 2 per installare ARR versione 2.

Configurazione del nodo cache figlio/Edge

Passaggio 1 - Configurare la cache dei dischi

Configurare e abilitare la cache del disco seguendo l'articolo Installa routing richiesta applicazione versione 2 . Questo articolo illustra anche come configurare una san da usare come percorso dell'unità cache secondaria.

Passaggio 2- Definire una server farm per i nodi della cache padre

Definire una server farm e aggiungere nodi della cache padre seguendo l'articolo Gestione gerarchia cache usando il routing delle richieste di applicazione .

Passaggio 3- Creare regole di riscrittura dell'URL aggiuntive per il nodo cache figlio/edge

A questo punto, usando myParentCacheNodes come nome della server farm, la regola di riscrittura DELL'URL seguente è stata scritta nel file applicationHost.config, disponibile in %windir%\system32\inetsrv\config\:

<rewrite>
   <globalRules>
      <rule name="ARR_myParentCacheNodes_loadbalance" patternSyntax="Wildcard" stopProcessing="true">
         <match url="*" />
         <action type="Rewrite" url="http://myParentCacheNodes/{R:0}" />
      </rule>
   </globalRules>
</rewrite>

La regola precedente non è sufficiente per una distribuzione CDN/ECN perché i nodi della cache sono a livelli e il livello successivo di nodi cache (ovvero, i nodi della cache padre) non saprebbero come trovare i server di origine quando è presente una mancata cache nel livello della cache padre.

Questa procedura dettagliata risolve il problema avendo il mapping del nodo della cache figlio al server di origine prima che la richiesta venga indirizzata al nodo cache padre. Esistono due modi più comuni in cui i server di origine vengono mappati in base all'URL ricevuto dal nodo della cache figlio:

  1. Il cliente della rete CDN/ECN viene specificato come sottodominio. In questo caso, è possibile che siano presenti molte associazioni di nomi host allo stesso indirizzo IP del nodo della cache figlio.
    Ad esempio, http://customer1.mycnd.net/, http://customer2.mycdn.net/e così via.
  2. Il cliente della rete CDN/ECN viene specificato come primo percorso nell'URL.
    Ad esempio, http://static.mycdn.net/customer1/, http://static.mycdn.net/customer2/e così via.

In questa procedura dettagliata viene usato il primo esempio per la dimostrazione. Le regole simili possono essere scritte anche per abilitare il secondo scenario.

  1. Definire le mappe di riscrittura dell'URL che possono essere usate per cercare il nome host del server di origine. Avviare Gestione IIS.

  2. Selezionare e espandere la radice del server. Si tratta del nodo cache figlio (edge).

    Screenshot che mostra il nodo della cache figlio espanso.

  3. Fare doppio clic su URL Riscrivere.

  4. Nel riquadro Azioni fare clic su Visualizza riscrivere Mappe.

    Screenshot del riquadro Azioni che mostra l'opzione Visualizza mappe di riscrittura.

  5. Nel riquadro Azioni fare clic su Aggiungi mappa di riscrittura.

    Screenshot del riquadro Azioni che mostra l'opzione Aggiungi mappa di riscrittura.

  6. Nella finestra di dialogo Aggiungi mappa riscrittura assegnare un nome alla mappa di riscrittura, OriginServers.

    Screenshot della finestra di dialogo Aggiungi mappa di riscrittura che mostra OriginServers nella casella di input.

  7. Nella mappa di riscrittura si identifica in modo esplicito il mapping tra il nome host ricevuto dal nodo della cache figlio e i nomi host di origine corrispondenti. Nel riquadro Azioni fare clic su Aggiungi voce mapping....

    Screenshot del menu Azioni che mostra l'opzione Aggiungi voce mapping.

  8. Nella finestra di dialogo Aggiungi voce mapping aggiungere il nome host ricevuto dal nodo della cache figlio e il nome host di origine. Nell'esempio seguente il nodo della cache figlio ARR riceve customer1.mycdn.net come intestazione del nome host. Il server di origine corrispondente è images.customer1.com.

    Screenshot della finestra di dialogo Aggiungi voce mapping con le informazioni di esempio immesse.

  9. Ripetere il passaggio 8 quante volte necessario per includere tutti i clienti a cui la rete CDN/ECN fornisce servizi. Questo è il modo in cui è possibile gestire l'elenco esplicito dei clienti per garantire che il servizio sia fornito solo ai clienti.

  10. Per bloccare i clienti che non si trovano nell'elenco della mappa di riscrittura, impostare il valore predefinito di questa mappa di riscrittura su #, che è un carattere non valido che non può essere usato come parte dell'intestazione del nome host, per RFC. Nel riquadro Azioni fare clic su Modifica impostazioni mappa....

    Screenshot del menu Azioni.

  11. Nella finestra di dialogo Modifica mappa riscrittura immettere # come valore predefinito per questa mappa di riscrittura.

    Screenshot della finestra di dialogo Modifica mappa riscrittura. Il carattere # è nel valore predefinito da usare quando la chiave non viene trovata nella casella di input della mappa. OK è selezionato.

  12. Riscrivere l'intestazione del nome host con le regole configurate nella mappa di riscrittura di OriginServers. Quando si verifica un errore nella cache e la richiesta viene indirizzata al nodo della cache padre, la richiesta avrà il nome host corrispondente al server di origine. Questo è il motivo per cui, per la maggior parte, il nodo cache padre è configurato come proxy di inoltro. Quando si verifica una mancanza di cache nel nodo della cache padre, la richiesta viene semplicemente instradata al server di origine in base all'intestazione del nome host ricevuta dal nodo cache padre.

  13. Nell'interfaccia utente di riscrittura URL individuare la regola. In questa procedura dettagliata il nome della regola deve essere ARR_myParentCacheNodes_loadbalance.

    Screenshot che mostra le impostazioni della regola di esempio.

  14. Selezionare la regola e nel riquadro Azioni fare clic su Modifica.

  15. Fare clic su Aggiungi condizioni per aggiungere due regole.

  16. La prima regola userà la mappa di riscrittura OriginServers creata nel passaggio 6. La regola seguente corrisponderà all'intestazione host come chiave per corrispondere alle voci in OriginServers:

    Screenshot della finestra di dialogo Aggiungi condizione che mostra i dati del server di origine con Pattern è impostato su *.

  17. La seconda regola imposta il valore predefinito come # quando l'intestazione host non corrisponde alle voci in OriginServers. Come indicato in precedenza, # non è un carattere valido e non può essere usato come nome host. La regola seguente viene usata in seguito per garantire che solo i clienti (rappresentati dai nomi host) in OriginServer siano gestiti da ARR:

    Screenshot della finestra di dialogo Aggiungi condizione con Pattern impostata sul valore predefinito.

  18. Selezionare Traccia gruppi di acquisizione tra le condizioni.

  19. Per impostare i valori di HTTP_HOST in base alle condizioni precedenti, fare clic su Variabili server.

  20. Immettere i valori seguenti per reimpostare HTTP_HOST:

    Screenshot della finestra di dialogo Variabili server.

  21. Fare clic su OK per salvare le modifiche.

  22. Nel riquadro Azioni fare clic su Applica per salvare le modifiche.

  23. Per verificare che le regole corrette siano state scritte, aprire il file applicationHost.config tramite Blocco note. Il file di configurazione si trova in %windir%\system32\inetsrv\config\.

  24. Individuare la regola di riscrittura DELL'URL per la server farm, myParentCacheNodes. Il messaggio sarà simile al seguente:

    <rewrite>
       <globalRules>
          <rule name="ARR_myParentCacheNodes_loadbalance" patternSyntax="Wildcard" stopProcessing="true">
             <match url="*" />
             <conditions trackAllCaptures="true">
                <add input="{OrigServers:{HTTP_HOST}}" pattern="*" />
                <add input="{C:1}" negate="true"  pattern="#" />
             </conditions>
             <serverVariables>
                <set name="HTTP_HOST" value="{C:1}" replace="true" />
             </serverVariables>
             <action type="Rewrite" url="http://myParentCacheNodes/{R:0}" />
          </rule>
       </globalRules>
    </rewrite>
    
  25. Fortemente consigliato. Per bloccare le richieste che non corrispondono ai nomi host definiti nella mappa di riscrittura precedente, creare una regola di riscrittura URL predefinita che invia una risposta 400 a tali richieste.

    Avviare Gestione IIS.

  26. Selezionare e espandere la radice del server. Si tratta del nodo cache figlio (edge).

    Screenshot che mostra un server espanso.

  27. Fare doppio clic su URL Riscrivere.

  28. Nel riquadro Azioni fare clic su Aggiungi regole.

    Screenshot del menu Azioni che mostra l'opzione Aggiungi regole.

  29. Nella finestra di dialogo Aggiungi regole selezionare Regola vuota.

    Screenshot della finestra di dialogo Aggiungi regole con regola vuota selezionata.

  30. Immettere i valori seguenti e quindi salvare la regola:
    Nome: Non il mio cliente
    Utilizzando: Caratteri jolly
    Modello: *
    Tipo di azione: Risposta personalizzata
    Codice di stato: 400
    Codice di stato secondario: 0

    Screenshot che mostra la finestra di dialogo delle variabili regole.

  31. L'ordine delle regole è importante. Le regole di riscrittura DELL'URL vengono elaborate dall'alto verso il basso. In questo esempio, se il nome host in ingresso corrisponde a uno dei nomi host specificati nella mappa di riscrittura precedente, viene eseguita la prima regola, ARR_myParentCacheNodes_Loadbalance. Se il nome host in ingresso non corrisponde a nessuno dei nomi host definiti nella mappa di riscrittura precedente, la seconda regola, Non il cliente, viene eseguita.

    Screenshot che mostra 2 regole.

  32. La configurazione del nodo cache figlio/edge è completa.

Per semplificare la configurazione di nodi della cache figlio aggiuntivi, è possibile usare una configurazione condivisa in modo che sia disponibile un'unica posizione per gestire la configurazione del nodo della cache figlio. In caso contrario, le modifiche di configurazione precedenti devono essere apportate singolarmente in tutti i nodi della cache figlio nell'ambiente CDN/ECN. Per altre informazioni sulla configurazione condivisa, vedere l'articolo Configurazione condivisa .

Configurazione del nodo cache padre

Esistono due modi per configurare ARR come nodo cache padre:

  1. Configurare ARR come proxy di inoltro.
  2. Configurare ARR come proxy "inverso" con la mappa di riscrittura.

Anche con la seconda opzione precedente, la riscrittura esegue semplicemente la riscrittura del nome host in ingresso con lo stesso valore, rendendo in modo efficace un proxy forward. La mappa di riscrittura viene usata per configurare in modo esplicito l'elenco di nomi host che la cache padre accetterà, in modo simile al modo in cui il nodo della cache figlio è configurato in precedenza. In questa seconda parte della procedura dettagliata, il nodo cache padre verrà configurato usando la prima opzione come proxy di inoltro semplice.

Passaggio 1 - Configurare la cache dei dischi

Configurare e abilitare la cache dei dischi seguendo l'articolo Configura e Abilita cache disco nell'articolo Routing richieste applicazione .

Passaggio 2 - Configurare ARR come proxy di inoltro

  1. Abilitare ARR come proxy. Avviare Gestione IIS.

  2. Questa configurazione non comporta alcuna server farm. Tutte le impostazioni vengono eseguite a livello di server.

    Screenshot che mostra il server con selezioni espanse. Il nome del server è evidenziato.

  3. Fare doppio clic su Cache di routing delle richieste applicazione.

    Screenshot che mostra le connessioni e i riquadri principali. Il riquadro principale mostra le icone della funzione del server.

  4. Nel riquadro Azioni fare clic su Impostazioni proxy server.

    Screenshot del riquadro Azioni che mostra l'opzione Impostazioni proxy server.

  5. Selezionare la casella di controllo Abilita proxy e quindi fare clic su Applica. È stato appena abilitato ARR come proxy a livello di server.

  6. Per trasformare ARR in un proxy di inoltro, fare clic sul nodo del server nel riquadro di spostamento.

    Screenshot che mostra le opzioni di spostamento.

  7. Fare doppio clic su URL Riscrivere.

  8. Nel riquadro Azioni fare clic su Aggiungi regole....

    Screenshot del riquadro Azioni che mostra l'opzione Aggiungi regole.

  9. Nella finestra di dialogo Aggiungi regole selezionare Regola vuota.

    Screenshot che mostra la finestra di dialogo Aggiungi regole. L'icona Regola vuota è evidenziata.

  10. Immettere i valori seguenti e quindi salvare la regola:
    Nome: Proxy di inoltro
    Utilizzando: Caratteri jolly
    Modello: *
    Condizioni:
    Input: {HTTP_HOST}
    Digitare: Corrisponde al modello
    Modello: *
    Tipo di azione: Riscrivere
    Url di riscrittura: http://{C:1}/{R:0}

    Screenshot che mostra la finestra di dialogo con i valori di esempio.

  11. La configurazione del nodo cache padre è completata.

    Per semplificare la configurazione di nodi della cache padre aggiuntivi, è possibile usare una configurazione condivisa in modo che sia disponibile un'unica posizione per gestire la configurazione del nodo della cache padre. In caso contrario, le modifiche di configurazione precedenti devono essere apportate singolarmente in tutti i nodi della cache padre nell'ambiente CDN/ECN. Per altre informazioni sulla configurazione condivisa, vedere l'articolo seguente.

Riepilogo

Sono stati configurati correttamente i nodi della cache figlio e i nodi della cache padre in un ambiente CDN/ECN con gerarchia cache a 2 livelli usando regole di riscrittura URL avanzate. Per verificare la funzionalità, è possibile seguire il passaggio 4 e il passaggio 5 nell'articolo Configura e Abilita cache disco nel routing delle richieste di applicazioni . Se si verificano errori, abilitare regole di traccia richieste non riuscite seguendo la procedura descritta nell'articolo Uso delle regole di traccia richieste non riuscite per risolvere i problemi relativi al routing delle richieste di applicazione .

Per altre procedure dettagliate di ARR versione 2, vedere l'articolo Panoramica del routing delle richieste di applicazione versione 2 .