Raggiungimento della disponibilità elevata e della scalabilità - ARR e hardware Load Balancer

di Won Yoo

Raggiungimento della disponibilità elevata e della scalabilità:
Microsoft Application Request Routing (ARR) per IIS 7.0 e versioni successive e Hardware Load Balancer.

Microsoft Corporation F5
Autore: Won Yoo Autore: Ryan Korock
Pubblicato: 13 novembre 2008

Contenuto

Questo documento fornisce indicazioni prescrittive sul modo in cui il routing delle richieste di applicazione (ARR) può essere usato con un servizio di bilanciamento del carico hardware per ottenere disponibilità elevata e scalabilità. Il servizio di bilanciamento del carico BIG-IP F5 viene usato in questo documento per illustrare la relazione di lavoro tra ARR e i servizi di bilanciamento del carico hardware.

Panoramica

Microsoft Application Request Routing (ARR) per IIS 7.0 e versioni successive è un modulo di routing basato su proxy che inoltra le richieste HTTP ai server di contenuto in base a intestazioni HTTP, variabili del server e algoritmi di bilanciamento del carico. Una distribuzione ARR tipica è illustrata nel diagramma seguente:

Diagramma di una tipica distribuzione di R R. R R offre disponibilità elevata e scalabilità per i server di contenuto.

Anche se ARR offre disponibilità elevata e scalabilità per i server di contenuto, la distribuzione complessiva non è a disponibilità elevata o scalabilità perché:

  • ARR è il singolo punto di errore.
  • La scalabilità dei server di contenuto è limitata dalla capacità massima di un server ARR.

Per superare queste sfide, gli amministratori possono prendere in considerazione l'uso di più server ARR con servizi di bilanciamento del carico hardware, ad esempio F5 BIG-IP. ARR può essere distribuito in modalità attiva/passiva per ottenere solo disponibilità elevata o in modalità attiva/attiva per ottenere disponibilità elevata e scalabilità. Questo white paper descrive in che modo È possibile distribuire insieme ARR e F5 BIG-IP per abilitare gli scenari ARR principali, ottenendo al tempo stesso disponibilità elevata e scalabilità generali.

Uso del routing delle richieste dell'applicazione e F5 BIG-IP

ARR viene compilato come modulo su IIS ed è progettato per prendere decisioni di routing al livello 7 (applicazione). In modo più accurato, ARR si basa su un altro modulo IIS, URL Rewrite, per controllare le intestazioni delle richieste HTTP in ingresso e le variabili del server per prendere le decisioni di routing. In base a questa progettazione, gli amministratori possono scrivere regole di routing intelligenti in base alle informazioni a livello di applicazione, ad esempio:

  • Nome host (HTTP_HOST): instradare il traffico a server di contenuto diversi in base al nome host.
  • Risorsa richiesta (URL): in base alle estensioni di file, determinare se le risorse richieste sono per contenuto statico o contenuto dinamico e indirizzare le richieste di conseguenza.
  • Informazioni client (HTTP_USER_AGENT): in base al tipo e alla versione del browser, instradare le richieste ai server di contenuto appropriati.
  • Intestazioni personalizzate (impostate come cookie dalle applicazioni): instradare il traffico in base alle informazioni sui cookie impostate dalle applicazioni, ad esempio preferenza utente o ID utente.

Di seguito sono riportati solo alcuni esempi. Per un elenco completo delle intestazioni HTTP e delle variabili del server, vedere Appendice A.

La funzionalità di livello 3 e livello 4 di F5 Big-IP consente di prendere decisioni di routing basate sul livello 7, ad esempio intestazioni HTTP e variabili del server. Allo stesso tempo, ARR non fornisce funzionalità di distribuzione a tolleranza di errore per se stesso e deve basarsi su altre tecnologie e soluzioni complementari per ottenere la disponibilità elevata per il livello ARR, come illustrato di seguito:

Diagramma di F cinque big dash I layer tre e quattro funzionalità. F cinque big dash I layer tre e layer quattro complimento A R R forza nel prendere decisioni di routing in base al livello sette.

Scenario 1: routing basato su HTTP e bilanciamento del carico

Lo scenario di routing e bilanciamento del carico basato su HTTP consente un'architettura di distribuzione a 3 livelli che prevede:

  • Livello 1 (Web): fornisce due scopi per l'elaborazione di contenuto statico e routing e bilanciamento del carico delle richieste dinamiche rimanenti ai server di livello 2.
  • Livello 2 (applicazione): elabora il contenuto dinamico basato sulla logica di business.
  • Livello 3 (dati): archivia i dati.

Il diagramma seguente illustra la distribuzione a 3 livelli:

Diagramma che illustra la distribuzione a tre livelli. Mostra una regola di routing che differenzia il contenuto statico dal contenuto dinamico.

Anche se l'esempio precedente mostra una regola di routing che distingue il contenuto statico dal contenuto dinamico, un altro scenario comune consiste nel distinguere le richieste di presentazione dalle richieste del servizio Web.

Opzione 1: Attivo/Passivo

In modalità Attiva/Passiva, in genere sono presenti due server ARR in cui un server elabora le richieste mentre l'altro server è un server di failover. Come indicato in precedenza, sebbene questa configurazione raggiunga la disponibilità elevata rimuovendo il singolo punto di errore, non si tratta di una soluzione con scalabilità orizzontale perché la capacità aggregata dei server di contenuto è limitata dalla capacità massima di un server ARR.

In questa configurazione, poiché due server ARR sono configurati allo stesso modo, viene usata una configurazione condivisa. F5 BIG-IP è configurato in modo che instrada tutte le richieste al server ARR attivo e instrada solo le richieste al server ARR passivo quando necessario.

Ad eccezione della funzionalità di affinità del nome host in ARR, non sono presenti informazioni sullo stato di runtime che devono essere condivise tra i due server ARR. Pertanto, per questo scenario, non è necessaria alcuna configurazione speciale nei server ARR né in F5 BIG-IP. Anche se si usa la funzionalità di affinità server in ARR, le informazioni sullo stato affinizzate verranno rese disponibili al server passivo tramite un cookie nell'intestazione della richiesta quando F5 BIG-IP instrada le richieste al server precedentemente passivo ma ora attivo.

Questo scenario è completamente supportato nella versione 1 di ARR.

Configurazione di ARR

Passaggio 1: Abilitare la configurazione condivisa in due server ARR.

  • Seguire la procedura descritta in questo documento per configurare la configurazione condivisa in IIS.

Passaggio 2: Configurare l'architettura di distribuzione a 3 livelli usando ARR.

  • Seguire i passaggi descritti in questo documento per configurare ARR nell'architettura di distribuzione a 3 livelli.

  • A livello generale, il documento precedente descrive:

    • Come rendere disponibile il contenuto statico nel server ARR.
    • Come scrivere regole di riscrittura URL per il contenuto statico in modo che vengano gestite direttamente dal server ARR.
    • Come scrivere regole di riscrittura URL per il contenuto dinamico in modo che vengano inoltrate ai server applicazioni.

Configurazione F5 BIG-IP

In questo scenario si creerà un server virtuale che bilancia il carico in un pool di due o più server ARR. Il metodo di bilanciamento del carico selezionato deve inviare tutto il traffico al server ARR primario fino a quando non diventa non disponibile. A questo punto, big-IP LTM deve inviare tutto il traffico al server ARR secondario.

Passaggio 1: Configurare il pool di server ARR.

  • Nella sezione Traffico locale fare clic su Pool. Fare quindi clic sul pulsante Crea per creare un pool.
  • Qualsiasi nome univoco funzionerà per il pool; l'esempio usa ARR_Pool.
  • Per Monitoraggio integrità, è possibile usare un monitoraggio HTTP personalizzato o il monitoraggio HTTP predefinito.
  • È possibile lasciare il metodo di bilanciamento del carico impostato su Round Robin. In questo scenario, poiché è presente solo un server ARR attivo e passivo, il bilanciamento del carico non viene usato.
  • Assicurarsi di abilitare l'attivazione del gruppo di priorità. In questo modo viene configurato BIG-IP per inviare il traffico ai server con il valore di priorità più alto. Quando tali server non sono disponibili, BIG-IP invia il traffico al server ARR con il valore di priorità più alto successivo.
  • In questo scenario, il server ARR alla versione 10.0.0.1 ha un valore di priorità 1 e 10.0.0.2 ha un valore di priorità pari a 2. Tutto il traffico verrà inviato alla versione 10.0.0.2 fino a quando non scende, quindi il traffico verrà inviato a 10.0.0.1.

Screenshot della pagina Web Big dash I P. Nella casella Monitoraggi integrità in Attivo h t t p è evidenziato. Nella casella Nuovi membri il valore di priorità del server R R è di dieci punti zero punto zero punto 1.

Passaggio 2: Configurare il pool di server ARR.

  • Nella sezione Traffico locale fare clic su Server virtuali. Fare quindi clic sul pulsante Crea per creare un server virtuale.
  • Qualsiasi nome univoco funzionerà per il server virtuale; l'esempio usa ARR_VS.
  • Per Destinazione, è possibile usare l'indirizzo IP a cui gli utenti punteranno i browser. In questo esempio specifico viene usato 65.197.145.23. Per la porta di servizio si usa '80'.
  • Per la sezione Tipo di server virtuale sono disponibili diverse opzioni. Poiché si dipende da ARR da instradare, è possibile selezionare HTTP prestazioni, progettato per ottenere prestazioni ottimali.
  • Per Il pool predefinito selezionare il pool creato nel passaggio 1.

Screenshot della pagina F five Big I P. Nella casella Nome viene scritto il carattere di sottolineatura R R V S.

  • A questo punto, dovrebbe essere possibile connettersi a questo server virtuale, che verrà inviato al server ARR appropriato.

Opzione 2: Attivo/Attivo

In modalità Attiva/Attiva è possibile avere due o più server ARR. Questa configurazione consente di ottenere disponibilità elevata e scalabilità, a differenza della modalità Active/Pass, che consente di ottenere solo disponibilità elevata. Come indicato in precedenza, poiché più server ARR sono configurati allo stesso modo, viene usata una configurazione condivisa. F5 BIG-IP è configurato per bilanciare il carico delle richieste in ingresso a tutti i server ARR disponibili e integri, che a sua volta inoltra le richieste ai server di contenuto. Indipendentemente dal fatto che la funzionalità di affinità server venga usata in F5 BIG-IP o meno, non è necessaria alcuna configurazione speciale nei server ARR. Per uno, i server ARR usano una configurazione condivisa in modo che siano configurate allo stesso modo. In secondo luogo, poiché ARR usa un cookie client per archiviare le informazioni sull'affinità del server per il proprio uso, queste informazioni sono disponibili per richiesta e quindi disponibili nei server ARR. Questo scenario è completamente supportato nella versione ARR versione 1.

Configurazione di ARR

La configurazione ARR per Active/Active è identica a quella di Active/Passive. La differenza principale è la configurazione di F5.

Passaggio 1: Abilitare la configurazione condivisa in due server ARR.

  • Seguire la procedura descritta in questo documento per configurare la configurazione condivisa in IIS.

Passaggio 2: Configurare l'architettura di distribuzione a 3 livelli usando ARR.

  • Seguire la procedura descritta in questo documento per configurare ARR nell'architettura di distribuzione a 3 livelli.

  • A livello generale, il documento precedente descrive:

    • Come rendere disponibile il contenuto statico nel server ARR.
    • Come scrivere regole di riscrittura URL per il contenuto statico in modo che vengano gestite direttamente dal server ARR.
    • Come scrivere regole di riscrittura URL per il contenuto dinamico in modo che vengano inoltrate ai server applicazioni.

Configurazione BIG-IP F5

In questo scenario tutti i server ARR disponibili vengono considerati attivi e candidati per il traffico con carico bilanciato. Usare BIG-IP LTM per determinare l'integrità e le prestazioni dei front-end ARR e indirizzare il traffico ai migliori prestazioni.

Passaggio 1: Configurare il pool di server ARR.

  • Nella sezione Traffico locale fare clic su Pool. Fare quindi clic sul pulsante Crea per creare un pool.
  • Qualsiasi nome univoco funzionerà per il pool; gli esempi usano ARR_Pool. - Per Monitoraggio integrità è possibile usare un monitoraggio HTTP personalizzato o il monitoraggio HTTP predefinito. - Poiché sono presenti più server ARR a cui distribuire il traffico, si vuole selezionare un metodo di bilanciamento del carico adatto alle proprie esigenze. Supponendo che tutti i server ARR abbiano caratteristiche hardware simili, un metodo di bilanciamento del carico dinamico, ad esempio il più veloce, osservato o predittivo, darà la distribuzione basata sulle prestazioni.

Screenshot della pagina Web F five Big I P. Nella casella Metodo di bilanciamento del carico viene scelta l'applicazione più veloce.

Passaggio 2: Configurare il server virtuale.

  • Nella sezione Traffico locale fare clic su Server virtuali. Fare quindi clic sul pulsante Crea per creare un server virtuale.
  • Qualsiasi nome univoco funzionerà per il server virtuale; l'esempio usa ARR_VS. - Per la destinazione è possibile usare l'indirizzo IP a cui gli utenti puntano i browser. In questo esempio specifico si usa 65.197.145.23. Per La porta di servizio si usa '80'. - Per la sezione Tipo di server virtuale sono disponibili diverse opzioni. Poiché si dipende da ARR per instradare, è possibile selezionare Performance HTTP, progettato per le migliori prestazioni. - Per il pool predefinito selezionare il pool creato nel passaggio 1.

Screenshot della pagina Web F five Big I P. Nella casella Pool predefinito il pool creato nel passaggio 1, viene selezionato il pool R R.

Scenario 2: Hosting condiviso con affinità di nome host

Questo scenario usa la funzionalità di affinità del nome host in ARR per abilitare una distribuzione di hosting condivisa a:

  • Ridurre la gestione manuale e la manutenzione coinvolti nella distribuzione di hosting condiviso tradizionale.
  • Ottimizzare le risorse del server esistenti garantendo che tutte le risorse del server vengano usate in modo uniforme.
  • Aumentare facilmente l'ambiente.
  • Creare opportunità aziendali per vendere capacità aggiuntiva.

Per altre informazioni sull'hosting condiviso e sull'ARR, vedere questo documento.

Il diagramma seguente illustra l'ambiente di hosting condiviso usando ARR: Diagramma dell'ambiente di hosting condiviso usando R R.

Opzione 1: Attivo/Passivo

Come indicato in precedenza, in modalità Active/Passivo, in genere sono presenti due server ARR in cui un server elabora le richieste mentre l'altro server si trova come server di failover. Sebbene questa configurazione raggiunga la disponibilità elevata rimuovendo il singolo punto di errore, non è una soluzione di scalabilità orizzontale poiché la capacità aggregata dei server di contenuto è limitata dalla capacità massima di un server ARR.

In questa configurazione, poiché vengono configurati due server ARR allo stesso modo, viene usata una configurazione condivisa. F5 BIG-IP è configurato per instradare tutte le richieste al server ARR attivo e instradare solo le richieste al server ARR passivo, se necessario.

La funzionalità di affinità nome host in ARR affinizza le richieste a un determinato server (o un gruppo di server in RC) in base al nome host. Le informazioni sullo stato di runtime del mapping affinizzato tra i nomi host e i server di contenuto vengono archiviati in memoria all'interno di un'istanza di un server ARR. Nella versione ARR versione 1, ARR sfrutta Microsoft External Cache per IIS per condividere e mantenere questo stato di runtime tra più server ARR. Altre informazioni su questo scenario sono disponibili in questo documento.

Questo scenario è completamente supportato nella versione ARR versione 1.

Configurazione di ARR

Passaggio 1: Abilitare la configurazione condivisa in due server ARR.

  • Seguire la procedura descritta in questo documento per configurare la configurazione condivisa in IIS.

Passaggio 2: Configurare l'architettura di distribuzione a 3 livelli usando ARR.

  • Seguire la procedura descritta in questo documento per configurare ARR nell'architettura di distribuzione a 3 livelli.

  • A livello generale, il documento precedente descrive:

    • Come rendere disponibile il contenuto statico nel server ARR.
    • Come scrivere regole di riscrittura URL per il contenuto statico in modo che vengano gestite direttamente dal server ARR.
    • Come scrivere regole di riscrittura URL per il contenuto dinamico in modo che vengano inoltrate ai server applicazioni.

Passaggio 3: Abilitare e configurare cache esterna.

  • Seguire la procedura descritta in questo documento per abilitare e configurare Cache esterna da usare con ARR.

Configurazione BIG-IP F5

In questo scenario si creerà un server virtuale che bilancia il carico in un pool di due server ARR (o più). Il metodo di bilanciamento del carico selezionato deve inviare tutto il traffico al server ARR primario fino a quando non diventa disponibile. A questo punto, l'LTM BIG-IP deve inviare tutto il traffico al server ARR secondario.

Passaggio 1: Configurare il pool di server ARR.

  • Nella sezione Traffico locale fare clic su Pool. Fare quindi clic sul pulsante Crea per creare un pool.
  • Qualsiasi nome univoco funzionerà per il pool; l'esempio usa ARR_Pool. - Per Monitoraggio integrità è possibile usare un monitoraggio HTTP personalizzato o il monitoraggio HTTP predefinito. - È possibile lasciare il metodo di bilanciamento del carico impostato su Round Robin. In questo scenario, poiché è presente solo un server ARR attivo e passivo, il bilanciamento del carico non viene usato. - Assicurarsi di abilitare l'attivazione del gruppo di priorità. In questo modo viene configurato big-IP per inviare il traffico ai server con il valore di priorità più alto. Quando tali server non sono disponibili, big-IP invia il traffico al server ARR con il valore di priorità più alto successivo. - In questo scenario il server ARR alla versione 10.0.0.1 ha un valore di priorità 1 e 10.0.0.2 ha un valore di priorità 2. Tutto il traffico verrà inviato a 10.0.0.2 fino a quando non scende, quindi il traffico verrà inviato a 10.0.0.1.

Screenshot del sito Web Big I P. Nella casella nome è un pool di sottolineatura R R. Nel riquadro Traffico locale è selezionata pool.

Passaggio 2: Configurare il server virtuale.

  • Nella sezione Traffico locale fare clic su Server virtuali. Fare quindi clic sul pulsante Crea per creare un server virtuale.
  • Qualsiasi nome univoco funzionerà per il server virtuale; l'esempio usa ARR_VS. - Per la destinazione è possibile usare l'indirizzo IP a cui gli utenti puntano i browser. In questo caso, usiamo. Per La porta di servizio si usa '80'. - Per la sezione Tipo di server virtuale sono disponibili diverse opzioni. Poiché si dipende da ARR per instradare, è possibile selezionare Performance HTTP, progettato per le migliori prestazioni. - Per il pool predefinito selezionare il pool creato nel passaggio 1.

Screenshot della pagina Web F cinque. Nella casella Pool predefinito viene selezionato un pool R R. Nel riquadro Traffico locale è selezionato Server virtuali.

  • A questo punto, è necessario essere in grado di connettersi a questo server virtuale, che verrà inviato al server ARR appropriato.

Opzione 2: Attivo/Attivo in ARR

In modalità Active/Active è possibile avere due o più server ARR. Questa configurazione ottiene sia disponibilità elevata che scalabilità, a differenza della modalità Active/Pass, che ottiene solo disponibilità elevata. Poiché più server ARR sono configurati nello stesso modo, viene usata una configurazione condivisa. F5 BIG-IP è configurato per bilanciare il carico delle richieste in ingresso a tutti i server ARR disponibili e integri, che a sua volta inoltra le richieste ai server di contenuto.

Come indicato in precedenza, le informazioni sullo stato di runtime del mapping affinizzato tra i nomi host e i server di contenuto vengono archiviati in memoria all'interno di un'istanza di un server ARR. Per condividere queste informazioni tra più server ARR, viene usata Microsoft External Cache for IIS. Per altre informazioni sulla cache esterna, vedere questo documento.

Configurazione di ARR

La configurazione ARR per Active/Active è identica a quella di Attivo/Passivo. La differenza principale è la configurazione di F5.

Passaggio 1: Abilitare la configurazione condivisa in due server ARR.

  • Seguire la procedura descritta in questo documento per configurare la configurazione condivisa in IIS.

Passaggio 2: Configurare l'architettura di distribuzione a 3 livelli usando ARR.

  • Seguire i passaggi descritti in questo documento per configurare ARR nell'architettura di distribuzione a 3 livelli.

  • A livello generale, il documento precedente descrive:

    • Come rendere disponibile il contenuto statico nel server ARR.
    • Come scrivere regole di riscrittura URL per il contenuto statico in modo che vengano gestite direttamente dal server ARR.
    • Come scrivere regole di riscrittura URL per il contenuto dinamico in modo che vengano inoltrate ai server applicazioni.

Passaggio 3: Abilitare e configurare cache esterna.

  • Seguire la procedura descritta in questo documento per abilitare e configurare cache esterna da usare con ARR.

Configurazione F5 BIG-IP

In questo scenario, tutti i server ARR disponibili sono considerati attivi e candidati per il traffico con carico bilanciato. Usare BIG-IP LTM per determinare l'integrità e le prestazioni dei front-end ARR e indirizzare il traffico verso quelli con le migliori prestazioni.

Passaggio 1: Configurare il pool di server ARR.

  • Nella sezione Traffico locale fare clic su Pool. Fare quindi clic sul pulsante Crea per creare un pool.
  • Qualsiasi nome univoco funzionerà per il pool; l'esempio usa ARR_Pool. - Per Monitoraggio integrità, è possibile usare un monitoraggio HTTP personalizzato o il monitoraggio HTTP predefinito. - Poiché sono presenti più server ARR a cui distribuire il traffico, è necessario selezionare un metodo di bilanciamento del carico più adatto alle proprie esigenze. Supponendo che tutti i server ARR abbiano caratteristiche hardware simili, un metodo di bilanciamento del carico dinamico, ad esempio il più veloce, osservato o predittivo, offrirà una distribuzione basata sulle prestazioni.

Screenshot della pagina Web F five. Nella casella Traffico locale è selezionata l'opzione Pool. Nella casella Metodo di bilanciamento del carico è selezionata l'applicazione Più veloce.

Passaggio 2: Configurare il server virtuale.

  • Nella sezione Traffico locale fare clic su Server virtuali. Fare quindi clic sul pulsante Crea per creare un server virtuale.
  • Qualsiasi nome univoco funzionerà per il server virtuale; l'esempio usa ARR_VS. - Per destinazione, è possibile usare l'indirizzo IP a cui gli utenti punteranno i browser. In questo caso si usa . Per Porta di servizio si usa '80'. - Per la sezione Tipo di server virtuale sono disponibili diverse opzioni. Poiché si dipende da ARR da instradare, è possibile selezionare HTTP prestazioni, progettato per ottenere prestazioni ottimali. - Per il pool predefinito selezionare il pool creato nel passaggio 1.

Screenshot della pagina Web F five. Nella casella Traffico locale è selezionata l'opzione Server virtuali. Nella casella Pool predefinito è selezionato un pool R R.

Riepilogo

In questo white paper sono stati esaminati due scenari ARR principali per ottenere disponibilità elevata e scalabilità distribuendo più server ARR e usando F5 BIG-IP.

Appendice

Appendice A: Tutte le intestazioni HTTP disponibili e le variabili del server per la scrittura di regole decisionali di routing.

ALL_HTTP ALL_RAW APPL_MD_PATH
APPL_PHYSICAL_PATH CERT_COOKIE CERT_FLAGS
CERT_ISSUER CERT_KEYSIZE CERT_SECRETKEYSIZE
CERT_SERIALNUMBER CERT_SERVER_ISSUER CERT_SERVER_SUBJECT
CERT_SUBJECT CONTENT_LENGTH CONTENT_TYPE
DOCUMENT_ROOT GATEWAY_INTERFACE HTTP_ACCEPT
HTTP_ACCEPT_ENCODING HTTP_ACCEPT_LANGUAGE HTTP_CONNECTION
HTTP_CONTENT_LENGTH HTTP_HOST HTTP_IF_MODIFIED_SINCE
HTTP_IF_NONE_MATCH HTTP_REFERER HTTP_UA_CPU
HTTP_USER_AGENT HTTPS HTTPS_KEYSIZE
HTTPS_SECRETKEYSIZE HTTPS_SERVER_ISSUER HTTPS_SERVER_SUBJECT
INSTANCE_ID INSTANCE_META_PATH LOCAL_ADDR
PATH_INFO PATH_TRANSLATED QUERY_STRING
REMOTE_ADDR REMOTE_HOST REMOTE_PORT
REMOTE_USER REQUEST_FILENAME REQUEST_METHOD
REQUEST_URI SCRIPT_FILENAME SCRIPT_NAME
SERVER_ADDR NOME_SERVER SERVER_PORT
SERVER_PORT_SECURE SERVER_PROTOCOL SERVER_SOFTWARE
URL