Condividi tramite


Bilanciamento del carico HTTP con il routing delle richieste dell'applicazione

di IIS Team

Panoramica

In questo argomento viene illustrato come configurare il routing delle richieste dell'applicazione per bilanciare il carico delle richieste HTTP per ottenere disponibilità elevata e scalabilità. La procedura dettagliata evidenzia anche un paio di funzionalità di base sul modo in cui Il routing delle richieste di applicazioni monitora l'integrità dei server di contenuto e affinizza le richieste da un client a un server di contenuto.

Obiettivo

Per bilanciare il carico delle richieste HTTP in diversi server di contenuto usando il routing delle richieste di applicazione, come illustrato di seguito:

Diagramma del routing delle richieste dell'applicazione in diversi server di contenuto.

Prerequisiti

Questa procedura dettagliata richiede i prerequisiti seguenti:

  • IIS 7.0 o versione successiva in Windows 2008 (qualsiasi SKU) o versione successiva.
  • Moduli dipendenti e versione 1 del routing delle richieste delle applicazioni Microsoft.
  • Almeno due server di contenuto con siti e applicazioni funzionanti.

Seguire i passaggi descritti in questo documento per installare Il routing delle richieste di applicazione.

Un altro prerequisito è che il lettore ha definito e configurato una server farm usando i passaggi descritti in Definire e configurare un gruppo di server ARR (Application Request Routing).

Passaggio 1- Verificare le regole di riscrittura URL

A condizione che la server farm sia stata creata usando i passaggi descritti in Definire e configurare un gruppo di server ARR (Application Request Routing), le regole di riscrittura URL sono già state create per un semplice scenario di bilanciamento del carico.

Per verificare le regole di riscrittura url usando l'interfaccia utente:

  1. Avviare Gestione IIS.
  2. Selezionare la server farm myServerFarm creata in Definire e configurare un gruppo di server ARR (Application Request Routing).
  3. Vengono visualizzate le icone seguenti:
    Screenshot della server farm. L'icona Test integrità, l'icona bilanciamento del carico, l'icona Monitoraggio e gestione, l'icona Proxy, l'icona Regole di routing e l'icona Affinità server.
  4. Fare doppio clic su Regole di routing.
  5. Verificare che la casella di controllo Usa riscrittura URL per controllare le richieste in ingresso sia selezionata.
    Screenshot della pagina Regole di routing. Le caselle di controllo accanto a Use U R L Rewrite to inspect incoming requests and Enable S L offload (Abilita offload S S L) sono entrambe controllate.
  6. L'offload SSL è abilitato per impostazione predefinita. Quando questa funzionalità è abilitata, tutte le comunicazioni tra il server ARR e i server applicazioni vengono eseguite in testo non crittografato, anche per le richieste HTTPS dai client al server ARR. Quando sia il server ARR che i server applicazioni vengono distribuiti all'interno di una rete attendibile, ad esempio all'interno dello stesso data center, l'abilitazione dell'offload SSL non sacrifica la sicurezza. Inoltre, l'abilitazione di questa funzionalità può contribuire ulteriormente a ottimizzare le risorse del server nei server applicazioni, poiché non è necessario dedicare cicli di crittografia e decrittografia di richieste e risposte.
    Per disabilitare l'offload SSL, deselezionare la casella di controllo Abilita offload SSL e quindi fare clic su Applica.
  7. Aprire un browser e inviare diverse richieste al server ARR.
  8. Per verificare che le richieste siano bilanciate equamente tra i server applicazioni, selezionare myServerFarm. Fare doppio clic su Monitoraggio e gestione.
    Screenshot della server farm. L'icona Monitoraggio e gestione viene visualizzata tra le altre icone.
  9. Nella visualizzazione dashboard verificare che le richieste vengano distribuite uniformemente.
    Screenshot della pagina delle funzionalità monitoraggio e gestione. Vengono visualizzate le statistiche di runtime del routing delle richieste dell'applicazione.

Per verificare le regole di riscrittura URL tramite la riga di comando:

  1. Aprire un prompt dei comandi con privilegi di amministratore .

  2. Accedere a %windir%\system32\inetsrv.

  3. Per verificare che le regole di riscrittura URL siano state create correttamente, immettere appcmd.exe list config -section:system.webServer/rewrite/globalRules. Restituisce l'oggetto globalRules simile al seguente:

    <system.webServer>
        <rewrite>
            <globalRules>
                <rule name="ARR_myServerFarm_loadbalance" patternSyntax="Wildcard"
                stopProcessing="true">
                    <match url="*" />
                    <conditions>
                    </conditions>
                    <action type="Rewrite" url="http://myServerFarm/{R:0}" />
                </rule>
            </globalRules>
        </rewrite>
    </system.webServer>
    
  4. Per disabilitare l'offload SSL, rimuovere prima tutte le regole di riscrittura URL:

    appcmd.exe clear config -section:system.webServer/rewrite/globalRules
    

    Creare quindi le regole di riscrittura URL per inoltrare il traffico HTTPS. In particolare, con questa regola, ARR inoltra le richieste usando SSL se le richieste in ingresso sono HTTPS:

    appcmd.exe set config -section:system.webServer/rewrite/globalRules
    /+"[name='ARR_myServerFarm_loadbalance_SSL',patternSyntax='Wildcard',stopProcessing='True']"
    /commit:apphost
    
    appcmd.exe set config -section:system.webServer/rewrite/globalRules
    /[name='ARR_myServerFarm_loadbalance_SSL',patternSyntax='Wildcard',stopProcessing='True'].match.url:"*"
    /commit:apphost
    
    appcmd.exe set config -section:system.webServer/rewrite/globalRules
    /+"[name='ARR_myServerFarm_loadbalance_SSL',patternSyntax='Wildcard',stopProcessing='True'].conditions.[input='{HTTPS}',pattern='On']"
    /commit:apphost
    
    appcmd.exe set config -section:system.webServer/rewrite/globalRules
    /[name='ARR_myServerFarm_loadbalance_SSL',patternSyntax='Wildcard',stopProcessing='True'].action.type:"Rewrite"
    /[name='ARR_myServerFarm_loadbalance_SSL',patternSyntax='Wildcard',stopProcessing='True'].action.url:"https://myServerFarm/{R:0}"
    /commit:apphost
    

    Creare infine le regole di riscrittura URL per inoltrare il traffico HTTP in testo non crittografato ai server applicazioni:

    appcmd.exe set config -section:system.webServer/rewrite/globalRules
    /+"[name='ARR_myServerFarm_loadbalance',patternSyntax='Wildcard',stopProcessing='True']"
    /commit:apphost
    
    appcmd.exe set config -section:system.webServer/rewrite/globalRules
    /[name='ARR_myServerFarm_loadbalance',patternSyntax='Wildcard',stopProcessing='True'].match.url:"*"
    /commit:apphost
    
    appcmd.exe set config -section:system.webServer/rewrite/globalRules
    /[name='ARR_myServerFarm_loadbalance',patternSyntax='Wildcard',stopProcessing='True'].action.type:"Rewrite"
    /[name='ARR_myServerFarm_loadbalance',patternSyntax='Wildcard',stopProcessing='True'].action.url:"http://myServerFarm/{R:0}"
    /commit:apphost
    
  5. Per verificare che le regole di riscrittura URL siano state create correttamente con l'offload SSL disabilitato, immettere appcmd.exe list config -section:system.webServer/rewrite/globalRules. Restituisce l'oggetto globalRules simile al seguente:

    <system.webServer>
        <rewrite>
            <globalRules>
                <rule name="ARR_myServerFarm_loadbalance_SSL" patternSyntax="Wildcard"
                stopProcessing="true">
                    <match url="*" />
                    <conditions>
                    <add input="{HTTPS}" pattern="On" />
                    </conditions>
                    <action type="Rewrite" url="https://myServerFarm/{R:0}" />
                </rule>
                <rule name="ARR_myServerFarm_loadbalance" patternSyntax="Wildcard"
                stopProcessing="true">
                    <match url="*" />
                    <conditions>
                    </conditions>
                    <action type="Rewrite" url="http://myServerFarm/{R:0}" />
                </rule>
            </globalRules>
        </rewrite>
    </system.webServer>
    

Passaggio 2: Configurare il monitoraggio del controllo integrità

Application Request Routing monitora l'integrità dei server di contenuto in due modi:

  • Tramite il traffico live
  • Tramite un test esplicito dell'URL

Il test del traffico in tempo reale viene eseguito automaticamente per impostazione predefinita quando le richieste vengono effettuate al routing delle richieste dell'applicazione. Il test esplicito dell'URL è un test aggiuntivo che può essere usato con il test del traffico in tempo reale. In questa sezione la procedura dettagliata illustra come configurare il test esplicito degli URL.

Per configurare il monitoraggio del controllo integrità usando l'interfaccia utente:

  1. Il test dell'URL richiede un URL specifico da testare. Per soddisfare questo requisito, usare Blocco note per creare un file di testo denominato healthCheck.txt contenente la frase "I am healthy".
  2. Posizionare il file healthCheck.txt nei server applicazioni.
  3. Verificare che il rendering del healthCheck.txt sia corretto aprendo la pagina in un browser.
  4. In Gestione IIS selezionare la server farm myServerFarm. Vengono visualizzate le icone seguenti:
    Screenshot della server farm. Icona Test integrità, l'icona bilanciamento del carico, l'icona Monitoraggio e gestione e altre icone.
  5. Fare doppio clic su Test integrità.
    Screenshot della pagina della funzionalità Test integrità. Viene visualizzato il test U R L.
  6. Immettere http://(server name or FQDN of ARR server)/healthCheck.txt come valore URL .
  7. Immettere integro come valore di corrispondenza della risposta . La corrispondenza della risposta è un test facoltativo per assicurarsi che il corpo della risposta contenga la stringa prevista. In questo caso, poiché healthCheck.txt contiene la frase "I am healthy.", la corrispondenza di risposta cercherà la parola "integro".
  8. Fare clic su Applica per salvare le modifiche.
  9. Per verificare la funzionalità del monitoraggio del controllo integrità, arrestare il sito monitorato in uno dei server applicazioni. Poiché il valore Interval (seconds) è impostato su 30 secondi, attendere 30 secondi per il controllo integrità successivo.
  10. Dopo aver aspettato 30 secondi, inviare diverse richieste al server ARR.
  11. Per verificare che tutte le richieste vengano inviate ai server integri, fare doppio clic su Monitoraggio e gestione e quindi aggiornare il dashboard usando il tasto F5. Si noti che le statistiche di runtime sono state reimpostate. Questo si verifica per motivi strutturali. È possibile inviare richieste aggiuntive e aggiornare il dashboard in base alle esigenze.
    Screenshot della pagina delle funzionalità monitoraggio e gestione. Vengono visualizzate le statistiche di runtime.
  12. Il monitoraggio dell'integrità viene usato anche per rilevare quando un server non integro diventa integro. Per verificare questa funzionalità, avviare il sito arrestato nel passaggio 9. Anche in questo caso, poiché il valore Intervallo (secondi) è impostato su 30 secondi, attendere 30 secondi per il controllo integrità successivo.
  13. Dopo aver aspettato 30 secondi, inviare diverse richieste al server ARR.
  14. Per verificare che le richieste vengano distribuite uniformemente tra i server, aggiornare il dashboard in Gestione IIS. Si noti che le statistiche di runtime sono state reimpostate. Questo si verifica per motivi strutturali. È possibile inviare richieste aggiuntive e aggiornare il dashboard in base alle esigenze.

Per configurare il monitoraggio del controllo integrità tramite la riga di comando:

  1. Aprire un prompt dei comandi con privilegi di amministratore .

  2. Accedere a %windir%\system32\inetsrv.

  3. Per impostare l'URL su http://(server name or FQDN of ARR server)/healthCheck.txt con io sono integro. Come stringa da trovare, immettere:

    appcmd.exe set config -section:webFarms
    /[name='myServerFarm1'].applicationRequestRouting.healthCheck.url:"http://(server
    name or FQDN of ARR server)/healthCheck.txt "
    /[name='myServerFarm1'].applicationRequestRouting.healthCheck.responseMatch:"I am
    healthy." /commit:apphost
    

Passaggio 3: Configurare l'affinità client

Application Request Routing fornisce una funzionalità di affinità client che esegue il mapping di un client a un server di contenuto dietro il routing delle richieste di applicazione per la durata di una sessione client. Quando questa funzionalità è abilitata, l'algoritmo di bilanciamento del carico viene applicato solo per la prima richiesta dal client. Da questo punto in poi, tutte le richieste successive dello stesso client verrebbero instradate allo stesso server di contenuto per la durata della sessione client. Questa funzionalità è utile se l'applicazione nel server del contenuto è con stato e le richieste del client devono essere instradate allo stesso server di contenuto perché la gestione della sessione non è centralizzata.

Per configurare l'affinità client usando l'interfaccia utente:

  1. Avviare Gestione IIS.
  2. Selezionare la server farm myServerFarm creata in Definire e configurare un gruppo di server ARR (Application Request Routing).
  3. Vengono visualizzate le icone seguenti:
    Screenshot della finestra di dialogo Server Farm e delle icone disponibili nel gruppo di server.
  4. Fare doppio clic su Affinità server.
  5. Per abilitare l'affinità client, selezionare la casella di controllo Affinità client e quindi fare clic su Applica.
    Screenshot della pagina della funzionalità Affinità server. Viene visualizzata la casella di controllo accanto a Affinità client. Nella casella Nome cookie viene visualizzato il testo Affinità R R.
    Application Request Routing usa un cookie per abilitare l'affinità client. Il nome del cookie verrà usato per impostare il cookie nel client. Detto questo, il client deve accettare cookie per il corretto funzionamento dell'affinità client.
  6. Per verificare la funzionalità dell'affinità client, inviare diverse richieste al server ARR. Aggiornare il dashboard in Gestione IIS (monitoraggio e gestione). Verificare che le statistiche di runtime vengano modificate solo per uno dei server applicazioni in cui è stata eseguita l'affinità del client. È possibile inviare richieste aggiuntive e aggiornare il dashboard in base alle esigenze.

Per configurare l'affinità client tramite la riga di comando:

  1. Aprire un prompt dei comandi con privilegi di amministratore .

  2. Accedere a %windir%\system32\inetsrv.

  3. Per abilitare l'affinità client, immettere:

    appcmd.exe set config -section:webFarms
    /[name='myServerFarm1'].applicationRequestRouting.affinity.useCookie:"True"
    /commit:apphost
    

Passaggio 4 - Non consentire nuove connessioni

Non consentire nuove connessioni in un server è un modo normale per uscire dal server dall'ambiente della server farm. È più significativo quando la funzionalità di affinità client è in uso, perché il routing delle richieste dell'applicazione rispetta le sessioni esistenti quando non consente nuove connessioni. Ovvero, quando un client è affinizzato al server che non consente nuove connessioni, il client continuerà a essere instradato allo stesso server e, pertanto, non vi è alcun impatto sul client. Tuttavia, nessun nuovo client verrà instradato al server che non consente nuove connessioni.

Per impedire nuove connessioni tramite l'interfaccia utente:

  1. Usando l'installazione del passaggio 3 precedente, identificare il server a cui è stata eseguita l'affinità del client.
  2. Selezionare la server farm myServerFarm creata in Definire e configurare un gruppo di server ARR (Application Request Routing).
  3. Vengono visualizzate le icone seguenti:
    Screenshot della server farm. Icona Test integrità, l'icona bilanciamento del carico, l'icona Monitoraggio e gestione, l'icona Proxy e altre icone disponibili nella Server Farm.
  4. Fare doppio clic su Monitoraggio e gestione.
  5. Selezionare il server in cui è stata eseguita l'affinità del client. Nel riquadro Azioni fare clic su Disallow New Connessione ions (Non consentire nuove Connessione).
  6. Nella finestra di dialogo di conferma fare clic su .
    Screenshot della finestra di dialogo Routing richieste applicazione. Testo Non consentire nuove connessioni al server selezionato? viene visualizzato. L'opzione Sì è evidenziata.
  7. Per verificare che le richieste dei client continuino a essere instradate al server affinizzato, che ora non consente nuove connessioni, inviare diverse richieste al server ARR. Aggiornare il dashboard in Gestione IIS. Verificare che le statistiche di runtime vengano modificate solo per il server in cui è stata eseguita l'affinità del client. È possibile inviare richieste aggiuntive e aggiornare il dashboard in base alle esigenze.
  8. Per verificare che i nuovi client non vengano instradati al server che non consente nuove connessioni, rimuovere il cookie impostato da Application Request Routing chiudendo e riavviando il browser.
  9. Inviare diverse richieste al server ARR. Aggiornare il dashboard in Gestione IIS. Verificare che le statistiche di runtime vengano modificate solo per i server disponibili. In particolare, verificare che le statistiche di runtime per il server che non consentano nuove connessioni non vengano modificate. È possibile inviare richieste aggiuntive e aggiornare il dashboard in base alle esigenze.

Riepilogo

È stata configurata una serie di impostazioni per il routing delle richieste di applicazione per aumentare il numero di istanze e distribuire il carico in modo uniforme. Per funzionalità di routing più avanzate che usano il routing delle richieste dell'applicazione, vedere Uso del routing delle richieste dell'applicazione.