EC-CUBE on AWS (S3で共有編)

この記事は1年以上前に書かれたものです。
内容が古い可能性がありますのでご注意ください。
ども、サービス開発グループの千葉(@kachina_t)です。 案件化の目処が立たず、めっきりサボっていた『EC-CUBE on AWS』シリーズですが ありがたいことに続稿のリクエストを頂きましたので。 気合を入れて、続きを書いていきたいと思います。 過去の記事は↓こちらを参照ください。 前回も触れましたが、ここでは実運用に耐えられる(商品の追加や変更ができる) EC-CUBE+AWSの環境を提案していきたいと思います。 それでは、進めていきましょう。

セッションについて

冗長構成を組むにあたり、セッションの管理方法について触れておきます。
EC-CUBEではセッション情報をDBにて管理するので、とくに特別な設定変更は必要はありません。

同期対象のディレクトリについて

EC-CUBEを冗長化する際に、同期すべきディレクトリを以下のとおりです。 - /html/user_data/ - /html/upload/ - /data/download/ - /data/downloads/ 複数台構成とした場合に、このファイルをどうやって同期するかが"キモ"になります。 今回は簡易版として、定期的にS3と同期してみたいと思います。
outline

ELBの起動、DNSレコードの設定

はじめに、↓コレをちゃちゃっとやります。 ELBを起動し『DNS Name』を『shop.example.com』で引ける用にDNSを設定

s3cmdのインストール

起動中のインスタンスにSSHで接続し『s3cmd』をインストールします。

初回転送

この状態で、S3バケットに既存ファイルをアップロードします。 ※:以下、S3バケット名を『example-ec-cube』とします。

5分毎に同期する設定

『ec2-user』のcrontabに以下を追記します。(改行はありません)

EC-CUBEの設定

EC-CUBEの設定ファイル『~/data/config/config.php』の以下の値を書き換えます。

AMI化、別AZでのインスタンス起動、ELBの設定

この状態で、インスタンスをストップ → AMI作成 → 別のリージョンにインスタンスを起動します。 2つのインスタンスをELB配下に設置し、ヘルスチェックの『Ping Path』の値を"index.php"とし ステータスが『In Service』になることを確認します。

動作確認

以上で設定終了です、特に複雑な手順は無かったかと思います。 それでは http://shop.example.com/admin/ から 画像付きの新商品を追加してみて下さい。 送信、受信がそれぞれ5分毎なので、最大で10分後には同期されるハズです。 最終的な構成は↓この図の様になります。
outline
【Shop-AMI】は、オートスケールを利用する際に使うので削除せずに取っておきます。 大抵の場合は『未公開』ステータスで商品マスタを作成 準備が整ってから『公開』ステータスへ更新の流れだと思います。 画像ファイルの同期に10分かかっても、問題ない場合が殆どだと思うので 設置・設定も簡単な、この方法で良いかと思います。 (緊急対応が必要な場合は、crontabの内容を手動実行して同期すれば良い) 同期に10分なんてありえない! ファイル更新の通知処理なんかを上手くつかって、リアルタイムで同期したい!って場合。。。 これは難易度が上がる上に、内容も長くなりそうなので別の機会に回します。 以上、次回は『S3とのファイル同期速度改善』か『オートスケールの設定』のどちらかを書こうと思います。

AWS運用自動化サービス「Cloud Automator」無料トライアルはこちらから

COMMENT ON FACEBOOK