Domanda

Il mio sito Web sta crescendo. Ho bisogno di partizionare set di funzionalità su diversi gruppi di server invece di far funzionare tutte le funzionalità su una singola copia del server. Ho 8 server identici in una configurazione di Bilanciamento carico di rete di Windows.

Il problema è: devo mantenere lo stesso spazio URL. Quale sarebbe una soluzione praticabile? Non voglio iniziare nuovi domini per i set di funzionalità. Sto pensando a una sorta di proxy inverso con alcune funzionalità di riscrittura / routing basate su URL (?!?). Qualche consiglio in termini di software o hardware? Questo sostituirà la configurazione di WNLB in quanto non ha le capacità di cui ho bisogno.

È stato utile?

Soluzione

Esistono diverse soluzioni per implementare il bilanciamento del carico:

  1. DNS Round-Robin
  2. Bilanciamento del carico DNS (con lbname)
  3. Proxy Round-Robin
  4. Hardware / TCP Round-Robin

Ho capito 1) e 2) non sono un'opzione qui quindi ... se hai soldi e esigenze di prestazioni davvero elevate , scegli 4). Altrimenti, scegli 3).

Anche per Proxy Round-Robin sono possibili diverse soluzioni: Apache mod_rewrite , Apache mod_proxy , Squid (e sicuramente molti altri che non conosco).

  • Per " stupido " caricamento del bilanciamento, c'è un esempio nella URL Rewriting Guide (vedi Proxy Throughput Round-Robin ).

  • Mod_proxy di Apache può fungere da proxy per connettere i client a Internet ma viene solitamente utilizzato come proxy inverso per reindirizzare un URL su un altro server . Non ha funzionalità di cache (ma può essere utilizzato con mod_cache e mod_rewrite ...).

  • Squid è una cache proxy e viene generalmente utilizzata per connettere i client a Internet. Ma può anche essere utilizzato come proxy inverso ed essere configurato per memorizzare nella cache le richieste e per accelerare la consegna dei contenuti.

Come puoi vedere, sceglierne uno dipende da cosa e come vuoi fare il proxy. Nel tuo caso, prenderei in considerazione l'esecuzione di Apache mod_proxy o Squid se vuoi la memorizzazione nella cache su Linux (se è un'opzione).

Per quanto riguarda l'hardware, non sono uno specialista ma penso che un "piccolo" a "mezzo" server dedicato dovrebbe essere sufficiente. Basta non dimenticare che tutte le richieste passeranno attraverso questa macchina, quindi il suo dimensionamento dipende molto dal tuo traffico che sembra decente. Ciò potrebbe richiedere alcuni scavi con dati di vita reale.

Altri suggerimenti

Se hai 8 server ti suggerirei di usarne 7 per condividere il carico di lavoro e di utilizzare un server front-end per fungere da proxy.

Il tuo server front-end potrebbe eseguire Apache e utilizzare mod_proxy per delegare ogni richiesta HTTP a uno dei 7 server back-end. Puoi impostare mod_proxy per delegare il lavoro in base all'URL in arrivo, se necessario, ad esempio potresti avere un server che serve video, due voci di blog e il resto che fa qualsiasi altra cosa.

Il tuo server front-end sarebbe estremamente leggero: eseguendo Apache e poco altro. Puoi anche memorizzare nella cache il tuo contenuto statico su questo server frontale usando mod_cache di Squid o Apache in modo che le richieste di immagini, js, css e altri contenuti statici non raggiungano mai il tuo server back-end 7 una volta che è stato memorizzato nella cache.

EDIT: ho appena letto un commento di Pascal e mi sta suggerendo la stessa cosa. Lo modificherò +1

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top