ロードバランサーの背後にある 2 つのサーバー間のファイル同期

ロードバランサーの背後にある 2 つのサーバー間のファイル同期

ベスト プラクティスに関する質問があります。ロード バランサーの背後にある 2 つのサーバーでアプリを実行しています。ほとんどのデータは共通の DB にあり、ユーザーがアップロードしたファイルはオブジェクト ストレージにあります。そのため、アプリのバックエンド経由でユーザーが生成した一部の YAML 構成ファイルを除いて、同期を維持するものはあまりありません。

これらのファイルを同期させるためのベスト プラクティスは何ですか? 私が考えた解決策の 1 つは、コードと構成ファイルをホストする共有ボリュームをマウントすることです。もっと良い解決策はありますか?

答え1

「ベスト プラクティス」が 1 つだけであると想定するのは罠です。解決策は常に複数存在します。

構成ファイルの内容をデータベースに保存することも 1 つのオプションです。BLOB は何らかのアプリケーションによって管理され、他の何かが読み取っている場合はディスクに書き込まれる可能性があります。または、YAML ドキュメントではなく DB 内の個別のデータ フィールドを使用するようにアプリケーションを変更します。既存の中央データベースを利用しますが、まずその DB が使用可能である必要があります。

アプリケーションを含むソフトウェア パッケージまたはイメージに構成ファイルを保存します。アプリをアップグレードして新しい構成ファイルをデプロイします。これらのファイルがアプリケーションを更新する同じ人物またはプロセスによって変更される場合にのみ意味があります。

スケジュールに従って、または変更時に、権限のあるコピーから各インスタンスにファイルをコピーします。ファイル コピー ソフトウェア、rsync、sftp のいずれかを選択します。インストールがトランザクション型で、すべてのファイルがインストールされるか、まったくインストールされないかのどちらかである場合は、追加のスクリプトが必要になります。

ネットワーク ファイル共有をマウントします。NFS または SMB 共有が予期せず切断されると、パフォーマンスの問題が発生する可能性があることに注意してください。

関連情報