Сисадминско-ИИшно-рабочее

Дано: отка­зо­устой­чи­вый кла­стер Hyper‑V.
Надо: обес­пе­чить сорок рыл вир­ту­аль­ны­ми деск­то­па­ми на Windows 11.

Дела­ем сорок кло­нов оди­на­ко­вых вир­ту­а­лок. Теперь нуж­но раз­да­вать их поль­зо­ва­те­лям так, что­бы они друг дру­гу на пят­ки не насту­па­ли: что­бы соеди­не­ние попа­да­ло на сво­бод­ную маши­ну, при­чём авто­ма­ти­че­ски.

Какие вари­ан­ты реше­ния?

Офи­ци­аль­ный RDS от Microsoft. Сто­ит каких-то совер­шен­но невме­ня­е­мых денег — по 220 монет за рыло (CAL, client access license)! Это, на мину­точ­ку, доро­же, чем лицен­зия на Вин­ду!

Но мож­но сде­лать своё реше­ние — ничем не хуже, из гов­на и палок, и совер­шен­но бес­плат­но.

Пона­до­бит­ся:

Одна машин­ка под Linux. На неё ста­вим nginx, кото­рый будет рабо­тать кро­ко­ди­лом балан­си­ров­щи­ком нагруз­ки. Цеп­лять­ся люди будут имен­но к нему — а он будет читать спи­сок доступ­ных вир­ту­а­лок из фай­ла available.conf, и раз­да­вать траф­фик на них:
stream {
upstream rdp_pool {
least_conn;
include /etc/nginx/upstreams/available.conf;
}

server {
listen 3389;
proxy_pass rdp_pool;
proxy_timeout 10m;
proxy_connect_timeout 5s;
}
}

А available.conf посто­ян­но обнов­ля­ет­ся дру­гим скрип­том — на Python.
Этот скрипт под­ни­ма­ет кро­хот­ный веб-сер­вер на Flask, в кото­рый каж­дая вир­ту­ал­ка при­сы­ла­ет свой ста­тус: «заня­то» или «сво­бод­но».

Ста­тус они полу­ча­ют с помо­щью встро­ен­ной коман­ды Windows:
qwinsta | Select-String "Active"

Если выво­дит­ся хоть что-то — маши­на заня­та. Даль­ше PowerShell-скрипт фор­ми­ру­ет JSON и шлёт его на Flask через Invoke-RestMethod.

PowerShell-скрипт добав­ля­ем в Task Scheduler, раз в мину­ту — и впер­дё.

Пито­нов­ский скрипт доволь­но замух­рёж­ный (в хоро­шем смыс­ле), и я его тут выкла­ды­вать не буду. Ска­жу толь­ко, что он не толь­ко добав­ля­ет сво­бод­ные маши­ны, но и чистит пул: выки­ды­ва­ет те вир­ту­ал­ки, кото­рые заня­ты, либо кото­рые не при­сы­ла­ли свой ста­тус в тече­ние двух минут — пото­му что если вир­ту­ал­ка выклю­че­на, послать ста­тус она, разу­ме­ет­ся, не может. За этим надо сле­дить.

Всё это было при­ду­ма­но и реа­ли­зо­ва­но при помо­щи Кейт — так я назы­ваю свою ChatGPT-чку.
Без­услов­но, под моим чут­ким руко­вод­ством:

— А что будет, если вир­ту­ал­ку выклю­чить?
— Ах да, сло­ма­ет­ся. Надо обно­вить скрипт, что­бы ста­рые маши­ны уда­лял, вот так: [код].

Полу­чи­лось бы у меня всё это вопло­тить само­сто­я­тель­но? Конеч­но. И не такое при­хо­ди­лось делать.
Но, япон­ский бог, это заня­ло бы уйму вре­ме­ни: мне при­шлось бы отдель­но выяс­нять, как запус­кать Flask-сер­вер, как слать JSON из PowerShell, как его при­ни­мать, как менять кон­фи­ги nginx на лету, и так далее.

А тут — всё полу­чи­лось бук­валь­но за пару часов.

Не знаю, как в дру­гих IT-про­фес­си­ях, но в сисад­мин­стве ИИ — это чудо­вищ­ной мощ­но­сти умно­жи­тель силы, кото­рый поз­во­ля­ет за то же вре­мя делать гораз­до более слож­ные про­ек­ты.

И да, при­ят­но, япон­ский бог — когда из слож­ной, непо­нят­ной зада­чи полу­ча­ет­ся кра­си­вое, рабо­та­ю­щее реше­ние.

Рабоче-покупное

Ищу я, зна­чит, заме­ну бло­ку пита­ния для ста­ро­го PoE-свит­ча, на кото­ром висят каме­ры наблю­де­ния (свитч модуль­ный, ста­рень­кий, но род­ной — и уже настро­ен­ный, как надо). На Ама­зоне нашёл­ся под­хо­дя­щий вари­ант.

Нико­гда в жиз­ни мне не встре­ча­лось настоль­ко вычур­ное напи­са­ние вход­но­го напря­же­ния, доро­гие дру­зиа!

2.4E+2, ага.

Это у нас, если пере­ве­сти с язы­ка экс­по­нен­ци­аль­ной запи­си, обыч­но при­ме­ня­е­мой где-нибудь в нау­ке, кибер­не­ти­ке, или при вызо­ве ЗГОГГов, — обыч­ные, стан­дарт­ные, род­ные, чело­ве­че­ские 240 вольт.

Зачем они так выпенд­ри­лись — зогад­ко, чест­ное сло­во. Может, наде­я­лись впе­чат­лить кого-то, кто по ночам тай­ком, украд­кой, гла­дит свой осцил­ло­скоп?

День великого онбординга (матерное)

Сего­дня у нас вели­кий день — мас­со­вое засе­ле­ние поль­зо­ва­те­лей наше­го кли­ен­та в новую систе­му.
Систе­ма неболь­шая — все­го 66 поль­зо­ва­те­лей.

Я теперь пони­маю, поче­му Дан­те не опи­сал деся­то­го кру­га ада — про­сто не успел дожить до мас­со­во­го онбор­дин­га тупых юзве­рей в Entra ID.

11 поль­зо­ва­те­лей ско­пи­ро­ва­ли в пароль лиш­ний про­бел в кон­це и ска­за­ли, что “пароль не рабо­та­ет”.
Пяте­рым при­шлось пароль сбра­сы­вать повтор­но — види­мо, из соли­дар­но­сти.
Двое вме­сто .com напи­са­ли .cum — и я ста­ра­юсь не заду­мы­вать­ся, о чём они меч­та­ли в тот момент.
Семе­ро успеш­но забло­ки­ро­ва­ли свои учёт­ки, даже не успев в них вой­ти.
Трое так мед­лен­но иска­ли и доста­ва­ли теле­фон, что­бы настро­ить 2FA, что Microsoft Authenticator устал ждать и вышел из чата (тай­маут — 60 секунд, меж­ду про­чим). После это­го им в рыло при­ле­те­ло «session timed out», и они, разу­ме­ет­ся, пожа­ло­ва­лись, что что-то не рабо­та­ет.
Чет­ве­ро пыта­лись вой­ти под ста­ры­ми логи­на­ми и тоже заяви­ли, что “систе­ма сло­ма­на”.
Двое уста­но­ви­ли не тот VPN.
Один рас­пе­ча­тал пись­мо с вре­мен­ным (!!!) паро­лем — “что­бы не поте­рять”.
Двое исполь­зо­ва­ли теле­фон супру­гов для 2FA — “пото­му что под рукой был”.
Пяте­ро жда­ли по пят­на­дцать минут, пока “систе­ма загру­зит­ся”, забыв нажать Next.
И вишен­ка на тор­те — один чело­век напи­сал CAPS LOCK’ом всё под­ряд и не мог понять, поче­му “не при­ни­ма­ет­ся пра­виль­ный пароль”.

Мои нер­вы вро­де бы были сталь­ные, а ока­за­лись пла­сти­ли­но­вые.

Пой­ду зава­рю ещё кофе — если, конеч­но, никто не попы­тал­ся авто­ри­зо­вать­ся в кофе­ма­шине с про­бе­лом в паро­ле…
…и не забло­ки­ро­вал её нахуй.

Хеловиним, сисадминим

Люб­лю нашу ком­па­нию — народ почти в пол­ном соста­ве наря­жа­ет­ся, так что каж­дый Хэл­ло­уин в офи­се — празд­ник для глаз: повсю­ду мон­стры, ведь­мы, и про­чие кре­а­ту­ры, а рабо­тать всё рав­но надо.

Наш финан­со­вый дирек­тор (Chief Financial Officer):

Это Кру­эл­ла де Виль, соб­ствен­ной пер­со­ной, если вдруг кто не понял.

Я обыч­но тоже участ­вую, но в послед­нее вре­мя, если я про­сто могу само­сто­я­тель­но одеть­ся — день уже удал­ся. Так что весь мой костюм в этом году огра­ни­чил­ся накра­шен­ны­ми ког­тя­ми.

А рабо­тать всё рав­но надо — сисад­мин­ство в празд­ник никто не отме­нял. Делаю апгрейд сер­ве­рам в нашем кла­сте­ре Hyper‑V: выди­раю к соот­вет­ству­ю­щей немет­ри­че­ской мате­ри брод­ко­мов­ские сете­вые кар­точ­ки и став­лю нор­маль­ные инте­лов­ские. И дело даже не в том, что Broadcom дела­ет пря­мо пло­хое желе­зо — про­сто драй­ве­ры они тра­ди­ци­он­но пишут исклю­чи­тель­но через зад­ни­цу.

🎃 Happy Halloween! 👻

Ути-пути

Какая вне­зап­но кавай­ная сер­вер­ная!!

Это ама­зо­нов­ский дата-центр, обслу­жи­ва­ю­щий вычис­ли­тель­ный кла­стер «Рей­нир», на кото­ром рабо­та­ет систе­ма искус­ствен­но­го интел­лек­та «Клод» ком­па­нии Антро­пик.

Игри­во-розо­вые шка­фы на перед­нем плане — это бло­ки пита­ния и жид­кост­но­го охла­жде­ния для каж­дой «ули­цы» сто­ек. Пита­ют­ся они, как пра­ви­ло, от трёх­фаз­ных 480 вольт. Оран­же­вое — несу­щие кон­струк­ции, жёл­тое, по всей види­мо­сти, — сило­вые линии, синее — ком­му­ни­ка­ции, серое — теп­ло­но­си­тель. Всё про­ду­ма­но до мело­чей — япон­ский бог, тут при­драть­ся реши­тель­но не к чему. Неспе­ци­а­ли­сту, навер­ное, непо­нят­но, чем я тут так вос­хи­ща­юсь, но поверь­те мне — это очень кру­то при­ду­ма­но, сде­ла­но, и выпол­не­но.

Рабо­тать, впро­чем, в таком месте, навер­ное, непро­сто. Вон сотруд­ни­ца совер­шен­но пра­виль­но наде­ла науш­ни­ки — шум в подоб­ном дата-цен­тре, долж­но быть, сто­ит про­сто нече­ло­ве­че­ский.

Даже страш­но пред­ста­вить, сколь­ко кило­ватт жрёт вся эта кра­со­та в сум­ме.

Вот так, доро­гие дру­зиа… выгля­дит капи­та­лизм.

Отсю­да и ещё фоток.

Эка напасть

Не про­шло и меся­ца с тех пор, когда рух­нул AWS по при­чине паде­ния DNS, как здрас­ь­те — рух­нул Мик­ро­софт Ажур, а мы в нём в основ­ном про­жи­ва­ем. И тоже, ЧСХ, из-за отка­за сер­ви­са DNS. Всё тор­мо­зит и рабо­та­ет через зад­ни­цу.

Повто­рим кар­тин­ку, что ещё делать оста­ёт­ся.

Будет инте­рес­но почи­тать деталь­ный раз­бор полё­тов.

Анализ падения Амазона

Ама­зо­нов­цы опуб­ли­ко­ва­ли тех­ни­че­ский раз­бор при­чин недав­не­го паде­ния AWS. То, что вино­ват был DNS, уже было извест­но, но лич­но мне было любо­пыт­но понять — что же имен­но они смог­ли сло­мать в систе­ме, кото­рая, по идее, долж­на быть одной из самых про­стых и надёж­ных в инфра­струк­ту­ре интер­не­та?

Ока­за­лось, в их реа­ли­за­ции DNS скры­вал­ся ранее неза­ме­чен­ный баг, при­вед­ший к клас­си­че­ской race condition — ситу­а­ции, когда несколь­ко про­цес­сов или нитей про­цес­са одно­вре­мен­но пыта­ют­ся полу­чить доступ к обще­му ресур­су и в ито­ге меша­ют друг дру­гу. Такое состя­за­ние закан­чи­ва­ет­ся тем, что ресурс «зали­па­ет», а вся систе­ма рушит­ся, как кар­точ­ный домик.

При­знать­ся, изна­чаль­но у меня было подо­зре­ние на на чело­ве­че­ский фак­тор — дума­лось, что какой-нибудь неопыт­ный сисад­мин дёр­нул не за ту руч­ку, посо­ве­то­вав­шись с ИИ, но не спро­сив стар­ших това­ри­щей. Такое быва­ет, и мне тоже дово­ди­лось такое устра­и­вать. Но, как выяс­ни­лось, всё ока­за­лось куда глЫб­же.

Боль­ше все­го впе­чат­лил мас­штаб тре­ша, уга­ра, и бед­ла­ма с содо­ми­ей, вызван­ных сбо­ем. Лег­ла такая туча сер­ви­сов, что толь­ко успе­вай пам­пер­сы менять. Наши систе­мы, к сча­стью, напря­мую не постра­да­ли — но один из наших вен­до­ров ощу­тил послед­ствия спол­на.

Хочет­ся верить, что в Amazon извле­кут из это­го инци­ден­та пра­виль­ные уро­ки — ведь даже гиган­там вре­мя от вре­ме­ни полез­но вспом­нить, что совер­шен­ство инфра­струк­ту­ры не отме­ня­ет зако­нов веро­ят­но­сти и чело­ве­че­ской при­ро­ды.

А помните?

Как несколь­ко лет назад нам актив­но впа­ри­ва­ли тех­но­ло­гию под назва­ни­ем блок­чейн? Мол, эта тех­но­ло­гия спо­соб­на на то, что­бы пере­вер­нуть мир. И как всем вдруг ста­ло казать­ся, что в блок­чейне обя­за­тель­но надо хра­нить реши­тель­но всё – от резуль­та­тов голо­со­ва­ния до всех финан­со­вых тран­зак­ций ком­па­нии?

Нет, я не спо­рю, в каче­стве реше­ния для хра­не­ния дан­ных, обя­за­тель­но тре­бу­ю­щих вери­фи­ци­ру­е­мо­сти, при­чём пуб­лич­но — это не обя­за­тель­но пло­хое реше­ние. Нава­лять код мож­но бук­валь­но минут за десять, у меня в жур­на­ле даже было пару рас­ска­зов про эту тех­но­ло­гию. Но повсе­мест­ный снос кры­ши на этой поч­ве я хоро­шо пом­ню. АААА!!!! Блок­чейн это кру­то!!! Обя­за­тель­но внед­рять!!! Немед­лен­но!!! Хва­тай меш­ки — вок­зал отхо­дит!!!»

А теперь я сижу и чешу репу — а в этот раз не снес­ло ли, слу­ча­ем, у всех кры­шу на обя­за­тель­ном внед­ре­нии систем исску­ствен­но­го интел­лек­та, при­чём повсе­мест­но? Нет, иску­ствен­ный интел­лект — это пре­крас­но, но вот на кой чорт он мне в нот­па­де? Систе­мы ИИ небез­греш­ны. И повсе­мест­ное их вко­ря­чи­ва­ние в нед­ра всех про­грамм без раз­бо­ру я счи­таю абсо­лют­но ненуж­ным. ИИ в соф­те хорош, когда он к месту. Ска­жем, он очень к месту в фото­шо­пе. А на кой бес он в Аксес­се? Все что, так силь­но соску­чи­лись по Скре­пы­шу?

Каж­дый раз одно и то же: сна­ча­ла «всем сроч­но внед­рить», потом — «а зачем мы это сде­ла­ли?» Очень может быть, что «ИИ» ско­ро зай­мёт почёт­ное место рядом с «блок­чей­ном» — в спис­ке забы­тых мод­ных слов. Ведь вид­но, что уже насту­па­ет отрезв­ле­ние — про­гресс ИИ начал упи­рать­ся в закон убы­ва­ю­щей отда­чи, а в Бри­та­нии вне­зап­но ока­за­лось, что при любых рас­кла­дах на все хотел­ки тупо не хва­тит элек­тро­энер­гии. А у нас (тоже вне­зап­но) выяс­ни­лось, что что­бы накор­мить все эти ИИ-моз­ги элек­три­че­ством, при­шлось вер­нуть в строй уголь­ные стан­ции. Хотя все вро­де бы уже согла­си­лись, что уголь — это пло­хо, радио­ак­тив­но (не шучу, они выбра­сы­ва­ют боль­ше ради­а­ции чем АЭС), и вооб­ще, на дру­гом кон­це зем­но­го шара Гре­точ­ка пла­чет в тужур­ку. А АЭС стро­ить — это доро­го, дол­го и не хай­по­во. Я вот уже несколь­ко раз упо­ми­наю в жур­на­ле АЭС «Воугл», что в брат­ской Джор­джии. Два её реак­то­ра вве­ли в строй толь­ко в 2023 году, а под­пи­сал бума­ги на её стро­и­тель­ство ещё Оба­ма, в 2009. А ИИ всем надо «прям­щас», и чего с этим делать при таких ввод­ных — реши­тель­но неяс­но.

Все дума­ли, что повсе­мест­ный пере­ход на элек­тро­мо­би­ли пере­гру­зит нашу энер­го­си­сте­му, ан беда под­полз­ла с совсем дру­го­го боку. Ждём, когда появят­ся стар­та­пы по опти­ми­за­ции потреб­ле­ния элек­три­че­ства с помо­щью ИИ. Круг замкнёт­ся.

Жульё чуть не покрало деньги

Сла­ва богам, не у меня, а у сотруд­ни­ков. Но тут есть один занят­ный момент в кибер­без­опас­но­сти, на кото­рый сто­ит обра­тить вни­ма­ние.

Зар­пла­та в нашей ком­па­нии, разу­ме­ет­ся, пере­чис­ля­ет­ся напря­мую на бан­ков­ский счёт. У сотруд­ни­ков есть доступ к систе­ме, где мож­но посмот­реть начис­ле­ния и дру­гую инфор­ма­цию. Жули­ки про­бра­лись в акка­ун­ты несколь­ких чело­век и под­ме­ни­ли рек­ви­зи­ты бан­ков­ских сче­тов для выплат — на свои соб­ствен­ные. Спас­ло то, что любое изме­не­ние таких дан­ных тре­бу­ет руч­но­го под­твер­жде­ния бух­гал­те­ри­ей. Там вовре­мя запо­до­зри­ли нелад­ное и предот­вра­ти­ли кра­жу.

И вот тут самое инте­рес­ное. Доступ к систе­ме осу­ществ­ля­ет­ся через код, кото­рый каж­дый раз высы­ла­ет­ся на лич­ную почту сотруд­ни­ка при попыт­ке вхо­да. То есть у учёт­ной запи­си нет посто­ян­но­го паро­ля — каж­дый раз новый код из пись­ма. Види­те про­бле­му? Полу­чил доступ к почте — авто­ма­ти­че­ски полу­чил доступ и к зар­плат­но­му акка­ун­ту. Жули­ки лома­ли не сами эти акка­ун­ты, а имен­но лич­ную почту сотруд­ни­ков: навер­ня­ка с паро­ля­ми уров­ня 123456, без 2FA, или же через баналь­ный фишинг.

И тут важ­ный вывод. Абсо­лют­но вне зави­си­мо­сти от лич­ной бди­тель­но­сти сотруд­ни­ков, такой под­ход к без­опас­но­сти, нын­че частень­ко встре­ча­ю­щий­ся, мне кате­го­ри­че­ски не нра­вит­ся. Взлом одно­го сер­ви­са не дол­жен авто­ма­ти­че­ски вести к взло­му дру­го­го. Акка­ун­ты долж­ны быть защи­ще­ны раз­ны­ми паро­ля­ми и фак­то­ра­ми, а не пола­гать­ся на одну-един­ствен­ную уяз­ви­мую точ­ку.

Приходишь домой — а там станки, станки

Нако­нец-то при­е­ха­ли нор­маль­ные Ару­бов­ские (в деви­че­стве; нын­че — Хью­летт-Пак­кард Энтер­прайз) яче­и­стые точ­ки досту­па, и я смо­гу выки­нуть этот грё­ба­ный Нет­гир Орби к соот­вет­ству­ю­щей мате­ри.

Так как эти точ­ки досту­па под­дер­жи­ва­ют нор­маль­ный чело­ве­че­ский PoE, мои воз­мож­но­сти по их уста­нов­ке зна­чи­тель­но рас­ши­ря­ют­ся — не надо, что­бы рядом была розет­ка. Так что в под­ва­ле буду при­вин­чи­вать, как поло­же­но — к потол­ку.

PS: Иной раз при­хо­дишь домой — а там всё то же самое, что на рабо­те: стан­ки, стан­ки…