Uk

Konfiguracja serwerów, usług, itp.
Awatar użytkownika
czarownik
Beginner
Posty: 240
Rejestracja: 22 maja 2009, 17:23

Układ równoważenia obciążenia, co wybrać: apache, nginx czy haproxy

Post autor: czarownik »

Witam.
Stoję przed zadaniem uruchomienia układu równoważenia obciążenia www (php, obrazki, javascript). Przewidywany ruch to około 130, 140 tys. unikalnych użytkowników miesięcznie. Układ równoważenia obciążenia oprócz rozrzucania ruchu www chciałbym wykorzystać jako równoważenia obciążenia dla serwerów postgresql (master, slave).
Zastanawiam się, którego "programu użyć" aby zapewnić sobie jak największą skalowalność i konfigurowalność.

Wymagania stawiane układowi równoważenia obciążenia:
  • przerzucanie ruchu miedzy serwerami
    1. w razie awarii wykluczenie niedziałającego serwera
    2. ustawienie limitu użytkowników dla danego app
    3. ustawienie kilku domen i rożnych serwerów dla tych domen
  • po przerzuceniu użytkownika do jednego z app do końca sesji ma trafiać do tego samego serwera
  • możliwość uruchomienia jeszcze jednego układu równoważenia obciążenia jako układu czuwania
  • trasować pakiety HTTP na podstawie nagłówka
  • generować statystyki ruchu/usług
  • blokować zapytania HTTP na podstawie analizy nagłówków
  • przekazywać adresy ip użytkowników (logi) do serwera
  • łatwa rozbudowa
  • obsługa większej ilość zapytań
To chyba tyle, z góry dziękuję za pomoc.
Awatar użytkownika
Unit
Beginner
Posty: 356
Rejestracja: 27 marca 2007, 09:39

Post autor: Unit »

Hej,

Nie do końca jestem pewien czy wszystkie Twoje wymagania zostaną spełnione, ale przybliżona architektura, którą będziesz budował będzie wyglądała w taki sposób (przynajmniej tak mi się wydaje warto rozłożyć serwisy/usługi) :
Obrazek
Serwisy są tutaj podzielone na trzy warstwy:
1 - jeżeli będziesz miał strony www wykorzystujące ssl-a wartałoby użyć nginx(przetwarza on więcej zapytań ssl od apache2 - nie podam Ci wartości, bo nie wiem dokładnie jakie są różnice) - zapytania możesz kierować prosto do serwerów apache lub do lokalnego haproxy, które będzie się komunikowało z apache'ami. Keepalived lub heartbeat dla failovera loadbalancera.
2 - usługi apache - na jednym serwerze możesz mieć uruchomionych więcej uslug apache i oczywiście będziesz mógł rozbudować przez dodanie albo dodatkowego apache na serwerze albo przez dodanie kolejnego serwera z apachem/apache'ami
3 - bazy danych - postgresql 9.0 o ile się nie myle ma zaimplementowane mechanizmy replikacji (warto im się przyjrzeć), postgresql 8.x uruchomić wartało by w klastrze przy pomocy pgpool-2

Warstwy 2 i 3 można połaczyć tylko nie jestem pewnien jakie będzie obciążenie.

Jeżeli masz jakieś inne pomysły bądź zbudujesz swoją architekturę przedstaw jakieś testy.
Załączniki
loadbalancing.jpg
ODPOWIEDZ