Aktualizacja dotycząca zakłóceń w usłudze DreamObjects

by DreamHost
Aktualizacja dotycząca zakłóceń w usłudze DreamObjects thumbnail

Witajcie, DreamHoście!

Ostatnio DreamObjects doświadczył przedłużającej się przerwy w działaniu. Usługa była w dużej mierze niedostępna przez około sześć godzin w piątek, 13 czerwca, i ponownie przez drugi okres około cztery godziny w sobotę, 14 czerwca. Chcieliśmy dać Wam trochę wglądu w to, co i dlaczego doszło do przerwy.

Najpierw, dla kontekstu, omówmy jak działają DreamObjects. DreamObjects istnieje jako zbiór serwerów, gdzie każdy serwer posiada kilka dysków twardych. Większość serwerów w zbiorze używa oprogramowania o nazwie Ceph, które jest rozproszonym, odpornym na awarie systemem przechowywania.

System rozproszony to taki, który przechowuje dane na wielu dyskach, często rozlokowanych na różnych serwerach. System tolerujący awarie to taki, który może obsłużyć utratę jednego lub więcej dysków, a nawet całych serwerów lub szaf serwerowych, bez utraty danych. Ceph (a więc i DreamObjects) jest zarówno systemem rozproszonym, jak i tolerującym awarie. W skrócie, wszystko, co do nas wysyłasz, jest zapisywane na trzech dyskach, aby chronić integralność i trwałość Twoich danych.

To nie oznacza, że każda maszyna w klastrze ma zadanie przechowywania twoich danych. Kilka z nich – bramki – to maszyny, z którymi rzeczywiście się komunikujesz za pomocą interfejsów API HTTP S3 lub Swift. Te bramki następnie wysyłają żądania w twoim imieniu do maszyn, które faktycznie przechowują dane.

A to prowadzi nas do pierwotnej przyczyny awarii: TL;DR bramki nie mogły komunikować się z serwerami przechowywania danych, przez co usługa wydawała się „nieczynna”, mimo że system przechowywania danych działał aktywnie; zapewniając bezpieczeństwo Twoich danych.

W piątek dokonano zmiany w „mapie CRUSH”, która informuje Ceph, jak dane powinny być rozdzielane między serwery i dyski tworzące DreamObjects. Te zmiany były konieczne, ale nie powinny były być wprowadzane wszystkie naraz. To spowodowało, że tyle danych przemieszczało się wewnątrz backendu klastra, iż żądania z bramek nie mogły być obsłużone w odpowiednim czasie. Dla bezpieczeństwa danych – które jest pierwszym zadaniem każdego systemu przechowywania – Ceph nadaje priorytet wewnętrznemu przemieszczaniu danych nad żądaniami z bramek. Nasi inżynierowie skutecznie, choć niezamierzenie, stworzyli wewnętrzny atak odmowy usługi przeciwko DreamObjects. Zmiana w mapie została dokonana w wyniku pilnego problemu z samym klastrem Ceph.  Jednakże zmiana ta została wprowadzona pośpiesznie i powinna była zostać wdrożona wolniej, podczas zaplanowanego wcześniej (i ogłoszonego) okna konserwacyjnego.

Przerwa w piątek została pogorszona przez błąd w wersji Ceph, którą wtedy używaliśmy. Ten błąd powodował, że poszczególne dyski stawały się nieosiągalne w sposób powtarzalny, co znacznie zwiększało czas odzyskiwania po zmianie mapy. W połowie przerwy zdecydowaliśmy się na aktualizację Ceph.  To ostatecznie pozwoliło klastrze szybciej wrócić do zdrowia niż mogłoby to nastąpić normalnie.

W sobotę kolejny błąd został odkryty pod wpływem stresu ciągłej odzyskiwania klastra, co również spowodowało, że wielokrotnie traciliśmy dostęp do indywidualnych dysków. Nasi przyjaciele z Inktank uprzejmie przygotowali dla nas niestandardową kompilację Ceph, aby rozwiązać ten problem.

Podsumowując, przerwa w działaniu DreamObjects była wynikiem zbyt agresywnej zmiany w konfiguracji Ceph i pogorszyła się przez ukryte błędy w Ceph.  Ostatecznie udało nam się szybko rozwiązać wszystkie problemy przy pomocy Inktank i sam Ceph został wzmocniony dzięki naszym odkryciom. Ważne jest również zaznaczenie, że podstawowy system przechowywania działał zgodnie z przeznaczeniem, zapewniając bezpieczeństwo danych klientów i wykluczając ryzyko ich utraty.

Jesteśmy absolutnie zaangażowani w zapewnienie wysokiej jakości i dostępności wszystkich naszych usług. Zespół DreamObjects zidentyfikował szereg zmian w naszym kodzie, procesach i procedurach, aby zapewnić, że tego rodzaju awaria już się nie powtórzy. Mianowicie, inżynierowie ds. operacji będą przeprowadzać audyt zmian w mapie „CRUSH” poprzez bardziej rygorystyczny proces przeglądu, w tym zewnętrzną recenzję przez Inktank, twórców Ceph. Ponadto, zmiany tej skali będą ogłaszane z dużym wyprzedzeniem i przeprowadzane w godzinach poza szczytem, aby ograniczyć ryzyko.

Jeszcze jedna rzecz.

Wszyscy klienci DreamObjects otrzymają 10% zniżki na rachunek za miesiąc czerwiec 2014.

Wiele podziękowań należy się naszym kolegom z DreamHost w Działach Operacji Centrum Danych, Wsparcia Technicznego oraz Operacji Chmurowych; oraz wspaniałym ludziom z Inktank za niestrudzone działania na rzecz przywrócenia dostępności i ochrony danych klientów.