Jak wyrównać obciążenie programu SQL Server 2008 dla aplikacji ASP.NET o dużym obciążeniu?

12

Wyobraź sobie, że masz udaną aplikację internetową, która korzysta z ASP.NET i IIS 7. Generuje wiele wywołań do bazy danych SQL Server 2008 i oczekuje się, że będzie dostępna publicznie z 99,9% czasu przestoju (przestój 8 godzin, 45 minut na rok).

Nasze cele to:

  • Zainstaluj aktualizacje systemu Windows na serwerze bez powodowania przestojów dla naszych klientów
  • Zapobiegaj awariom sprzętowym na serwerze, które spowalniają aplikacje ASP.NET z powodu przekroczenia limitu czasu

W przeciwieństwie do równoważenia obciążenia aplikacji ASP.NET, SQL równoważenia obciążenia wydaje się znacznie trudniejszy. Jakie są najlepsze praktyki związane z konfigurowaniem prostego klastra SQL Server 2008 R2 z równoważeniem obciążenia dla mikro-niezależnego dostawcy oprogramowania korzystającego ze stosu Microsoft?

Yakov-MIK
źródło
Kilka komentarzy: To, co zrobiliśmy, to napisanie aplikacji ASP.NET, które mogą pracować w trybie „offline” bez łączenia się z bazą danych, gdy upłynie limit czasu połączenia. Spada do „podstawowej” usługi zamiast w pełni funkcjonalnej aplikacji. Czytałem także o podejściu Netflix Chaos Monkey, które jest inspirujące: readwriteweb.com/cloud/2010/12/…
Jaka jest twoja okoliczność? Czy jesteś w hostowanym środowisku z ograniczonymi serwerami lub hostujesz swoje własne rzeczy z dostępem do gotówki i możliwością powiększania liczby serwerów?
@Jay: Podobnie jak wiele mikro-niezależnych dostawców oprogramowania, mamy dwa dedykowane serwery, które są przenoszone na hosting Rackspace Cloud. Gdybyśmy tego potrzebowali, moglibyśmy sobie pozwolić na dwa dedykowane serwery SQL Server, ale zastanawiam się, czy istnieje lepsze podejście.
Przenieś bazę danych na SQL Azure. W ten sposób uwolnisz się od koszmarów awarii serwerów, zamówień i aktualizacji. Twoje dane są dwukrotnie duplikowane oprócz twojej kopii roboczej, a aspekt równoważenia obciążenia jest również obsługiwany za ułamek rzeczywistego kosztu wdrożenia / zarządzania programem SQL Server, np. Sprzętu, licencji na oprogramowanie, czasu wsparcia serwera itp. Itd. .
Brett Rigby

Odpowiedzi:

4

Jeśli potrzebujesz wysokiej dostępności, skorzystaj z rozwiązań Windows / SQL Server Clustering lub SQL Server Database Mirroring. Klastrowanie wymaga dużo planowania i zapoznania się, jeśli nigdy wcześniej tego nie robiłeś, ale będzie ono przezroczyste dla aplikacji.

Równoważenie obciążenia jest możliwe w SQL Server, ale nie jest to dla osób o słabych nerwach. Jest to rozwiązanie korzystające z równoważenia obciążenia sieciowego systemu Windows (NLB) przed serwerami SQL. Same serwery SQL w NLB są łatwiejsze do zarządzania, jeśli są tylko do odczytu, ale mogą być do odczytu i zapisu, jeśli korzystasz z replikacji transakcyjnej z subskrybentami, które można aktualizować. Ten typ replikacji jest jednak oznaczony jako przestarzały w przyszłej wersji.

Ostatnią możliwością są skalowalne współużytkowane bazy danych, ale zdecydowanie są one tylko do odczytu.

Więcej lektur:

Zapoznaj się z książkami Allana Hirt'a o Apress na temat wysokiej dostępności SQL Server 2005 i replikacji Pro SQL Server 2005/2008 z Apress.

Skalowalne współdzielone bazy danych: http://technet.microsoft.com/en-us/library/ms345392.aspx

Peter Schofield
źródło
2

Relacyjne systemy baz danych rzadko równoważą obciążenie w taki sam sposób, jak serwery WWW. Problem z klasycznym podejściem do równoważenia obciążenia polega na tym, że wszystkie bazy danych muszą być w ciągłej synchronizacji. Model relacyjny jest bezwartościowy, jeśli dwa serwery nie mają identycznego stanu w dowolnym momencie.

Z twojego pytania nie wygląda na to, że nawet próbujesz osiągnąć równoważenie obciążenia, co jest przede wszystkim miarą wydajności, aby zapewnić, że tylko tyle użytkowników trafia na każdy serwer, ile ten serwer może obsłużyć. Wygląda na to, że chcesz skonfigurować wysoką dostępność . Ponieważ mówisz, że używasz programu SQL Server, sprawdziłbym przełączenia awaryjne. Oznacza to, że jeśli podstawowa baza danych jest niedostępna, klienci spróbują uzyskać dostęp do serwerów przełączania awaryjnego. SQL Server obsługuje utrzymywanie synchronizacji instancji podstawowej i każdego przełączania awaryjnego, a także obsługuje resynchronizację instancji podstawowej do przełączenia awaryjnego, gdy podstawowa zostanie przywrócona z trybu offline.


źródło
0

Ok, zaczynamy. NIE MOŻE BYĆ ZROBIONE. Nie bez zmian w aplikacji.

  • Zainstaluj aktualizacje - użyj klastrowania lub kopii lustrzanej, aby upewnić się, że masz DWIE bazy danych, które działają lub mogą szybciej przełączać się na inny komputer. Zdecydowanie preferowane jest tworzenie kopii lustrzanych.
  • Przepisz aplikację, aby sobie z tym poradzić (tzn. Nieudane połączenia, musi połączyć się ponownie w sposób transparentny, aby następnie połączyć się z kopią).

Zdaj sobie sprawę, że nadal musisz zdjąć aplikację w celu konserwacji po wdrożeniu nowego kopiowania / wprowadzania zmian schematu db.

TomTom
źródło
0

Opłacalną odpowiedzią na to pytanie jest często buforowanie bazy danych za pomocą tanich, zrównoważonych pod względem towarowym usług serwerowych warstwy hosta, które zapewniają przetwarzanie logiczne i przechowywanie danych, które w przeciwnym razie wiązałyby zasoby bazy danych. Oczywiście wymaga to zastanowienia się nad zmiennością danych i strategiami buforowania.

andrewbadera
źródło
-1

Pozwól, że dam ci jurajską odpowiedź. Jeśli twoje cele obejmują „zainstaluj aktualizacje systemu Windows”, jesteś nie do uratowania.

Mam brodę na szaro i pamiętam czas, w którym aplikacja mogła działać przez 10 lat bez konieczności „aktualizacji systemu operacyjnego”. Okres użytkowania aplikacji mierzono w dziesięcioleciach, a nie latach.

Więc moja rada jest następująca: ustal działającą wersję bazy danych i aplikacji SQL Server oraz WYŁĄCZ SERWER DANYCH Z AKTUALIZACJI MICROSOFT. Jeśli nie jest zepsuty, nie naprawiaj go.

Używaj dysków RAID z możliwością wymiany podczas pracy.

Przygotuj serwer bazy danych obrazów lustrzanych (zgodnie z sugestią TomTom) na wypadek awarii sprzętu.


źródło
3
Tim, to tak, jakby powiedzieć, dlaczego nawet korzystać z bazy danych, kiedy możesz przechowywać wyniki w pliku Excel? Istnieje wiele luk w systemie operacyjnym, a nie instalowanie regularnych aktualizacji / aktualizowanie reguł antywirusowych / zapór jest kiepską wskazówką. Nie zaleca się na żadnym poziomie.