У нас есть проект, в котором нашим хостинг-клиентам предлагается база данных (MySql) как часть их плана, и мне было любопытно, как бы это организовать. Мы хотим запускать базы данных на разных машинах, на которых работают веб-серверы.
Я думал об использовании Kubernetes с новым StatefulSet
особенность, но я, кстати, очень заинтригован compose.io
делает свою работу. Похоже, они гарантируют iops и CPU с ограничениями, применяемыми к RAM и Disk, как и ко всем базам данных, которые они предлагают. Одним из способов было бы в Kubernetes выделить ограниченный постоянный том и запустить контейнер с ограниченным ОЗУ без каких-либо приложений к ЦП, но это создаст очень нестабильный кластер, поскольку контейнеры / поды начинают потреблять ЦП, а Kubernetes постоянно перемещает их на узлы, где необходимые ресурсы найдены. Добавьте к этому постоянные тома, которые замедляют работу, так как модуль необходимо убить перед подключением диска в другое место, и вы можете получить много времени простоя для клиентов.
Мне просто интересно, как вы думаете, как они организуют свои базы данных.
ВНИМАНИЕ: Состояние внутри Kubernetes очень сложно, сделайте больше домашней работы, чем этот ответ, прежде чем что-то даже приближать к производству!
Каждый сценарий индивидуален, но есть несколько рекомендаций: