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:
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:
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:
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.
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.
- 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.
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.
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
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.
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.
- 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.
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.
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 |