Защо се “счупи” Фейсбук?

В тази статия ще обясним техническите причини довели до глобалното спиране на най-популярната социална мрежа, случило се на 4 Октомври 2021.

Чисто технически, прекъсването беше причинено от системата, която управлява “гръбнака” на глобалната мрежа на Фейсбук. Гръбнакът е мрежата, която Facebook изгради, за да свърже всички техни изчислителни съоръжения заедно, която се състои от десетки хиляди километри оптични кабели, пресичащи земното кълбо и свързващи всички центрове за данни на Фесбук заедно.

Тези дата центрове могат да варират по размера си. Някои са масивни сгради, в които се помещават милиони машини, които съхраняват данни и изпълняват тежките изчислителни натоварвания, които поддържат Фейсбук, а други са по-малки съоръжения, които свързват вътрешната мрежа с интернет и хората, използващи платформите под шапката на Фейсбук (Инстаграм, УатсАп, Месинджър).

Когато отворите някое от приложенията и заредите своята фийд или съобщения, заявката на приложението пътува от вашето устройство до най-близкото съоръжение, което след това комуникира директно през “гръбнчната” мрежа на Фейсбук към по-голям център за данни. Това е мястото, където информацията, необходима на приложението ви, се извлича и обработва накрая се изпраща обратно по мрежата до телефона ви.

Трафикът на данни между всички тези изчислителни съоръжения се управлява от рутери, които определят къде да изпращат всички входящи и изходящи данни. И в обширната ежедневна работа по поддръжката на тази инфраструктура, инженерите често трябва да изключат част от “гръбнака” за поддръжка – може би ремонт на оптична линия, добавяне на повече капацитет или актуализиране на софтуера на самия рутер.

Проблемът

Именно това бе и причината за прекъсването. По време на една от тези рутинни задачи по поддръжката е била вкарана програмна команда с намерението да се извади миноторинг лог за наличието на глобален капацитет на гръбнака. Поради грешното вкарване на командата, от страна на системните администратори (чисто човешка грешка), цялата инфраструктура изграждаща “гръбнака” на мрежата е станала недостъпна, което ефективно е прекъснало връзката на центровете за данни на Facebook в световен мащаб. Системата е имала защити, за да предотвратят грешки като тази, но бъг в този инструмент за одит му е попречил да спре правилно погрешно въведената команда.

Тази грешка е довела до пълно прекъсване на връзката със сървъра между Фейсбук центровете за данни и интернет. И тази пълна загуба на връзка е предизвикала втори проблем, МНОГО по-голям от първия, който е влошил нещата още повече.

Една от задачите, изпълнявани от някой от по-малки съоръжения на Фейсбук, е да отговарят на DNS заявки. DNS е адресната книга на интернет, позволяваща простите уеб имена, които въвеждаме в браузърите, да бъдат преведени в конкретни IP адреси на сървъра. Тези запитвания за превод (от URL към IP) се обработват от така наречните авторитетни сървъри за имена (authoritative name servers), които сами заемат добре познати IP адреси, които от своя страна се пропагандират/известяват в останалата част от интернет чрез друг протокол, наречен Border Gateway Protocol (BGP).

За да гарантират надеждна работа, Фесйбук са нагласили техните DNS сървъри да деактивират тези BGP известия, ако те самите не могат да говорят с центровете за данни, тъй като се приема че това е индикация за нездравословна мрежова връзка. При положение че е прекъснат целият гръбнак, това автомачино доведе до това тези DNS сървъри да се самообявят за повредени и да изтеглят тези известия на BGP. Крайният резултат беше, че DNS сървърите са станали недостъпни, въпреки че все са работели. Това направи невъзможно за останалата част от интернет да може да се свърже със Фейсбук.

Всичко това се е случило много бързо. И докато инженерите са работели, за да разберат какво се случва и защо, те се се сблъскали с две големи препятствия: първо, не е било възможно да осъществят достъп до центровете за данни чрез нормалните средства, защото мрежите им са били изключени, и второ, поради пълната загуба на DNS са били счупени много от вътрешните инструменти(разбирай програми за отдалечен достъп и диганостика), които обикновено инженерите на Фейсбук използват за разследване и разрешаване на прекъсвания като това.

Единствения им избор е бил да изпратят програмисти на място в центровете за данни, за да да отстранят грешките и да рестартират системите. Но това отнема време, тъй като тези съоръжения са проектирани с високи нива на физическа и системна сигурност. В тях е трудно да се влезе и след като сте вътре, хардуерът и рутерите са проектирани да бъдат трудни за промяна, дори когато имате физически достъп до тях. Така че е отнело допълнително време за активиране на протоколите за защитен достъп, необходими, за да могат хората на място да работят по сървърите.

След като връзката с гръбначната мрежа е била възстановена вътрешния достъп на инженерите на Фейсбук до програмите за отдалечен контрол и диагностика са заработили отново. Това значи че вече за справяне с проблема може да се разчита на всички програмисти на компанията, а не само на няколкото човека “на терен” при сървърите.

Остава само да се пусне обратно достапът на хората до услугите на Фейсбук и проблемът е решен, нали?

Нищо подобно. Връщането на услугите ударно и наведнъж за всички може потенциално да причини нов кръг от сривове поради нарастване на трафика. Отделни центрове за данни са отчитали спад в потреблението на енергия в диапазона от десетки мегавата и внезапно обръщането на такъв спад в консумацията на енергия може да изложи на риск всичко – от електрически системи до кешове.

Тук на помощ е дошъл опита от вътрешно-фирмените тренинги за екстемни ситуации които компанията е провеждала на свойте служители. При упражнение с буря е симулирана сериозна системна повреда, като извеждаме услуга, център за данни или цял регион офлайн, като се тества цялата инфраструктура и софтуер. Опитът от тези тренировки е дал увереност и опит на инженерите да върнат нещата онлайн и внимателно да управлявяват нарастващото натоварване.

В крайна сметка поетапно, за да се избегнат пикове в натоварването, услугите на Фейсбук са възстановени, като цялата операция по остраняването на проблема е отнела около 24 и костваше над 6 милиарда долара загубена капитализация на фондовата борса за Фейсбук.