Costruire un server farm SSL

Sono interessato a build l'architettura nell'articolo citato di seguito.

Ho attualmente un bilanciatore di carico a livello modesto 4 e il mio server applicativo sono gli endpoint SSL. Voglio mettere una farm di server SSL tra il mio bilanciatore di carico ei miei server di applicazioni. Poi metterò un altro bilanciatore di carico economico tra l'azienda SSL e i miei server app, per eseguire l'instradamento layer-7.

  • start nginx su mac non rioutput con 48: indirizzo già in uso
  • Limiti di carico di Apache limiti con Tomcat su AJP
  • Tentare di installare SSL: la chiave privata non corrisponde al certificato
  • Quali sono le differenze esatte di livello di protocollo tra SSL e TLS?
  • Come utilizzare / debug Debian preseed con SSL utilizzando Startssl Certs
  • "Nascondi" le estensioni di file .html usando la riscritta di nginx
  • immettere qui la descrizione dell'immagine

    La mia applicazione web ha una quantità abbastanza elevata di traffico dei consumatori, che 6 server possono gestire a circa il 50% di capacità. Inoltre, ho traffico di infrastrutture che è più ordini di grandezza più pesante del mio traffico di consumo. Sono dati provenienti da tutto il mondo che devono integrarsi in tempo reale con la mia applicazione web. In totale ho 18 server di app per gestire tutto il traffico, più 6 server di database. Aggiungo altri 6 server di app durante le prossime 2 settimane e un altro 6 le due settimane dopo. Conservativamente, mi preme che dovrò scalare fino a 120 server entro la fine dell'anno.

    La mia motivazione è ora di separare il traffico dei consumatori dal traffico infrastrutturale. Il traffico dei consumatori è una priorità maggiore rispetto al traffico delle infrastrutture e non posso permettere una truffa sul lato dell'infrastruttura per abbattere i miei server rivolti al consumatore. Avere un sito sempre aggiornato è la priorità assoluta. Tuttavia, se esiste un errore in uno dei server di app consumer, desidero indirizzare tale traffico ai server designati per il traffico infrastrutturale.

    La complicazione è che tutto il traffico viene indirizzato utilizzando lo stesso nome host ed è quasi 100% https. L'unico modo per distinguere l'infrastruttura dal traffico dei consumatori è l'URL (la scarsa architettura che ho ereditato), quindi ho bisogno di un bilanciatore di carico del livello 7 per essere in grado di percorrere. Tuttavia, per farlo funzionare, ho bisogno di un terminal SSL a base hardware o di un server server SSL come sopra descritto. Poiché la mia base di utenti è in rapida scalata, mi preoccupa che se scendi il path hardware diventerò molto costoso molto velocemente, specialmente perché avrò bisogno di 4 per tutto per elevata disponibilità (2 configurazioni identiche in 2 strutture). Nel frattempo, lo schema di cui sopra sembra molto flessibile e più scalabile orizzontalmente.

    Qualcuno ha costruito questo prima? Ci sono configurazioni pre-costruite? Quali considerazioni dovrei fare e quale software devo usare (ho sentito parlare di persone che utilizzano apache con mod-ssl, nginx e stunnel)? Inoltre, quando ha senso acquistare un costante bilanciere del carico rispetto alla costruzione di un server server SSL?

    http://1wt.eu/articles/2006_lb/index_05.html

    2 Solutions collect form web for “Costruire un server farm SSL”

    Per un cluster di 120 server, consultare un professionista . Non avrei pensato di avere una risposta di abbastanza significativo dettaglio per la tua applicazione .

    La configuration cluster più complessa che abbiamo impostato era solo 20 server, di cui solo il 12% era traffico HTTPS (14Mbit SSL puro).

    La nostra architettura tipica è …

    Se aiuta, per i cluster web, usiamo tipicamente:

    lvs (initial ssl load balancing) -> pound (ssl-unwrapping) -> varnish (caching) -> haproxy (load balancing) -> nginx (static content) -> php (dynamic content) -> mysql (db) 

    Avevamo usato stunnel in combinazione con HAProxy (al posto di Pound), ma stava causando alcune complicazioni (con l'impossibilità di impostare le intestazioni) più in basso la catena.

    Libbra

    Noi usiamo questo e funziona molto bene, tanto che non siamo riusciti a spingerlo alle sue limitazioni sull'hardware che abbiamo e il volume del traffico viene spinto attraverso Apache jMeter durante il test.

    C'è anche una nota sulla home page della pound quanto riguarda i miglioramenti delle performance

    Se il PCRE, il tcmalloc (dal pacchetto perftools di Google) e / o Hoard sono disponibili, Pound li collega contro di loro. Ciò fornirà una notevole spinta di performance e viene altamente raccomandata.

    Ma la pound è considerata un bene per le applicazioni di traffico "basse", ma non sembra in linea con le sue competizioni, che altri hanno documentato nei test di benchmarking

    Software Terminatori SSL Benchmarks

    1. http://vincent.bernat.im/en/blog/2011-ssl-benchmark-round2.html
    2. http://vincent.bernat.im/en/blog/2011-ssl-benchmark.html
    3. http://barry.wordpress.com/2008/04/28/load-balancer-update/

    L'utilizzo della CPU è probabilmente il problema chiave

    Il consumo di CPU sarà il tuo problema più grande, quindi essere intelligenti con la dimensione chiave SSL sta per aiutare, 1024bit (ora deprecata dalla maggior parte delle autorità SSL) vs 2048bit vs chiavi da 3072bit aumenteranno linearmente i sovraccarichi.

    Ecco alcune buone letture sulle performance generali SSL, http://www.imperialviolet.org/2010/06/25/overclocking-ssl.html

    Quello che alla fine trovenetworking è che non esiste una risposta "giusta" e che solo la prova, il test di nuovo, poi il test di alcuni più vi mostrerà ciò che funziona meglio nel tuo scenario.

    Puoi dividere l'infrastruttura dal traffico dei consumatori usando un firewall Linux. Utilizzando la funzionalità di corrispondenza delle stringhe di netfilter / iptables è ansible abbinare il traffico in base all'URL. Dopo che il traffico è adattato è ansible utilizzare questo per eseguire QoS o inoltrare il traffico in modo diverso.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.