2011-12-29 13 views
8

Czy ktoś ma doświadczenie z uruchomionymi klastrami Tigase serwerów XMPP na Amazon's EC2, przede wszystkim chcę wiedzieć o wszystkim, co może mnie poderwać, co nie jest oczywiste. (Na przykład uruchomienie Ejabberd na EC2 może spowodować problemy z powodu Mnesii.)Skalowanie serwera XMPP Tigase na Amazon EC2

Lub jeśli masz jakąkolwiek ogólną radę, aby zainstalować i uruchomić Tigase na Ubuntu.


Dodatkowe informacje:

System Zajmuję zastosowań XMPP tylko do komunikowania się (w czasie zbliżonym do rzeczywistego) między telefonem a serwerem aplikacji (-ów).

Początkowo liczba użytkowników będzie niewielka, ale miejmy nadzieję, że wzrośnie. Właśnie dlatego system musi być skalowalny. Przypuszczalnie dla zaledwie kilku tysięcy użytkowników nie potrzebujesz instancji EC2 cc1.4xlarge? (W przeciwnym razie będzie to bardzo kosztowne uruchomienie!)

Mam zamiar używać bazy danych MySQL hostowanej w Amazon RDS dla bazy danych serwera XMPP.

Planuję również utworzenie zewnętrznego komponentu XMPP napisanego w języku Python przy użyciu SleekXMPP. Będzie to ten zewnętrzny komponent, który wykonuje całą "pracę" serwera, ponieważ tworzona przeze mnie aplikacja różni się od wiadomości błyskawicznych. Do tej części nie doszedłem do tego, jak podłączyć zewnętrzny komponent XMPP napisany w Pythonie do serwera Tigase. documentation wydaje się sugerować, że komponenty są napisane specjalnie dla Tigase - a nie dla ogólnego serwera XMPP, używając XEP-0114: Jabber Component Protocol, jak się spodziewałem.

Dzięki tym dodatkowym informacjom, jeśli możesz wymyślić coś jeszcze, o czym powinienem wiedzieć, z przyjemnością się dowiem.

Dziękuję :)

Odpowiedz

25

Mam duże doświadczenie. Myślę, że jest mnóstwo nieoczywistych problemów. Podobnie jak jedyną niezawodną instancją do uruchamiania aplikacji takiej jak Tigase jest cc1.4xlarge. Inne powodują problemy z dostępnością procesora, a to tylko loteria, czy masz szczęście uruchamiać swoje usługi na serwerze, który nie jest zajęty pracą innych osób.

Potrzebujesz także instancji o najwyższym możliwym I/O, aby upewnić się, że poradzi sobie z ruchem sieciowym. Wysokie I/O dotyczy szczególnie instancji bazy danych.

Nie jestem pewien, czy jest to oczywiste czy nie, ale jest problem z nazwami hostów w EC2, za każdym razem, gdy uruchamiasz zmianę nazwy hosta i zmiany adresu IP. Klaster Tigase jest dość wrażliwy na nazwy hostów. Istnieje sposób wymuszenia/zmiany nazwy hosta dla instancji, więc może to być sposób obejścia problemu.

Oczywiście mówię o klastrze dla milionów użytkowników online i naprawdę dużym ruchu 100k XMPP pakietów na sekundę lub więcej. Zasadniczo w przypadku dużych instalacji jest taniej i wydajniej mieć dedykowane serwery.

Generalnie Tigase działa bardzo dobrze na Amazon EC2, ale naprawdę potrzebujesz najnowszego kodu SVN, ponieważ ma wiele optymalizacji dodanych szczególnie po testach w chmurze. Jeśli podasz więcej szczegółów na temat swojej usługi, mogę mieć więcej sugestii.

Więcej komentarzy:

Jeśli chodzi o koszty, serwer dedykowany jest zawsze tańsza opcja dla stale uruchomiony serwis. O ile nie planujesz włączać/wyłączać serwerów co godzinę, polecam skorzystanie z dedykowanej usługi. Koszty są niższe, a wydajność jest bardziej przewidywalna.

Jednakże, jeśli naprawdę chcesz/trzeba trzymać na Amazon EC2 Podam kilka konkretnych liczb, poniżej znajduje się lista wystąpień i ile Zalogowani klaster był w stanie niezawodnie obsługiwać:

  • 5 * cc1.4xlarge - 1mln 700k Zalogowani
  • 1 * c1.xlarge - 118k Zalogowani
  • 2 * c1.xlarge - 127k Zalogowani
  • 2 * m2.4xlarge (z 5GB pamięci RAM dla tigase) - 236 tys. Użytkowników online
  • 2 * m2.4xlarge (z 20GB pamięci RAM dla tigase) - 315k użytkowników internetowych
  • 5 * m2.4xlarge (z 60GB pamięci RAM dla tigase) - 400k użytkowników internetowych
  • 5 * m2.4xlarge (z 60GB pamięci RAM dla tigase) - 312k Zalogowani
  • 5 * m2.4xlarge (z 60GB pamięci RAM dla tigase) - 327k Zalogowani
  • 5 * m2.4xlarge (z 60GB pamięci RAM dla tigase) - 280K Zalogowani

kilka więcej komentarzy :

  1. Dlaczego ilość pamięci jest tak ważna? Wynika to z faktu, że moc procesora jest bardzo niewiarygodna i niespójna dla wszystkich instancji oprócz cc1.4xlarge. Masz 8 wirtualnych procesorów, ale jeśli spojrzysz na górne polecenie, często widzisz, że jeden procesor działa, a reszta nie. Ta niewystarczająca moc procesora prowadzi do wzrostu kolejki wewnętrznej w Tigase. Po przywróceniu zasilania procesora Tigase może przetwarzać oczekujące pakiety. Im więcej pamięci Tigase ma więcej pakietów może być w kolejce i lepiej radzi sobie z niedoborami procesora.
  2. Dlaczego jest 5 * m2.4xlarge 4 razy? To dlatego, że wielokrotnie powtarzałem testy w różnych dniach i porach dnia. Jak widać w zależności od czasu i daty system może obsługiwać różne obciążenia. Chyba dlatego, że instancja Tigase współużytkowała moc procesora z innymi usługami. Jeśli byli zajęci, Tigase cierpiał na procesor pod napięciem.

To powiedziawszy, myślę, że przy instalacji do 10k użytkowników online powinieneś być w porządku. Jednak inne czynniki, takie jak rozmiar planu, mają duże znaczenie, ponieważ wpływają na ruch i obciążenie. Także jeśli masz inne elementy, które generują znaczny ruch, spowoduje to obciążenie twojego systemu.

W każdym razie, bez niektórych testów nie można stwierdzić, jak naprawdę system zachowuje się i czy poradzi sobie z ładunkiem.

I ostatnie pytanie dotyczące części:

Oczywiście tigase dokłada wspierać XEP-0114 i XEP-0225 do podłączenia zewnętrznych komponentów. Nie powinno to stanowić problemu dla komponentów napisanych w różnych językach. Z drugiej strony zalecam używanie API Tigase do pisania komponentu. Mogą być wdrażane jako wewnętrzne komponenty Tigase lub jako komponenty zewnętrzne, co jest niewidoczne dla programisty, nie musisz się o to martwić w czasie programowania.Jest to część API i ramy. Możesz także użyć wszystkich towarów z frameworka Tigase, skryptów, monitorowania, statystyk, znacznie łatwiejszego programowania, ponieważ możesz łatwo wdrożyć swój kod jako wewnętrzny komponent do testów. Naprawdę nie musisz się martwić o jakieś specyficzne dla XMPP rzeczy, po prostu wypełniasz metodę processPacket (...) i to wszystko. Powinieneś mieć wystarczającą ilość dokumentacji online na stronie internetowej Tigase.

Sugerowałbym również czytanie o obsłudze Pythona dla wielowątkowości oraz o tym, jak zachowuje się ona przy bardzo dużym obciążeniu. Kiedyś nie było tak świetnie.

+0

Dziękuję za odpowiedź (i za przygotowanie Tigase!). Dodałem więcej szczegółów na temat tego, co rozwijam :-) –

+0

Wystarczy sprawdzić, czy wersja "tigase-server-5.1.0-beta3-b2667. tar.gz '(z http://www.tigase.org/node/2474/2199) będzie w porządku - czy byłoby lepiej, gdyby to był naprawdę ostatni zakup z SVN? –

+0

Niesamowite, dziękuję za doskonały wgląd w Tigase i instrukcje. –