LINUX.ORG.RU
ФорумTalks

Прозрение Штульмана

 ,


1

2

Штульман повзрослел, стал на год взрослее.

А было вот что.

Я последний год внедрял в нашей конторке всякие штуки, то Proxmox вместо пиратской VMWare, то Let’Encript, то собственное облако, то мониторинг, то настаивал на необходимости оповещений о значительный отвалах сервиса, то продвигал идею обезличивания одной ИС, которая ела кучу денег на защиту, но при этом совершенно неоправданно.

Чем все кончилось.

Не далее чем вчера, зашел на наш main_router и добавил на него правило. Отвалилась консоль и интернет в офисе.

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

Ну что же, на то чтобы прошить микротик прошивкой из архива месячной давности у коллеги ушло 8 часов. За это время всем коллегам была внедрена мысль что сделал все это я специально, что это саботаж.

Через час после инцидента, мне позвонила босс: «ну что у нас?». Я сказал: «добавлял сервис SNMP и хотел ограничить доступ к нему только локалкой. Добавил правило, указал порт, но не указал протокол, применил; после чего отпало управление и интернет в офисе», что для босса прозвучало «ДАОШРвЫДШоарфыдвтфмдоывамтдошукфитфткмдфгшукмтгшдффжщукшпомтжкф, я все сломал»

Утром мне сказали что теперь микротик будут администрировать столько с ее ведома, что все её одинесники сказали что лезть в микротик нельзя.

Я перечислил ей другие случаи глобальных сбоев: «аттестованная сертифицированная контора разослала на випнеты наших клиентов пустой список IP координаторов, время полного восстановления 180 дней», «внедрили линукс, наш главный одинесник 2 недели доказывал что линукс глючный и не может как винда, при этом клиенты почти не могли работать, после выделения серверу необходимых ресурсов работа нормализовалась», «наш главный одинесник пил 3 месяца – данный опыт бесценен».

Никто не говорил о саботаже.

Да похоже даже в глазах коллег я всего лишь мальчик который носит трубку и соединяет с «Викой».

А какой у тебя был факап, после которого ты потерял всю репутацию?

PS. Да, в этот раз, похоже действительно пора увольняться.



Последнее исправление: Shulman (всего исправлений: 1)

Ответ на: комментарий от alpha

зачем ему это?

ни плана работы, ни прочего нет.

достаточно того что «аккуратный» же (т.е. целиком полагается на неконтролируемый человеческий фактор)

в долгосрочной перспективе последствия не заставят себя долго ждать.

как работничек самого низшего звена он впринципе не виноват и ничего поделать не может, тут явный косяк руководства что оно не может нормально и «дуракоупорно» процесс поставить.

вангую что ни антистатических приспособлений, перчаток и прочих халатов там нету. очков для защиты глаз темболее.

поэтому обслуживания сарвар у этого подвала, получишь чьи-то лобковые и нетолько волосы, брови, ресницы и козюльки, прочие потожировые следы и крошки от шавернмы внутри.

n_play
()
Ответ на: комментарий от WitcherGeralt

если в файл не происходило записи мы можем сделать вывод о том что его содержимое не менялось?

TDrive ★★★★★
()

Не далее чем вчера, зашел на наш main_router и добавил на него правило. Отвалилась консоль и интернет в офисе.

сам дурак, изменения надо тестить и делать вне рабочего времени, оценивать риски

Я перечислил ей другие случаи глобальных сбоев:

а в Америке негров линчуют

после выделения серверу необходимых ресурсов работа нормализовалась

тестирование, нагрузочное тестирование, предварительный расчёт требуемых ресурсов - не не слышал…

сделать post mortem - найти пробелы в процедурах и процессах, сделать так чтобы не повторялось

WindowsXP ★★
()
Последнее исправление: WindowsXP (всего исправлений: 2)
Ответ на: комментарий от EugeneBas

также как и без него

То есть никак?

управлять всем этим хозяйством не имея рутовых привилегий и не бегать к админам на поклон, чтобы что-то изменить

Это на проде?

Ладно, если не хочешь детально, то вообще не вижу что тут обсуждать. Докер не для того чтобы вероломно ковырять сервера в обход админов, а для отвязки приложений от хоста. БД от хоста отвязывать нет смысла в общем случае, т.к. она всё равно привязана к хранилищу, и всё, чего ты добьёшься, это добавишь оверхеда. А если будешь хранить данные в вольюмах, как и задумано, добавишь дополнительную точку отказа, к тому же не сможешь в репликацию на уровне ФС.

WitcherGeralt ★★
()
Последнее исправление: WitcherGeralt (всего исправлений: 2)
Ответ на: комментарий от WitcherGeralt

получается зная о том изменилось ли время последней записи в файл мы можем сделать вывод о том изменилось ли содержимое файла или нет? с определенной вероятностью.

TDrive ★★★★★
()
Ответ на: комментарий от EugeneBas

ubuntu

Надеюсь, на достаточно свежем.

или я что-то упускаю?

Упускаешь. Даже учитывая, что кошмар оверлейфс побежден, я почти уверен, что живую миграцию бд ты не настривал. А без возможности увезти бд на другую ноду, на кой чёрт тебе бд в докере?

ya-betmen ★★★★★
()
Ответ на: комментарий от TDrive

с определенной вероятностью

Это уже какая-то квантовая запутанность. Если действительно нужно знать, считается хеш. Или хотя бы размер ещё учитывать в качестве фактора для начала.

WitcherGeralt ★★
()
Последнее исправление: WitcherGeralt (всего исправлений: 3)
Ответ на: комментарий от ya-betmen

А без возможности увезти бд на другую ноду, на кой чёрт тебе бд в докере?

Там же выше описывали кейс. Если тебе постгрес нужен другой версии чем доступен на системе, или если тебе хочется обновлять и тестить этот движок БД независимо от базовой системы.

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

Контейнер - это не обязательно значит облако и не обязательно живая миграция и т.п.

alpha ★★★★★
()

А какой у тебя был факап

BEGIN TRAN

DECLARE @ID int = 666
DECLARE @Value decimal(18,2) = 420.69

UPDATE [dbo].[Table]
SET [Value] = @Value
WHERE @ID = @ID

COMMIT TRAN

Это вместо WHERE ID = @ID. И все без исключения ячейки в колонке [Value] стали совершенно одинаковыми.

Не то чтобы прям уничтожило репутацию. Сам заметил что что-то не так (запрос должен был исполниться вмиг, вместо этого занял пару секунд что меня сразу насторожило), сам чекнул что в базе, сам сказал проджект-менеджеру что я облажался и следующих два часа я с жопой в мыле писал скрипт который восстановит оригинальные значения ячеек из истории. Благо в этой базе была создана таблица в которую пишутся все изменения, ибо таблица критичная. Так что когда американцы во своем часовом поясе начали работать, мы уже все вернули и вроде бы даже никто не заметил.

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

YogSagot ★★★
()
Ответ на: комментарий от WitcherGeralt

ахахахах ааааааа все я больше не могу………..

у хешей бывают коллизии, это так же не 100% способ, один и тот же хеш может получаться для разных файлов, в этом плане смотреть на время даже лучше. Если система сборки увидит изменения там где их небыло это всего лишь приведет к лишней работе, а если система сборки не заметит изменений то сломается билд.

TDrive ★★★★★
()
Ответ на: комментарий от WitcherGeralt

Это на проде?

Да, потому что бывает так, что заказывает систему одна контора, админит железки другая контора, а софт девелопит и поддерживает третья. И тикет на обновление\установку какой-либо туловины может выполняться бесконечное количество времени в таких условиях. И очень удобно в такой ситуации выбить докер и дальше ни в чем себе не отказывать.

к тому же не сможешь в репликацию на уровне ФС.

аппаратный RAID вполне себе работает и разливает данные по разным дискам, очень удобно, рекомендую

А если будешь хранить данные в вольюмах, как и задумано, добавишь дополнительную точку отказа

В теории да, на практике ни разу не стреляло

EugeneBas ★★
()
Последнее исправление: EugeneBas (всего исправлений: 1)
Ответ на: комментарий от TDrive

То есть, ты всё же не шланговал всё это время, а тупил. Ясненько.

На пальцах тебе объяснять, видимо, бессмысленно, но я попробую: видим изменение времени, смотрим размер — изменился, ок, не изменился, считаем хеш. Считать хеш быстрее чем собрать по-новой. Доходит?

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

Считать хеш и потом собирать, что будет гораздо более типовой случай, чем если время записи поменялось без изменений — это дольше чем просто собрать. А ещё хеши надо будет где-то хранить.

PolarFox ★★★★★
()
Ответ на: комментарий от WitcherGeralt

мы искали связь между «временем изменения файла» и «изменением файла», я не ожидал что для тебя сложно удерживать такой простой контекст разговора.

На пальцах тебе объяснять, видимо, бессмысленно, но я попробую: видим изменение времени, смотрим размер — изменился, ок, не изменился, считаем хеш. Считать хеш быстрее чем собрать по-новой. Доходит?

make смотрит только время, че ты привязался к этим хешам?) это просто еще один из способов.

TDrive ★★★★★
()
Ответ на: комментарий от ya-betmen

Надеюсь, на достаточно свежем. 18.04, докер распоследний с оф.сайта

А без возможности увезти бд на другую ноду, на кой чёрт тебе бд в докере?

СУБД можно поднять на любой ноде, сами данные живут на отдельном NASе, докер позволяет с этим жить удобнее, без поклонов админам, которые к нашей организации и организации заказчика не относятся

EugeneBas ★★
()
Ответ на: комментарий от TDrive

Ты его и нашёл. На уровне подброшенной монетки.

Ладно, ты надоел. Сам же потерял нить и обвинил в этом меня. Как с голубем спорить.

WitcherGeralt ★★
()
Ответ на: комментарий от alpha

Контейнер - это не обязательно значит облако и не обязательно живая миграция и т.п.

Конечно нет, но как ты сама заметила в этом случае

Докер для этого конечно не нужен

Естественно можно делать таким образом бд для непрерывной интеграции, или потыкать ту же бд внутри докера, но перед поездкой в прод всё равно будет нужно делать по-человечески. Как человек, который по рукожопости, на волне хайпа, крутил продовскую бд в докере, могу сказать что это совсем-совсем неправильный путь.

ya-betmen ★★★★★
()
Последнее исправление: ya-betmen (всего исправлений: 1)
Ответ на: комментарий от WitcherGeralt

для системы сборки важно с высокой точностью фильтровать те файлы которые не менялись, те которые можно не пересобирать, время изменения файла дает это.

То что ты считаешь что если время записи в файл изменилось значит файл поменялся с шансом 50% это видимо «или поменялся или нет» ?))

TDrive ★★★★★
()
Последнее исправление: TDrive (всего исправлений: 1)
Ответ на: комментарий от YogSagot

Вот поэтому нельзя писать update/delete руками вообще никогда.
Но, если уж пришлось писать апдейт ни в коем случае нельзя делать автоматическую транзакцию.

crutch_master ★★★★★
()
Ответ на: комментарий от EugeneBas

докер позволяет с этим жить удобнее, без поклонов админам, которые к нашей организации и организации заказчика не относятся

Тут мне возразить конечно нечего, но это всё таки не основной юзкейс для докера.

ya-betmen ★★★★★
()
Ответ на: комментарий от EugeneBas

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

аппаратный RAID вполне себе работает и разливает данные по разным дискам, очень удобно, рекомендую

Я этой теме не разбираюсь, так что вопрос без подвоха. А какое отношение рейд имеет к репликации БД? Смысл в том, чтобы имея физическую копию данных, иметь и читающую с них реплику. И возможность фейловера (выше, как обычно, обозвал фейловер фоллбеком 🤦).

WitcherGeralt ★★
()
Последнее исправление: WitcherGeralt (всего исправлений: 2)
Ответ на: комментарий от ya-betmen

но перед поездкой в прод всё равно будет нужно делать по-человечески

Чем запуск движка БД в контейнере нечеловечен-то? Контейнер - это namespace для процессов.

alpha ★★★★★
()
Ответ на: комментарий от alpha

Чем запуск движка БД в контейнере нечеловечен-то?

Если бд на пару десятков миллионов записей - ну норм. А когда там терабайты данных - это забей.

crutch_master ★★★★★
()
Ответ на: комментарий от WitcherGeralt

А, ну тогда нам и размер надо где-то хранить.

Да и правка без изменения размера не такое уж и редкое явление, например с отступом кнопочки в гуе играемся.

Дату изменения хранит сама ФС, а для всего остального придётся где-то держать БД с хешами и размерами файлов.

KISS, все дела. False negative добиться трудно, от false positive никто не пострадает.

PolarFox ★★★★★
()
Ответ на: комментарий от PolarFox

Со временем не так очевидно, но хеши уже хранит гит. Мб где-то уже интеграция даже реализована. Я не в курсе.

WitcherGeralt ★★
()
Ответ на: комментарий от crutch_master

Если бд на пару десятков миллионов записей - ну норм. А когда там терабайты данных - это забей.

Вот мне кстати тоже интересно в чем разница? докер в линуксе работает на cgroups, а cgroups это просто навешивание ограничений на процесс. Можно вообще запилить руками контейнеризацию создав пару файлов в /sys/fs/cgroup.

TDrive ★★★★★
()
Последнее исправление: TDrive (всего исправлений: 1)
Ответ на: комментарий от WitcherGeralt

Но звучит так будто в случае факапа, админы разведут ручками и покажут пальцем на вас, и будут абсолютно правы.

Да, так и будет, но всех всё устраивает. Мы грязными руками не лезем в операционку и поэтому сервер (железка) всегда доступен. А они нам не мешают с софтом делать всё, что мы хотим и максимально быстро удовлетворять хотелки заказчика.

Я этой теме не разбираюсь, так что вопрос без подвоха. А какое отношение рейд имеет к репликации БД? Смысл в том, чтобы имея физическую копию данных, иметь и читающую с них реплику. И возможность фейловера

Получается так, что СХД сама реплицирует данные на N жестких дисков и таким образом повышается надежность хранения и скорость чтения, т.к. можно читать аппаратно в несколько потоков

EugeneBas ★★
()
Ответ на: комментарий от EugeneBas

А че у вас за базы данных? Они как то обслуживаются? Вы их сами конфигурируете? Размеры всяких кешей…

TDrive ★★★★★
()
Ответ на: комментарий от TDrive

Мускул обычный, периодически обновляем схемы БД, версию самой СУБД заморозили для стабильности. Конфигурит девопс из нашей команды.

EugeneBas ★★
()
Ответ на: комментарий от alpha

Вот рабочая база, которая крутится и которая в согласованном состоянии. Туда приходят запросы 24/7. И вот, тебе надо такую же базу в изолированный контейнер или куда-то там - не важно вообще. Чтобы это сделать надо последовательно перевести копию этой субд из её текущего состояния в требуемое. Если у тебя мелкий магазин, то проблем нет - тормозишь, копируешь всё, что есть, запускаешь. Всё занимает минуту и даже если ночью и будет пара клиентов, которые не смогли что-то там купить - не проблема. Но когда данных терабайты, всё постоянно крутится, всё ответственное, то возникают сложности с тем, чтобы всё это остановить. У нормальных субд для этого есть журнал транзакций (как лог коммитов у гит), вот по нему, можно базу привести в любое состояние. Этот журнал перекидывается на другой сервер и там база «едет» в точку назначения. Куда там совать докеры я не знаю, обычно под это держат отдельный хост, где крутится только бд, а у некоторых еще и вообще ничего нет кроме прода. Есть варианты, когда для тестов делают контейнер, туда засовывают какие-то крошечные количества данных, чтобы что-то можно было протестить, но это, конечно, не полноценная бд в контейнере.

crutch_master ★★★★★
()
Последнее исправление: crutch_master (всего исправлений: 1)
Ответ на: комментарий от crutch_master

Можно же примонтировать не вольюм, а физическую директорию на хосте.

Это делает контейнер бессмыслицей. Но факт, что возможность есть.

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

Ой, да забыл уточнить, что база-то не совсем честный мускул и @TDrive наврал, у нас percona, а мускулом мы ее для простоты между собой называем.

Percona размазывается по кластеру и для ее работы обязательно поднимать несколько инстансов.

EugeneBas ★★
()
Ответ на: комментарий от zgen

Ок, не саботаж. Разгилдяйство. В остальном сути не меняет.

mogwai ★★★★
()
Ответ на: комментарий от Harald

а надо в нерабочее штоле

Твоё рабочее, основной массы - нерабочее.

turtle_bazon ★★★★★
()
Ответ на: комментарий от Leupold_cat

Да, мой косяк. Но в педивикию я полез потому что в мозгах история про башмаки на конвейерной ленте, о чём в ней написано, где-то глубоко засела не только в ключе «специально оставляли», но и «по халатности оставляли». Надо :s/ по памяти сделать.

mogwai ★★★★
()
Ответ на: комментарий от crutch_master

У нормальных субд для этого есть журнал транзакций (как лог коммитов у гит), вот по нему, можно базу привести в любое состояние.

Никакой разницы с контейнером.

Куда там совать докеры я не знаю, обычно под это держат отдельный хост, где крутится только бд, а у некоторых еще и вообще ничего нет кроме прода

Вот туда и совать. На этом одном сервере вместо запуска systemctl start postgresql-server запускаешь podman run local/postgresql-server:latest.

Ты почему-то считаешь что контейнер как-то меняет работу с процессами. А он не должен ничего менять. В нём только движок. Контейнерная обертка ничем не помогает миграциям собственно данных, но и не мешает.

alpha ★★★★★
()
Ответ на: комментарий от TDrive

а если система сборки не заметит изменений то сломается билд

Вот помню в Turbo C и TASM клепал проекты на клоне IBM AT со сдохшей батарейкой в школе, приходилось руками удалять .obj файлы, иначе турбик пропускал компиляцию и сразу линковал.

luke ★★★★★
()
Ответ на: комментарий от zgen

Ну да, ну да. Только

для десятка команд в /ip firewall он работает хорошо. Не отмазывай поцыэнта.

mogwai ★★★★
()
Ответ на: комментарий от alpha

Вот туда и совать. На этом одном сервере вместо запуска systemctl start postgresql-server запускаешь podman run local/postgresql-server:latest

И что получиться? Вместо прода запустится тестовый сервак?

На этом одном сервере

Ага. Пусть прод приляжит, когда система упрётся в io.

Никакой разницы с контейнером.

Тогда зачем он нужен, если субд делает всё тоже самое + логи транзакций меньше надо таскать по сети, чем целый контейнер со всем данными?

crutch_master ★★★★★
()
Ответ на: комментарий от crutch_master

Тогда зачем он нужен

Очевидно же, из-за того что версия из реп устарела ещё до релиза дистрибутива.

PolarFox ★★★★★
()

Дежа-вю ?

подобная-же тема, уже была, от того-же автора..с год может.

или он так своеобразно ДР празднует :-)

MKuznetsov ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.