Amazon AWS で WordPress の展開構成に取り組んでいます。Ubuntu EC2 インスタンスの Apache で WordPress を実行しています。キャッシングにW3 Total Cacheを使用し、S3 バケットからユーザーがアップロードしたメディア ファイルを提供しています。ロード バランサーは、トラフィックを 2 つの EC2 インスタンスに分散し、オート スケーリングを使用して重い負荷を処理します。
問題は、ユーザーがアップロードしたメディア ファイルがローカルに保存され、S3 バケットに同期されることですwp-content/uploads/
。これは、メディア ファイルが EC2 インスタンス間で一貫していないことを意味します。
私が検討しているアプローチは次のとおりです。
- WordPress プラグインを使用して、メディア ファイルをローカルに保存せずに直接 S3 にアップロードします。問題は、私が見つけたプラグイン ( thisとthis ) だけがバグが多く、メンテナンスが不十分であることです。これらのいずれかを自分で修正するのに何時間も費やしたくありません。また、それらが W3 Total Cache (他のキャッシュ ツールにも使用したい) ときれいに統合されているかどうかも明らかではありません。
- ユーザーが管理インターフェイスにアクセスしてメディア ファイルをアップロードするマスター インスタンスを用意します。すべてのメディア ファイルは、このインスタンスにローカルに保存されます (W3 Total Cache を介して S3 に同期されます)。自動スケーリングでは、ローカル ファイル ストレージを使用せずにスレーブ インスタンスをデプロイします。
- すべての EC2 インスタンスを同一
wp-content/uploads/
にし、別の EBS ボリュームを指すようにします。すべてのインスタンスがメディア ファイルを共有します。 - rsync を使用して、実行中の EC2 インスタンス間でメディア ファイルをコピーします。
明確な勝者はいますか?私が考えるべき他のアプローチはありますか?