Wpis z mikrobloga

Zainspirowany trochę pytaniem @niochland i @aceofspades o techniczne wytłumaczenie prawdopodobnych przyczyn awarii: Facebookowi padł CDN (Content Delivery Network) - sieć serwerów dostarczających jakieś dane (w tym przypadku zdjęcia, ale CDNy mogą dostarczać też skrypty, elementy stron czy inne pliki multimedialne).

Tych zdjęć nie trzyma się na jednym serwerze, tylko na tysiącach. Są one pogrupowane w strefy tak aby zapewnić możliwie szybką dostępność - osobna strefa na Europę, osobna na Stany (ale nie jest to tylko geograficzny podział). Strefy między sobą się synchronizują - posiadają kopie swoich danych (więc Twoja fotka z wakacji nie leży w jednym miejscu a w prawdopodobnie nawet kilkuset uwzględniając liczne kopie zapasowe).

Strefy są fizycznie od siebie oddzielone (są w różnych miejscach), mają różnych (często nawet kilku na jedną serwerownię) dostawców prądu i internetu. Są tak budowane, że jeśli jedna ulegnie awarii to jej rolę przyjmuje inna - coś może się ładować nieco dłużej, ale nadal powinno być dostępne. W mniejszych serwisach CDN ma często jeden "punkt wejściowy" - tj. serwer, który odpowiada za kierowanie użytkownika na właściwą strefę etc. W przypadku FB ten potencjalnie wrażliwy element też jest rozproszony.

Analizując technicznie można sprawdzić, że zewnętrzne domeny CDNów się rozwiązują (więc nie padł im DNS - obsługa adresów sieciowych na zewnątrz), być może mają wewnętrzną awarię adresacji albo problem z ichniejszym haproxy - narzędziem do dystrybucji ruchu. W zwrotce od CDNu z multimediami dostajemy kod 503 Service Unavailable. W nagłówkach jest dodatkowo informacja "x-fb-response-reason: No server is available for the request". Wniosek jest taki, że same haproxy działają, ale usługa za nimi już nie (lub z jakiegoś powodu została wycięta z ruchu).

W ramach ciekawostki przy okazji nudów związanych z brakiem sociali: w (bardzo dużym) uproszczeniu pobranie fotki kota Twojego znajomego może wyglądać tak:
Twoja przeglądarka -> facebook.com -> przeglądarka (URL obrazka w kodzie strony) -> CDN (Twoja strefa) -> CDN (Inna strefa jeśli zdjęcia nie ma i skopiowanie na Twoją) -> HAProxy (dystrybucja jednego adresu typu https://scontent-frx5-1.cdninstagram.com na wiele serwerów) -> Serwer uwierzytelnienia -> Serwer danych -> Odesłanie zdjęcia do przeglądarki

To nie jest tak, że Facebook czy inni giganci na co dzień nie mają awarii, po prostu o większości się nie dowiemy, bo działają takie mechanizmy jak wspomniane strefy / retencja - jeśli jeden element padnie to jego rolę natychmiast przejmuje drugi. Dlatego takie awarie jak dziś to rzadkość i zwiastun, że ktoś zrobił grubego fuckupa :)

#facebook #awaria #ciekawostki #instagram #whatsapp
  • 1