Як спроєктувати найнеефективніший дата-центр
Гіпотетичний посібник із PUE 4.0+: один улюблений сервер, RAID 0, тепло як стратегія охолодження та моніторинг, що стежить сам за собою.
Що ви будуєте
Кожен посібник на цьому сайті навчає правильно виконувати певне завдання: команди наведено в потрібному порядку, описано правильний результат і названо можливі причини збоїв. Цей посібник інший. Сьогодні ми суто гіпотетично спроєктуємо найнеефективніший дата-центр, який можуть створити гроші, електроенергія та пиха.
Нам потрібен показник, тому скористаємося показником самої галузі: PUE, Power Usage Effectiveness, тобто співвідношенням загального енергоспоживання об’єкта до потужності, яка фактично надходить до обчислювального обладнання. У hyperscale дата-центрі цей показник становить близько 1.1: майже кожен ват виконує корисну роботу. У прийнятній серверній кімнаті корпоративного рівня він становить 1.5. Наша ціль — 4.0 або вище. Це означає, що на кожен ват, витрачений на обчислення, ще три вати витрачаються марно. Ми часто посилатимемося на це число — так само, як серйозні посібники посилаються на резервні копії.
Вибір місця: тепло — головне
Охолодження — найбільша стаття витрат у справжньому дата-центрі, тому наш сервер протистоятиме законам термодинаміки на їхній території. Ідеальне місце — горище. З вікнами на південь. Бажано з мансардним вікном, розташованим так, щоб сонячне світло безпосередньо падало на сервер. Тоді машина отримуватиме і власне відпрацьоване тепло, і сонячне тепло — спільний результат роботи вашого рахунку за електроенергію та зорі.
Узимку охолодження забезпечує відкрите вікно. У справжніх дата-центрах також використовують зовнішнє повітря. Цю технологію називають free cooling; вона передбачає інженерний розрахунок, фільтрацію та контроль вологості. Ми використовуватимемо її випадково — через вікно, крізь яке потрапляють також дощ, пилок і щонайменше один дезорієнтований птах на квартал.
Для повного ефекту встановіть кондиціонер, а потім поставте обігрівач за два фути від його термостата й задайте температуру на два градуси вищу за цільову температуру кондиціонера. Тепер обидві машини працюватимуть безперервно, назавжди, у повній незгоді. Енергопостачальна компанія надішле вам листівку на Різдво.
Один сервер, великий і улюблений
Надлишковість послаблює відданість. У нашому дата-центрі рівно один сервер, і він величезний, тому що одна машина з 512 GB RAM виглядає як інфраструктура, тоді як чотири невеликі машини — як список справ.
У сервера є ім’я. Не hostname, а ім’я. Зазвичай Gandalf або Odin. Odin не можна вивести з експлуатації. Odin працює вже п’ять років:
$ uptime
09:14:02 up 1847 days, 3:22, 1 user, load average: 6.41, 6.38, 6.40Цим показником пишаються, тому його знімають на скриншот і публікують. Кожен зловмисник, який бачить цей скриншот, теж знаходить його вражаючим: 1,847 днів безперервної роботи означають 1,847 днів вразливостей ядра, які ніхто не виправляв. Перезавантаження все одно виключене, адже саме після перезавантаження з’ясовується, які сервіси запускали вручну у 2021 році й ніколи не описали в unit-файлі systemd. Ніхто не пам’ятає, які саме. Тепер сервер є опорою організаційної структури.
Сховище: швидкість та інші способи втратити дані
Диски налаштовано в RAID 0 заради продуктивності. Нуль означає кількість дисків, які можуть відмовити. Для максимального ефекту розподіліть дані масиву між сховищами різного походження: двома справними SSD, одним старим HDD і USB-накопичувачем із конференції. Надійність масиву буде рівною надійності цього USB-накопичувача. Саме так і задумано.
Резервні копії зберігаються в каталозі на тому самому масиві з назвою backup_final_v2_REAL. У ньому міститься tarball із попередньою схемою іменування. Резервні копії поза майданчиком представлені наліпкою з написом «налаштувати резервне копіювання поза майданчиком». Технічно вона зберігається поза майданчиком, коли ви забираєте її додому на кришці ноутбука.
Правильний результат має виглядати так: df показує використання на рівні 97%, а також є план вирішення проблеми в наступному спринті.
Мережа: єдиний ланцюг усього
DNS-сервер працює на самому сервері. Тому в разі відмови сервера разом із ним зникає DNS-запис, за яким можна було б знайти причину. Це називається консолідацією.
У 2021 році firewall тимчасово вимкнули для налагодження певної проблеми. Налагодження завершили, але firewall не ввімкнули знову. Усі порти на маршрутизаторі перенаправлено на сервер «щоб потім заощадити час». Панель адміністрування маршрутизатора доступна з боку WAN із заводським паролем для зручного віддаленого керування. Вашого та інших користувачів.
Останнім часом сервер працює незвично гаряче, навіть за мірками горища, а top показує, що найбільше ресурсів споживає процес із назвою xmrig. Ми припускаємо, що це інструмент моніторингу, який ми використовуємо. Ми його не встановлювали. Він з’явився самостійно невдовзі після перенаправлення портів, і ми сприймаємо це як ознаку активного розвитку екосистеми. Він працює цілодобово.
Живлення надходить через ланцюг побутових мережевих фільтрів, сумарна довжина якого перевищує відстань пішки до електрощита. Певною мірою це ефективно, адже до електрощита вам доведеться ходити часто.
Надлишкова складність
Відмовившись від надлишковості там, де вона справді потрібна, тепер додамо її там, де вона не потрібна. Головну сторінку компанії, один статичний HTML-файл, обслуговує Kubernetes-кластер із дванадцяти вузлів. Це реалізує те, що інженери називають архітектурою, орієнтованою на резюме: сторінка завантажується за ті самі сорок мілісекунд, за які її віддав би nginx, але тепер вона може вийти з ладу такими способами, для усунення яких доведеться залучати консультанта.
Для ізоляції сам кластер працює всередині віртуальної машини всередині віртуальної машини всередині віртуальної машини, причому кожен рівень додає безпеку так само, як кожен шар turducken додає ще один вид птиці. Форма зворотного зв’язку складається з дев’яти мікросервісів. Два з них ніколи не викликалися. Один із них критично потрібен для роботи, але ніхто не знає, який саме.
Опалення як сервіс
Сучасний сервер перетворює електроенергію на обчислення та тепло, і ми маємо намір максимально збільшити другий результат. Класичний варіант — медіасервер без GPU: транскодування одного потоку 4K на CPU може повністю завантажити шістнадцять ядер і прогріти невелику спальню. Це обігрівач, який також відтворює фільми. Амбітний оператор переходить до запуску великої мовної моделі на CPU — обігрівача на 70 мільярдів параметрів з API, який генерує токени зі швидкістю, яку найкраще вимірювати за сезонами.
Монітор контролює сам себе
Спостережуваність важлива, тому ми розгортаємо self-hosted монітор доступності на тому самому сервері, який він моніторить. Коли Odin виходить з ладу, разом із ним зупиняється і монітор. Ось у чому полягає «елегантність»: сповіщення не надходять. Немає сповіщень — немає інцидентів. Немає інцидентів — маємо ідеальну доступність за даними моніторингу. Щомісячний звіт ще ніколи не виглядав краще.
Для повноти зазначимо, що електронні листи зі сповіщеннями пересилаються через поштовий сервер, який також працює на Odin. Отже, конвеєр сповіщень повністю автономний — подібно до змії, яка поїдає власний хвіст і тому повністю нагодована.
Незручна частина
Ось розділ, який я весь час відкладав. Усе це не вигадка. Улюблений незамінний сервер, RAID 0 із резервними копіями на тому самому томі, «тимчасово» вимкнений firewall, кластер Kubernetes, що обслуговує одну сторінку, моніторинг, який стежить сам за собою, — я бачив кожен із цих випадків у production. Деякі з них я бачив цього року. Один або два з них я сам налаштував на початку кар’єри.
Справжня ефективність виглядає нудно. Саме тому в конкретний момент вона програє суперечку, але перемагає протягом десятиліття: PUE, про який ви ніколи не думаєте, бо його хтось інший спроєктував. Машини, розраховані на своє навантаження, а не на уявлення власника про себе. Радіус ураження, продуманий до виникнення аварії. Резервні копії, які перевіряють відновленням за розкладом, із нагадуванням у календарі та без героїзму. Нудна надлишковість: два дешеві компоненти щоразу кращі за один чудовий — у кожній відмові, про яку мене коли-небудь повідомляли.
А найефективніший дата-центр, яким ви можете керувати, — той, якого ви не запускаєте. VPS передає електроживлення, охолодження, надлишковість і апаратні відмови о 3-й годині ночі людям, які займаються цим у масштабі, буденно й без зайвого шуму. Це найвища похвала, яку може отримати інфраструктура. А вам залишається справді цікава частина — запуск власних сервісів поверх неї на машині, яку ви можете дозволити собі втратити. Саме на такій машині й слід проводити експерименти.
FAQ
Чи справді мені потрібно все це робити?
Ні. Кожен розділ цього посібника описує задокументований антипатерн, який уже коштував багатьом людям вихідних. Якщо ваша поточна конфігурація відповідає більш ніж двом розділам, перейдіть до останнього запитання цього FAQ і виконуйте рекомендації в наведеному порядку, оскільки це порядок пріоритетного усунення проблем.
Яке значення PUE насправді можна вважати хорошим?
У hyperscale-центрах обробки даних цей показник становить приблизно 1.1, добре організована серверна кімната підприємства забезпечує 1.4–1.6, а неопалювана шафа з конфліктом через електрообігрівач справді може перевищувати 3. У домашніх умовах неможливо змістовно конкурувати з показником 1.1. Це переконливий економічний аргумент на користь оренди обчислювальних ресурсів у постачальника, який може забезпечити таку ефективність.
Чи справді можна опалювати будівлю серверами?
Так, якщо це зроблено належним чином. У кількох країнах проєкти централізованого опалення використовують теплообмінники, щоб відбирати надлишкове тепло від центрів обробки даних і цілеспрямовано подавати його трубопроводами до будинків. Проблема не в тому, що тепло від серверів може обігрівати приміщення, а в тому, що це відбувається випадково, після чого випадковий результат називають стратегією.
Мій сервер уже виглядає саме так. Що робити спочатку?
Сьогодні вночі створіть резервні копії в місці, яке не є цим сервером, а потім перевірте відновлення. Неперевірена резервна копія — це лише припущення. По-друге, встановіть оновлення та виконайте перезавантаження, якого ви уникали, у заплановане вікно обслуговування. Так ви зможете побачити, що саме не працює. По-третє, усуньте єдину точку відмови: перенесіть DNS і моніторинг на інший сервер. Усе інше може зачекати до спокійнішого тижня, але ці три кроки — ні.