172 похожих чатов

Всем доброе утро! Планируем переход на кубернетес в проде и деве,

основной вопрос как организовать базы данных при маштабируемых сервисах? Т.е. Какие бест практикс подходы используют? Выносят базы отдельно? В кубере? (если да, то как организовывается передача хранилища бд между нодами?)

12 ответов

10 просмотров

Ну не у девопсов же это спрашивать. https://t.me/itarchitect

Den-Morozov Автор вопроса
Я и твой кот
Ну не у девопсов же это спрашивать. https://t.me/...

Речь про кубер в частности) у кого как устроено, поделятся люди добрые)

базы закрепляется на конкретные ноды, используют local volumes, request/limits выставляются по максимум по ноде, вешаются taints чтобы туда не заезжали другие поды, ну это если мы про нормальную нагрузку говорим . Все решения с сетевым стораджем медленные и вообще зависит от твоей сети сильно, есть ли 10гбит сети? можно ли под трафик сетевого стораджа выделить отдельный сетевой интерфейс? Надо тестировать хватает ли такой производительности.

Den-Morozov Автор вопроса
Dmitry Sergeev 🇺🇦
базы закрепляется на конкретные ноды, используют l...

Спасибо! А если нода где расположен под выходит из строя, а база на local volumes, то как решаете?

Den Morozov
Спасибо! А если нода где расположен под выходит из...

Штатные механизмы отказоустойчивости в СУБД. А как вы думаете куб вам отказоустойчивость обеспечит? Давайте рассмотрим ситуацию: 1) Нода падает, в течении ~40 секунд (не меньше) kubernetes понимает что нода упала, и помечает ее как notReady 2) Затем в зависимости от настроек, но по умолчанию это 300 секунд, kubernetes начнет выселять от туда поды 3) ТОЛЬКО если база данных была в deployment, то под с ней переедет на новую ноду в течении какого-то неопределенного времени (зависит от многих факторов + фактор как быстро подниметься база, а может вообще не подняться так как нода резко отказала, проццесс СУБД завершился некорректно, бинарные данные базы могут быть испорчены, и придется вручную восстанавливать (ну это самый плохой вариант)) Если же база поднята в statefulset, то под с базой в случае отказа ноды вообще никуда не уедет, без вручного вмешательства, также для того чтобы избежать сплитбрейна, придется огранизовать какое-то добивание ноды, дабы минимизировать вероятность сплитбрейна и корапта данных. В итоге мы получаем минимальный простой ~ 6 минут, конечно можно подкрутить некоторые таймауты, но это всегда история о компромисах. Например слишком маленький таймаут, может обеспечить ложные срабатывания на выселение подов из ноды, что тоже нехорошо. Отсюда следует, что штатные механизмы отказоустойчивости СУБД необходимы, и без разницы где вы крутете базы данных, в kubernetes или нет. Сам kubernetes может гарантировать только возможность поднятия подов на других нодах, если нода стала недоступна, и конечно это происходит не моментально - это механизм оркестрации, а не отказоустойчивости. Даже в случае с сетевыми стораджами, вам все равно будет нужна отказоустойчивость на уровне СУБД. Если конечно вы не согласуете с бизнесом что простои базы в случае отказов нод это норм.

Dmitry Sergeev 🇺🇦
Штатные механизмы отказоустойчивости в СУБД. А ка...

К слову это прям эталонный случай применения patroni для того же постгреса

Solyar
К слову это прям эталонный случай применения patro...

так это механизм отказоустойчивости для postgres. Это же не куб вам сам отказоустойчиовсть обеспечил. Тот же patroni можно и без куба крутить. Защита от сплитбрейна, в механизмах отказоустойчивости имеется, но куб к этому никакого отношения не имеет.

Den-Morozov Автор вопроса
Dmitry Sergeev 🇺🇦
Штатные механизмы отказоустойчивости в СУБД. А ка...

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

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта