web-dev-qa-db-ja.com

負荷分散Wordpress:変更の管理

私は比較的アマゾンウェブサービスに慣れていないので、Elastic Load Balancingがwordpress設定のコンテキストでどのように機能するかを説明します。さらに、提案されたインフラストラクチャについてアドバイスをお願いします。

私が最初に提案したインフラストラクチャは次のとおりです。

  • 1x EC2 m1.small-Ubuntu 12.04.3 LTS 64ビット(1 EBSボリューム)
  • 1x EC2 t1.micro-Ubuntu 12.04.3 LTD 64ビット(EBSボリュームの有無は?)
  • 1x Micro RDSインスタンス-MySQL 5.6.13

EC2現在のEC2(t1.micro)はLAMPスタックを実行しており、wordpressを実行するように構成されています。

これをm1.smallインスタンスと負荷分散し、t1.microインスタンスのクローンを実行します。

私にとっての現在の未知数は次のとおりです。

  • wordpressインスタンス間でCMSに加えられた変更を負荷分散セットアップでどのように管理しますか?wordpressで変更が行われるたびにAMIを更新し続ける必要がありますか?
  • 私のWebサイトはeコマースWebサイトです。負荷分散されたセットアップでこれの影響はありますか?つまり、注文が1つのインスタンスに存在し、別のインスタンスに存在しない可能性はありますか?

かなり馬鹿げた質問かもしれませんが、インフラストラクチャが1つのデータベースを参照しているため、いくつかの問題は関連しないと思います。

最後に、負荷分散のためのインフラストラクチャをセットアップするより良い方法はありますか?つまりAmazon S3を使用してすべてのファイルを保存し、CloudfrontをCDNとして使用して効率的な操作を保証し、EBSファイルのレプリケーションの問題を解決することを検討すべきですか。

どんな助けも大歓迎です。

ロイド

7
Lloyd Rees

ステートレスWebアプリは難しいです。

ご存知のように、wordpressは、ディスクに書き込まれるものにかなり依存しています。ここに提案されているインフラストラクチャを示します。

  • Elastic Load Balancer
    • 小さなec2インスタンスで構成される自動スケーリンググループ
  • Foreman/DevマイクロEC2インスタンス
  • CMSデータ用のMicro/Small RDS
  • セッションストレージ用Elasticacheクラスター
  • メディアアップロード用のS3バケット

さて、難しい部分です

コードベースの更新を一瞬忘れて、すべてをステートレスにする方法を見てみましょう。このことを水平方向にスケーラブルにするには、次のことを行う必要があります。

  1. マイクロインスタンスから開始します。テンプレートと同様に展開メカニズムとしても機能します
  2. PHPセッションを設定して、セッション管理にmemcachedを使用し、elasticacheクラスターに向けます http://www.dotdeb.org/2008/08/25/storing-your-php -sessions-using-memcached /
  3. マイクロインスタンスにgitをインストールする
  4. 何らかの種類のwordpressプラグインをインストールして、すべてのファイルアップロードをS3に配置します(オプションですが、メディアファイルをcmsにアップロードするたびに再デプロイする必要がありません)W3 Total Cacheプラグインを試してください

これはセットアップを処理します

新しい変更をデプロイする方法

wordpressインストールへの今後のすべての変更にマイクロインスタンスを使用します。これには、ワードプレスの更新、テーマファイルの更新、およびディスクに保存されているほとんどすべてのものが含まれます。

次の2つのスクリプトを作成する必要があります。

最初のものは、変更を自動スケーリンググループにデプロイするために使用されます。次のことを行う必要があります。

  1. Gitリポジトリに加えられた変更をコミットする
  2. すべての本番インスタンスをpingして、マイクロインスタンスから新しいコードベースをダウンロードするように指示します。自動スケーリンググループ内のインスタンスのリストを取得し、それらの受信スクリプトをトリガーするには、何らかの形式のAWS SDKを使用する必要があります。私は自分で作成したHTTPエンドポイントを介して自分でこれを行っています。

2番目のスクリプトは、自動スケーリンググループのインスタンスに存在し、最初のスクリプトによってトリガーされ、インスタンスが初めて初期化されるときに実行されます。次のことを行う必要があります。

  1. マイクロインスタンスのgitリポジトリに接続する
  2. 最新の変更をフェッチし、分離されたHEAD状態で変更をチェックアウトします

システムファイルを変更するたびに、上記のデプロイスクリプトを実行する必要があります。これにより、変更がすべての本番インスタンスに伝播されます。

次に、本番インスタンスのベースAMIを作成します。マイクロインスタンスと非常によく似ているはずですが、wordpressは実際にはインストールしないでください。起動時にec2インスタンスに渡されたユーザーデータを使用して、上記の2番目のスクリプトを実行し、最新バージョンをダウンロードします。マイクロインスタンスからのコードベース。

最後に1つ... eコマースを実行している場合は、ロードバランサーにSSL証明書をインストールする必要があります。こちらのガイドをご覧ください: http://www.nczonline.net/blog/2012/08/15/setting-up-ssl-on-an-Amazon-elastic-load-balancer/ =

5
keeganiden