Argomento precedente: RPL: replicatore di eventiArgomento successivo: Gateway


URLSW: switch della porta URL

Ultima versione: 3.0.4-1

URLSW: switch della porta URL

In breve

Catalogo

Sistema

Categoria

Switch

Volumi dell'utente

no

Num. minimo memoria

96 M

OS

Linux

Vincoli

no

Domande/commenti

Fare richieste al forum

Panoramica funzionale

URLSW è uno switch che distribuisce le richieste HTTP a diversi output al fine di far corrispondere la richiesta URI o richiedere le intestazioni rispetto alle regole, come definite da espressioni regolari, sul limite dell'appliance. URLSW è utilizzato nelle applicazioni che dispongono di più di un'appliance di server applicazioni o Web per distribuire le richieste HTTP in modo flessibile tra loro. URLSW opera in modo analogo alla sua controparte PS8, ma su un livello più alto: analizza le richieste HTTP anziché le porte di tcp/udp.

URLSW ha anche un healtchecker interno. Healthchecker verifica periodicamente i poll connessi ai terminali di out e determina se i server sono pronti a elaborare le richieste. Se uno dei server controllati diventa non funzionale, URLSW disabilita automaticamente il flusso di richieste per quel server e indirizza le richieste a un altro server live più appropriato. Quando il server precedentemente non operativo diventa attivo, viene rilevato automaticamente dall'healthchecker e continuerà a ricevere le richieste.

Lo switch è a cascata; il traffico in entrata che non corrisponde a un'espressione regolare definita è inoltrato mediante il terminale AUX senza alcuna modifica. Tutto il traffico in entrata ricevuto sui terminali outX e AUX è inoltrato indietro al terminale IN.

URLSW è generalmente che viene utilizzato per dirigere il traffico in entrata a appliance differenti in un'applicazione.

Risorse

Risorsa

Minimo

Massimo

Predefinito

Testato

CPU

0.1

2

0.1

2

Memoria

96 MB

160 MB

96 MB

128 MB

Larghezza di banda

1 Mbps

2 Gbps

250 Mbps

1800 Mbps

Terminali

name

dir

prot.

description

in

in

HTTP

Input comune. Il traffico inviato è diretto a uno degli output sulla base dell'accoppiamento dell'URL o delle intestazioni alle espressioni regolari definite.

ctl

in

HTTP

Terminale di controllo che è usato per abilitare/disabilitando gli output e recuperare lo stato del terminale di output dall'utilità di bilanciamento del carico.

out1-out8

out

HTTP

Output configurati. Le richieste vengono inoltrate mediante un output particolare basato sulle proprietà outX_type e outX_value. È possibile lasciare non connessi uno o tutti di questi output; le richieste destinate agli output non connessi vengono eliminate.

aux

out

HTTP

Output a cascata. Le richieste in entrata che non sono destinate a nessun output out1-out8 sono inviate attraverso questo terminale. Questo terminale può restare non connesso.

log

out

Qualsiasi

Accesso a un file system di rete basato su CIFS per l'archiviazione dei log IIS (per il debug). Il server connesso deve permettere accessi anonimi e avere una condivisione di lettura/scrittura denominata shared. Questo terminale può essere lasciato non connesso se non è utilizzato.

mon

out

CCE

Invia le statistiche sull'utilizzo delle risorse e le prestazioni. Questo terminale può essere lasciato non connesso se non viene utilizzato.

Proprietà generali

name

type

description

outX_type

stringa

Definisce i criteri rispetto a cui la richiesta in entrata è fatta corrisponder. Ci sono 4 opzioni per questa proprietà: nome di host, cookie, url e tipo di file.

  • nome di host - la richiesta è fatta corrispondere per nome di host. Questa opzione è utile quando il contenuto del sito Web è diviso per separare i server e il server appropriato viene selezionato da un nome di host.
  • nome di host - la richiesta è fatta corrispondere per cookie. Questo tipo di selezione di server può essere utile quando ci sono diverse categorie di utenti di sito Web. Ad esempio, può essere usato in situazioni dove: 1. ci sono utenti regolari e gli amministratori/moderatori e le loro richieste dovrebbero essere elaborate mediante server diversi; 2. Utenti VIP, utenti regolari e utenti non registrati, per creare una priorità delle richieste in casi di carico elevato; 3. Area di download limitato, soltanto gli utenti autorizzati possono scaricare dal server, che è dedicato specialmente a questo scopo. In tutto i casi, la richiesta dell'utente è distinta dalla presenza di alcuni cookie o dal suo valore.
  • url - la richiesta è fatta corrispondere a una parte specifica di url. La stringa di url completa è usata per selezionare una destinazione. Tutte le parti dell'url possono essere utilizzate: protocollo ("http://" o "shttp://"), host e posizione oppure qualsiasi loro combinazione.
  • tipo di file - la richiesta è fatta corrispondere per estensione di file. Utile in situazioni in cui diversi server dovrebbero servire diversi tipi di contenuto statico o dinamico.

Predefinito: nome di host

outX_value

stringa

Espressioni regolari da far corrispondere. Una definizione di espressione regolare è disponibile qui. Esempi:

  • "*host1.com, *host.com, img.*.slashdot.org" per nome di host,
  • "*PHPSESSIONID*, GA*" per cookie,
  • "http://host1.com/images/*, *://host2.com/*" per url e
  • "*.jpg, *.png" per tipo di file.

Impostazione predefinita: (vuoto)
I valori sono sensibili alle maiuscole/minuscole.

Proprietà di healthcheck

name

type

description

healthcheck_url

Stringa

L'URL usato per eseguire l'healthcheck dei server Web di backend nei metodi di healthcheck http_get e http_head dei server Web. Può essere specificato come URL completo (http://host.name/file/to/check/for.php) o come percorso relativo (/file/to/check/for.php). Se specificato come URL, healthcheck usa il protocollo HTTP/1.1 mentre esegue gli healthcheck con il nome di host estratto da URL, nel suo host: intestazione. Questo permette l'utilizzo di host virtuali. Se specificato come percorso relativo, healthcheck usa il protocollo HTTP/1.0 e controlla il documento specificato da questa proprietà. Se questa proprietà è vuota, healthcheck controlla la radice predefinita '/' usando il protocollo di HTTP/1.0.
Predefinito: (vuoto).

healthcheck_agent

Stringa

La stringa usata come identificatore di agente per i metodi di healthcheck http_get e http_head. Se vuoto, viene usato URLSW-health-check.
Predefinito: (vuoto).

healthcheck_method

Stringa

Il metodo usato per l'healthcheck dei server Web di backend.

  • tcp_connect - l'healthcheck è eseguito mediante una connessione alla porta 80 del server Web. Se la connessione riesce, healthcheck suppone che il server Web è funzionale. Questo è il metodo più veloce e che richiede meno risorse.
  • http_head - healthcheck utilizza il metodo HEAD per richiedere il documento specificato dalla proprietà di healthcheck_url. Questo è più lento di tcp_connect, richiede più risorse da parte di URLSW e il server Web, ma è più affidabile. Un codice di stato di 2xx o 3xx, ricevuto da un server Web convalida il server come operativo.
  • http_get - healthcheck usa il metodo GET per richiedere il documento specificato dalla proprietà di healthcheck_url. Questo è il metodo più lento che richiede più risorse ma è completamente affidabile. Un codice di stato di 2xx o 3xx, ricevuto da un server Web, convalida il server come operativo. Se la proprietà di healthcheck_regexp è definita, il healthcheck scarica il documento incluse tutte le intestazioni HTTP e i codici di stato di server, e controlla le corrispondenze rispetto al valore di healthcheck_regexp. Se viene trovata una corrispondenza, il server di backend è considerato funzionale; se non viene trovata alcuna corrispondenza, è considerato disabilitato.

Predefinito: tcp_connect.

healthcheck_regexp

Stringa

Una stringa di testo usata con la modalità di healthcheck http_get. I valori abbreviati o comuni (ad esempio: "OK") potrebbero causare false corrispondenze positive. Questa stringa è un'espressione regolare di Perl. Per maggiori dettagli sulle espressioni regolari di Perl, andare qui.
Predefinito: (vuoto).

healthcheck_interval

Int

Intervallo tra gli healthcheck dei server Web di backend (specificati in secondi).
Predefinito: 20 secondi.

Proprietà di timeout

name

type

description

keepalive_timeout

Int

Timeout per le connessioni keepalive di timeout. Imposta il timeout, durante cui la connessione di keepalive con il client non viene chiusa dal server.
Predefinito: 75

client_header_timeout

Int

Timeout in cui il client invia un'intestazione di richiesta. Se dopo che questo tempo il client non riceve un'intestazione completa, viene emesso un errore.
Predefinito: 60

client_body_timeout

Int

Timeout in cui il client invia un contenuto di richiesta. Questo timeout è impostato per non trasferire il contenuto completo della richiesta, ma soltanto durante due operazioni di lettura. Se il client non trasmette i dati in questo tempo, viene restituito un errore.
Predefinito: 60

send_timeout

Int

Timeout del client a ricevere i dati. Se il client non risponde in questo intervallo, la connessione è chiusa. Questo timeout è impostato per non trasferire il contenuto completo della richiesta, ma soltanto durante due operazioni di scrittura.
Predefinito: 60

server_timeout

Int

Timeout in secondi per stabilire una connessione TCP ai server di backend. Questo include l'healthcheck.
Occorre prestare attenzione a questa impostazione: se il valore è troppo piccolo, l'healthcheck può eseguire un timeout sotto un carico elevato, e gli output sono disabilitati. Si sconsiglia di impostare un valore inferiore a 20 secondi.
Predefinito: 20

Proprietà di interfaccia di controllo

name

type

description

ctl_port

Int

Porta usata per accedere all'interfaccia di controllo del servizio Web mediante il terminale CTL.
Predefinito: 80

Registrazione delle proprietà

name

type

description

enable_access_log

Stringa

Abilita o disabilita il registro di accesso. Predefinito: no

access_log_filename

Stringa

Nome di file per il log di accesso. Predefinito: access.log

Contatori personalizzati

L'appliance di URLSW riporta i seguenti contatori personalizzati dal terminale di MON.

Nome di contatore

Description

Connessioni attive

Numero di connessioni attive

Connessioni accettate

Numero di connessioni accettate

Connessioni gestite

Numero di connessioni gestite

Richieste gestite

Numero di richieste gestite

Connessioni di lettura attive

Numero di connessioni di lettura attive

Connessioni di scrittura attive

Numero di connessioni di scrittura attive

Connessioni di attesa attive

Numero di connessioni di attesa attive

Prestazioni

Tasso di richiesta

URLSW dirige non meno d 3000 transazioni (coppia richiesta/risposta) al secondo, in base alla dimensione del documento e alla larghezza di banda di rete disponibile.

Velocità effettiva di dati

URLSW dirige non meno d 25 MB/secondo

Connessioni concorrenti

URLSW supporta non meno che 1000 richieste concorrenti. In fase di test, URLSW ha supportato più di 10.000 trasferimenti attivi simultanei.

Messaggi di errore

In caso di errore nell'avvio dell'appliance, è possibile che vengano registrarti i seguenti errori nel log di sistema:

Messaggio di errore

Description

Errore: impossibile inizializzare il terminale di ctl, contattare il Supporto di CA Technologies.

Si è verificato un errore di sistema durante l'inizializzazione del terminale di ctl. Si prega di contattare il Supporto di CA Technologies.

Errore: il log di accesso è abilitato ma il terminale di log non è connesso.

il terminale di log non è connesso, ma enable_access_log è impostato su sì.

Errore: impossibile inizializzare healthcheck esterno. Si prega di contattare il Supporto di CA Technologies.

Si è verificato un errore di sistema durante l'avvio dell'healthcheck esterno. Si prega di contattare il Supporto tecnico di CA Technologies.

Errore: impossibile inizializzare il report delle statistiche, contattare il Supporto di CA Technologies.

Si è verificato un errore di sistema durante l'inizializzazione del terminale di ctl. Si prega di contattare il Supporto di CA Technologies.

Controllo Programmatic dei terminali di output

Panoramica

Un'interfaccia del servizio Web di controllo viene esposta sul terminale CTL sulla porta ctl_port configurata permettendo di:

Protocol

Il controllo Programmatic dei terminali di output usa il metodo GET HTTP che ha una funzionalità di sola lettura. In questo modo, è possibile definire ogni tipo di richiesta di protocollo supportata mediante il rispettivo URI e la struttura di output. I caratteri, considerati speciali per l'URI devono essere preceduti da un carattere di escape utilizzando la codifica standard %.

Segue una descrizione di tutti gli URI supportati.

Chiamate di controllo

È possibile invocare le seguenti chiamate di controllo:

Uso tipico
Sito Web con distribuzione del carico

Il seguente diagramma mostra un uso tipico dell'appliance di URLSW con 4 server Web e un database.

Appliance in uso:

Esempio di configurazione della proprietà:

Nome di proprietà

Valore

note

out1_type

hostname

Le richieste per srv1 sono combinate per nome host

out1_value

static.server.com, images.server.com

Le richieste per gli host static.server.com e per images.server.com sono servite da srv1

out2_type

tipo di file

Le richieste per srv2 sono combinate per tipo di file

out2_value

*.pdf

I documenti PDF sono serviti da srv2

out3_type

tipo di file

Le richieste per srv3 sono combinate per tipo di file

out3_value

*.php

Gli script di PHP sono serviti da srv3

Tutte le altre richieste servite da srv4 quando è connesso al terminale AUX.

La richiesta del client arriva sul gateway utente. Il gateway inoltra le richieste al server di URLSW, il quale le distribuisce tra 4 server Web in base alle regole definite nelle proprietà dell'appliance o aggiunte in modo dinamico dal terminale CTL. il terminale CTL è accessibile dal gateway admin.

note

Questa appliance usa software Open Source e di terze parti

URLSW usa i seguenti pacchetti Open Source di terze parti oltre ai pacchetti Open Source di terze parti usati dalla loro classe di base LUX6.

Software

Versione

Modificato

License

note

nginx-stable

0.8.53

No

GPLv2

N/A

samba-client

3.5.10-125

No

GPLv2

N/A

samba-common

3.5.10-125

No

GPLv2

N/A

thttpd

2.25b

No

BSD

pagina iniziale