Uruchamianie 100 maszyn wirtualnych na jednym serwerze hosta VMWare

24

Używam VMWare od wielu lat, obsługując dziesiątki serwerów produkcyjnych z bardzo małą liczbą problemów. Ale nigdy nie próbowałem hostować więcej niż 20 maszyn wirtualnych na jednym fizycznym hoście. Oto pomysł:

  1. Rozebrana wersja systemu Windows XP może działać z 512 MB pamięci RAM i 4 GB miejsca na dysku.
  2. 5000 USD daje mi 8-rdzeniowy komputer klasy serwerowej z 64 GB pamięci RAM i czterema serwerami lustrzanymi SAS.
  3. Ponieważ 100 wyżej wymienionych maszyn wirtualnych mieści się na tym serwerze, mój koszt sprzętu wynosi tylko 50 USD za maszynę wirtualną, co jest bardzo miłe (tańsze niż wynajem maszyn wirtualnych w GoDaddy lub innych sklepach hostingowych).

Chciałbym zobaczyć, czy ktoś jest w stanie osiągnąć taką skalowalność dzięki VMWare? Zrobiłem kilka testów i wpadłem na dziwny problem. Wydajność maszyny wirtualnej zaczyna gwałtownie spadać po uruchomieniu 20 maszyn wirtualnych. Jednocześnie serwer hosta nie pokazuje żadnych wąskich gardeł zasobów (dyski są w 99% bezczynne, wykorzystanie procesora jest poniżej 15% i jest dużo wolnej pamięci RAM).

Będę wdzięczny za podzielenie się historiami sukcesu w zakresie skalowania VMWare lub innej technologii wirtualizacji!

user9517 obsługuje GoFundMonica
źródło
4
Z jakiego produktu VMware korzystasz? ESX? ESXi? Serwer?
wzzrd
2
Możesz uruchomić XP z 256 bez większych trudności, szczególnie jeśli jest to lekkie zadanie. Microsoft wymaga 64, ale 128 to „wystarczająca” technet.microsoft.com/en-us/library/bb457057.aspx
Matt Rogish
1
skąd kupujesz swoje serwery? Chcę jeden :)
warren
1
Tylko 5000 USD, czy możesz mi sprzedać dwa? :)
Taras Chuhay
Masz „taką ilość procesora” na serwerze hostingowym, a każda maszyna wirtualna otrzyma tę część. Plus esxi będzie miał narzut: „przełącz się na tę maszynę wirtualną, zarządzaj nią, przełącz na następną itd.”, Wiele razy na sekundę. Oznacza to, że każda maszyna wirtualna otrzyma tylko ułamek całkowitego procesora. Im więcej maszyn wirtualnych, tym więcej dzielisz procesor (i tym więcej dodajesz narzutu, co oznacza, że ​​zamiast 100 vms, masz o wiele więcej).
Olivier Dulac

Odpowiedzi:

15

Tak, możesz. Nawet w przypadku niektórych obciążeń systemu Windows 2003 wystarcza zaledwie 384 MB, więc 512 MB to całkiem dobre oszacowanie, nawet jeśli jest nieco wysokie. Pamięć RAM nie powinna stanowić problemu, podobnie jak procesor.

100 maszyn wirtualnych jest nieco strome, ale jest wykonalne, szczególnie jeśli maszyny wirtualne nie będą bardzo zajęte. Z łatwością obsługujemy 60 serwerów (Windows 2003 i RHEL) na jednym serwerze ESX.

Zakładając, że mówisz o VMware ESX, powinieneś również wiedzieć, że jest w stanie przesadzić pamięć. Maszyny wirtualne prawie nigdy nie używają w pełni wyznaczonej racji pamięci, więc ESX może przekazać VM więcej niż dostępna ilość pamięci RAM i uruchomić więcej maszyn wirtualnych niż faktycznie „oficjalnie” ma pamięć RAM.

Najprawdopodobniej twoim wąskim gardłem nie będzie procesor ani pamięć RAM, ale IO. VMware może pochwalić się ogromną ilością IOPS w swoich działaniach marketingowych, ale kiedy dochodzi do wypychania, konflikty rezerwacji SCSI i ograniczona przepustowość zatrzymają Cię na długo, zanim zbliżysz się do IOPS VMware.

W każdym razie nie mamy do czynienia z obniżeniem wydajności 20 maszyn wirtualnych. Jakiej wersji ESX używasz?

wzzrd
źródło
Dzięki Wzzrd! Obecnie używam VMWare Server 2.0, ale planuję wypróbować ESX już wkrótce. Bardzo uważnie obserwowałem operacje we / wy na wszystkich tablicach hostów, a jedynym sposobem na maksymalizację tego jest ponowne uruchomienie wielu gości jednocześnie. Gdy goście wykonują niewielkie obciążenie lub pozostają bezczynni, dyski hosta są w 99% bezczynne. Podejrzewam, że coś innego niż CPU i IO powoduje spowolnienie wszystkich maszyn wirtualnych. Nawiasem mówiąc, znacznie spowalniają - otwarcie menu Start zajmuje 20 sekund, a jeśli uruchomię Menedżera zadań wewnątrz maszyny wirtualnej, menedżer zadań zajmuje 90% CPU - dziwne!
Dennis Kashkin
2
To dlatego, że używasz VMware Server. VMware Server jest platformą wirtualizacji na innej platformie (najczęściej Linux), podczas gdy ESX jest platformą wirtualizacji bez systemu operacyjnego. Bardzo różne, zarówno pod względem koncepcji, jak i sposobu działania.
wzzrd
Niestety, kiedy nadejdzie dzień aktualizacji z 100 maszynami, zrestartujesz dużo maty w tym samym czasie;) A łatanie samo w sobie jest trudne. Strzeż się pakietu serwisowego - wtedy zaczyna się prawdziwy ból;)
TomTom
Przestańcie się oszukiwać, że nagi metal to coś wyjątkowego. ESXi to po prostu rozebrany Linux. Tak, Linux.
dresende
2
@dresende. Nie, nie jest. Zaufaj mi.
wzzrd
11

Jednym z głównych problemów w tak dużym środowisku byłoby zapobieganie katastrofom i ochrona danych. Jeśli serwer umrze, wraz z nim umiera 100 maszyn wirtualnych.

Musisz zaplanować jakieś przełączenie awaryjne maszyn wirtualnych i zaplanować jakieś zarządzanie „dodatkowymi maszynami wirtualnymi”, które ochroni twoje maszyny wirtualne w przypadku awarii. Oczywiście tego rodzaju redundancja oznacza wzrost kosztów - prawdopodobnie dlatego wiele razy taki wydatek nie jest zatwierdzany, dopóki jego korzyści nie zostaną zauważone w praktyce (z powodu jego braku).

Pamiętaj też, że host VM jest tylko jednym z kilku pojedynczych punktów awarii:

  • Sieć - co się stanie, jeśli karta sieciowa hosta VM ulegnie awarii?
  • Pamięć - co się stanie, jeśli część pamięci hosta maszyny wirtualnej ulegnie awarii?
  • Procesor - jeśli umiera rdzeń procesora, co dzieje się z maszynami wirtualnymi?
  • Zasilanie - czy jest tylko jeden - czy dwa - przewody zasilające?
  • Port zarządzania - załóżmy, że nie możesz dostać się do zarządzania hostem maszyny wirtualnej?

To tylko kilka: ogromna infrastruktura maszyn wirtualnych wymaga szczególnej uwagi w zakresie zapobiegania utracie danych i zapobiegania utracie maszyn wirtualnych.

Mei
źródło
2
Posłuchaj Davida. Będziesz potrzebować konfiguracji N + 1, co oznacza, że ​​potrzebujesz co najmniej jednej zapasowej maszyny bezczynnej, która jest w stanie przejąć całe obciążenie innej maszyny w przypadku awarii. Moje zalecenie to klaster z dwoma serwerami, który równomiernie rozkłada obciążenie, ale może niezależnie obsłużyć całe obciążenie w przypadku awarii jednego komputera.
Jason Pearce
4

Brak oświadczenia na temat opłacalności tego w produkcji, ale istnieje bardzo ciekawe demo NetApp, w którym zapewniają 5440 komputerów stacjonarnych XP na 32 hostach ESX (to 170 na hosta) w około 30 minut z wykorzystaniem bardzo małej przestrzeni dyskowej z powodu deduplikacji przeciwko wspólnej maszynie wirtualnej zdjęcia

http://www.youtube.com/watch?v=ekoiJX8ye38

Domyślam się, że twoje ograniczenia pochodzą z podsystemu dyskowego. Wygląda na to, że odpowiednio uwzględniłeś użycie pamięci i procesora.

Kevin Kuphal
źródło
3

Nigdy tego nie zrobiłem - ale obiecuję, że wydasz o wiele więcej niż na pamięć masową, aby uzyskać wystarczającą liczbę procesorów IOP do obsługi tylu maszyn wirtualnych niż na sprzęcie serwerowym. Będziesz potrzebował wielu procesorów IOP, jeśli wszystkie 100 z nich jest jednocześnie aktywnych. Nie żeby zabrzmiało to negatywnie, ale czy zastanawiałeś się również, czy wkładasz dużo jajek do jednego koszyka (brzmi, jakbyś szukał rozwiązania z jednym serwerem?)

Jeff Hengesbach
źródło
2
Zdecydowanie utworzę wiele „koszy” i skonfiguruję automatyczne kopie zapasowe. Wąskie gardła we / wy można obecnie łatwo rozwiązać za pomocą dysków SSD. Używam 160 GB dysków Intel MLC na produkcji i są one spektakularne. Zasadniczo uzyskujesz 5-krotnie lepszą wydajność losowych operacji we / wy niż dyski SAS najwyższej klasy (w prostych konfiguracjach RAID).
Dennis Kashkin
1

Byłbym najbardziej zaniepokojony rywalizacją procesora ze 100 maszynami wirtualnymi na jednym hoście. Musisz pamiętać, że procesor NIE jest zwirtualizowany, więc każda maszyna będzie musiała czekać na dostęp do procesora. Możesz zacząć widzieć rywalizację, patrząc na ESXTOP. Powiedziano mi, że cokolwiek powyżej 5 w polu% RDY jest bardzo złe przez inżynierów VMWare.

Z mojego doświadczenia wynika, że ​​widziałem około 30 - 40 serwerów działających na jednym hoście (nie robiących zbyt wiele).

Zypher
źródło
1

Miałem 10 hostów na VMWare Server 1.0.6 (pod Windows 2003) i regularnie pojawiały się problemy z IO (a jeśli nocne kompilacje kiedykolwiek nakładałyby się na coś innego, wówczas miałyby problemy). Po uaktualnieniu systemu Windows do ESXi U3 stwierdziliśmy, że nasze problemy z wydajnością zniknęły (nocne kompilacje już nie powiodły się).

Należy również pamiętać, że chociaż dyski SSD mają znacznie wyższą szybkość operacji we / wy niż wirujące nośniki, istnieją pewne przypadki, w których to się nie utrzymuje, na przykład niektóre rodzaje wzorców zapisu (wiele małych zapisów rozproszonych na dysku zabije wydajność, chyba że kontroler ma inteligentna pamięć podręczna buforująca zapis, która dobrze sobie radzi z zapisami rozproszonymi).

Jeśli napotkasz problemy, zalecam sprawdzenie / przetestowanie plików SWAP na różnych dyskach.

Walter
źródło
1

Jeśli masz zamiar to zrobić, zdecydowanie zachęcam do korzystania z nowych procesorów Intel „Nehalem” z serii Xeon 55xx - są one zaprojektowane do uruchamiania maszyn wirtualnych, a ich dodatkowa przepustowość pamięci również ogromnie pomoże. Aha, a jeśli możesz użyć więcej, mniejszych dysków niż kilku, dużych - to bardzo pomoże. Jeśli możesz używać ESX v4 również w wersji 3.5U4.

Siekacz 3
źródło
1

Mam 20 maszyn wirtualnych XP z 512 MB pamięci RAM na maszynie z 16 GB pamięci RAM. Mniej niż to i zamieniają się na dysk, co stanowi wąskie gardło. Są to zawsze aktywne maszyny wirtualne XP.

VMware i jego funkcja OverCommit powinny pozwolić ci przesłać więcej pamięci RAM na każdą maszynę XP. Podobne urządzenie będzie współużytkować te same strony, co może ograniczyć zapisywanie na dysku. To jest coś, co chciałbym sprawdzić w naszej konfiguracji, aby spróbować dodać więcej maszyn, ponieważ nasze maszyny wirtualne XP wykonują 10-20meg ciągłego ruchu dysku.

Ryaner
źródło
1

Nie udało nam się osiągnąć 100 zadowolonych gości na VMWare Server, ale potem stwierdziliśmy, że ESXi robi znacznie lepszą robotę. Wygląda więc na to, że 100 XP vms nie stanowi problemu, jeśli używasz ESXi i przyzwoitego serwera (kilka kopii lustrzanych dysków do rozproszenia operacji we / wy, kilka układów I7 i 64 GB pamięci RAM). Użytkownicy końcowi nie mają widocznego opóźnienia, a zasoby hosta nie są maksymalnie wykorzystane (najgorętszym jest procesor, ale zwykle jest on w co najmniej 70% bezczynny).

PS. To pytanie zostało wysłane przeze mnie, gdy walczyliśmy z VMWare Server.

Dennis Kashkin
źródło
0

Ostatnim razem, gdy sprawdzałem, VMware nie zaleca więcej niż 4 maszyn wirtualnych na rdzeń przetwarzający dla ESX, przy założeniu jednego vCPU na maszynę wirtualną.

To sugeruje, że koszty ogólne zarządzania stają się czynnikiem.

Bardzo mnie interesuje, czy rzeczywiście można osiągnąć współczynnik 4x na 8 rdzeniach.

Hans Malherbe
źródło
1
To jest wcześniej niż ESX 3.5U2 - dokument konfiguracji maksimum dla aktualizacji 2 mówi 8 do celów ogólnych, ale wzrasta do 11 dla obciążeń VDI. Jestem prawie pewien, że widziałem coś, czego nie mogę znaleźć pod ręką, co zwiększyło zalecenie VDI do 19 w wersji 3 lub 4. Dla vSphere ten limit wynosi teraz 20. Wyszukaj maksimum konfiguracji VMware ESX dla oficjalnych dokumentów od VMware.
Helvick
Moje maszyny wirtualne pozostają bezczynne przez większość czasu. Ludzie łączą się może kilka razy dziennie, aby uruchomić lekkie oprogramowanie. Potwierdziłem, że te maszyny wirtualne generują bardzo małe obciążenie procesora na hoście, gdy są bezczynne (20 maszyn wirtualnych stanowi do 9% wykorzystania procesora w oparciu o system dual quadcore). Czy pamiętasz, jak uzasadnione jest ograniczenie czterech maszyn wirtualnych na procesor? Czy myślą o serwerach WWW lub instancjach systemu operacyjnego?
Dennis Kashkin