2

すべてのドロップレットを同じコンテンツに保つにはどうすればよいですか?

3 つの液滴があり、最初の液滴の内容を別の 2 にコピーすることを考えました。これを自動的に行うオプションはありますか?

または、モバイルアプリが PHP でバックエンドするときに LB を作成する方法と、データが頻繁に更新されるため、この場合は助けが必要です。

4

1 に答える 1

3

あなたの質問は非常に広範囲であるため、具体的な回答を提供することは困難です。

しかし...

ご存知のように、LB の背後で各インスタンスが同じように動作するように、インスタンスのクローンを作成することをお勧めします。これを行うには多くの方法があります。私の知る限り、Digital Ocean は汎用メカニズムを提供していません1

: 他のクラウド プラットフォームには、テンプレート (d インスタンス) を定義し、プラットフォームが X インスタンスを自動的に維持する (必要に応じて追加または削除する) インスタンス グループの概念が含まれています。

問題を分解してみましょう。静的コンテンツ (PHP、Web サーバーなど) と動的コンテンツ (データなど) があります。アプリでもこれらを分離すると便利です。

静的コンテンツ

ここには多くのオプションがあります。最も簡単な方法は、おそらくマスター ドロップレットを作成し、スナップショットを使用してマスターのクローンを作成することです。マスターの作成をスクリプト化 (例: doctl ) して、必要に応じてマスターの作成を再現できるようにすることをお勧めします。また、コードを取得したら、ソース管理ツールにチェックインします (後世のために)。たとえば、doctl スクリプトを使用して、複数の同一のドロップレットを最初から作成することもできます。

(クラウド) リソースの作成を自動化することはよくあることなので、これを容易にするツールが用意されています。人気のあるツールの 1 つはTerraformです。私は使用していませんが ( DigitalOcean のプロバイダーを参照してください。これを使用して、ドロップレットだけでなくロード バランサーも作成できるはずです。学習曲線はありますが、おそらく良い投資です (そして、Terraform は Digital Ocean を超えて機能します)。

補完的なアプローチは、アプリケーションのコンテナー化を検討することです。デプロイ スクリプトは、ソフトウェアをインストールするのではなく、コンテナー イメージをプル/実行できるようになります。これにより (!) より予測可能な展開メカニズムが作成され、コンテナー指向 (Linux) OS (例: CoreOSRancherOS ) の使用を検討できるようなります。これらがもたらす利点には、より小さなアタッチ サーフェス、簡単なアップグレード、およびはるかに簡単なデプロイ (コンテナー OS の作成、PHP アプリ コンテナーの実行) が含まれますが、それらに慣れる必要があります。

動的コンテンツ

動的コンテンツがファイルベースの場合、一般的な解決策は、このコンテンツを 1 か所で管理し、複数のドロップレット間で共有できる何らかの形式の共有ボリュームを使用することです。現在、1 つのボリュームを複数のドロップレットで共有することはできないと理解しています (!?)。この問題を解決するには、複数のドロップレットがファイルを共有できるようにする NFSなどの実行を検討することをお勧めします。または、スペースを使用できる場合もあります。最悪の場合、ファイルを複数のドロップレットにコピーできますが、一貫性のない結果になる可能性があることに注意してください。

動的コンテンツがデータベースにある場合は、データベース (クラスター) を自分で実行し、各ドロップレットをそのエンドポイントに向けることができます。または、Digital Ocean のマネージド データベース (サービス)を使用することもできます。

1 - Kubernetes

Digital Ocean には、Kubernetes マネージド サービスが含まれています。

これにより、ロードバランサーの定義や (永続的な) ボリュームの共有など、ソリューションの X インスタンスをデプロイする方法が提供されますが、Kubernetesを使用すると、ニーズに対してやり過ぎになる可能性があります (さらに、アプリをコンテナー化する必要があります)。

とはいえ、こちらを参照してください。これは、DigitalOcean がマネージド Kubernetes オファリングを提供するに書かれたものであることに注意してください。原則は変わりません。

ただし、Kubernetes について読むことをお勧めします。

私の意見では (!)、これはほとんどのクラウドベースのアプリが展開される方法であるべきです。

于 2020-02-13T18:33:40.053 に答える