Трудно дать конкретные c ответы, потому что ваш вопрос довольно широкий.
Но ...
Как вы знаете, предпочтительнее клонировать экземпляры, чтобы за LB каждый экземпляр ведет себя одинаково. Есть много способов сделать это. Насколько мне известно, Digital Ocean не предоставляет универсальный механизм 1 .
NB Другие облачные платформы включают в себя концепцию групп экземпляров, в которых вы определяете шаблон (экземпляр d) и затем платформа автоматически поддерживает для вас экземпляры X (добавляя | удаляя при необходимости) .
Давайте разберем проблему: у вас есть некоторый контент c (например, PHP, веб-сервер) и некоторый динамический c контент (например, ваши данные). Было бы полезно разделить их и в вашем приложении.
Stati c Content
У вас есть много вариантов здесь. Возможно, проще всего создать мастер-каплю, а затем создать клоны мастера, используя Снимки . Я бы порекомендовал вам написать сценарий (например, doctl ) для создания мастера, чтобы вы могли воспроизвести его создание в случае необходимости. Кроме того, когда у вас есть код, проверьте его в инструмент управления исходным кодом (для потомков). Вы также можете использовать, например, сценарии doctl для создания нескольких идентичных капель с нуля.
Поскольку желание автоматизировать создание (облачных) ресурсов является такой распространенной практикой, существуют инструменты, способствующие этому. Одним из популярных инструментов является Terraform , и, хотя я не использовал его (см. Поставщик с DigitalOcean, вы должны иметь возможность использовать его для создания не только капель, но и Балансировщик нагрузки. Есть кривая обучения, но это, вероятно, хорошая инвестиция (и Terraform работает за пределами Digital Ocean).
Дополнительный подход заключается в рассмотрении контейнеризации вашего приложения. Тогда ваши сценарии развертывания смогут использовать Запустите образ контейнера, а не устанавливайте программное обеспечение. Это должно (!) создать более предсказуемый механизм развертывания и , который позволит вам рассмотреть возможность использования контейнерно-ориентированной (Linux) ОС (например, CoreOS). , RancherOS ). Преимущества, которые они предоставляют, включают в себя меньшую поверхность присоединения, более простые обновления и намного более простое развертывание (создание ОС контейнера, запуск контейнера приложения PHP) за счет того, что вам нужно стать знакомы с ними.
Dynami c Содержимое
Если содержимое Dynami c является файлом На основе общего решения было бы использовать некоторую форму общего тома, которая позволяет управлять этим контентом в одном месте, но делить его между несколькими каплями. Насколько я понимаю (!?), В настоящее время вы не можете разделить один том между несколькими каплями. Чтобы решить эту проблему, вы можете с помощью sh попробовать запустить что-то вроде NFS , которое позволит нескольким дроплетам обмениваться файлами. Кроме того, вы можете использовать пробелы. В худшем случае вы можете скопировать файлы в несколько капель, но помните о последствиях получения потенциально противоречивых результатов.
Если содержимое Dynami c находится в базе данных, вы можете запустить базу данных (кластер). себя и наведите каждую каплю на конечную точку. Или вы можете использовать Управляемые базы данных Digital Ocean (услуга) .
Digital Ocean включает в себя Управляемая служба Kubernetes .
Это позволяет вам развернуть X экземпляров решения, включая определение балансировщика нагрузки и совместное использование (постоянных) томов, , но с использованием Kubernetes. может быть излишним для ваших нужд (и дополнительно потребует от вас контейнирования вашего приложения).
При этом см. здесь и обратите внимание, что это было написано до DigitalOcean предоставил управляемое предложение Kubernetes; принципы остаются прежними.
Тем не менее, я рекомендую вам ознакомиться с Kubernetes.
По моему мнению (!), именно так должны развертываться большинство облачных приложений.