Niedawno doświadczył powodzi ruchu na Facebooku aplikacji stworzyłem (głównie ze względu na edukację, nie z każdym zamiarze wprowadzenia do obrotu)architekturę aplikacji PHP na Amazon EC2
Nie trzeba dodawać, że nie pomyśl o skalowalności podczas tworzenia aplikacji. Znajduję się teraz w sytuacji, w której mój skromny serwer wirtualny obsługiwany przez MediaTemple w ogóle go nie tnie i tak naprawdę przechodzi na surowe operacje wejścia/wyjścia maszyny. Ponieważ ten projekt był dla mnie tak ważny, pomyślałem, że wykorzystam to jako okazję do zrozumienia platformy Amazon EC2.
Sama aplikacja jest tworzona w PHP (przy użyciu Zend Framework) z backendem MySQL. Używam buforowania aplikacji, gdzie to możliwe, z memcached. Spędziłem weekend bawiąc się z EC2, kręcąc instancje, instalując potrzebne pakiety i montując wolumin EBS do instancji.
Ale jaki jest następny logiczny krok, który przyniesie dobre wyniki w zakresie skalowalności? Czy uruchamiam instancję AMI dla MySQL i jedną dla usługi Apache? Czy mogę po prostu zreplikować wystąpienia tak często, jak ich potrzebuję, a następnie przeprowadzić równoważenie obciążenia na interfejsie? Idealnie chciałbym mieć scentralizowaną bazę danych, ponieważ agreguję statystyki we wszystkich wierszach baz danych, jednak nie jest to trudne (prawdopodobnie istnieją pewne rozwiązania specyficzne dla aplikacji, które mogłem wymyślić, aby obejść to)
Wiem, że to prawdopodobnie nie jest prosta odpowiedź, więc opinie i sugestie są mile widziane.
To brzmi jak moje dokładne pierwsze kroki do podjęcia. Pytanie: czy wolumen EBS można podłączyć do kilku instancji? Myślę, że mogę przechowywać katalog/var/www na serwerze apache na EBS i dane mysql na serwerze mysql na EBS. –
Niestety nie. Pomyśl o EBS jako dysku twardym, można go dołączyć tylko do jednej instancji na raz. Możesz je sklonować, ale sklonowany EBS nie otrzymuje żadnych zmian ani nowych danych. Twoim zadaniem jest napisanie skryptu, który automatycznie ustawi nowe instancje - sprawdzi kod z subversion, skonfiguruje apache, poinformuje moduł równoważenia obciążenia, że jest gotowy do odbierania żądań. Usługi takie jak RightScale sprawiają, że ta część jest łatwiejsza, jak sądzę. –