movable type for aws を用いた環境構築のポイント
DESCRIPTION
1.Movable Type for AWS の特徴 2.Movable Type for AWS の運用での注意点 3.Movable Type for AWS を活用するTRANSCRIPT
Movable Type for AWS を
用いた環境構築のポイント
MTDDC Meetup Tokyo 2014
エムロジック 田島 2014/11/29
自己紹介
たじま まこと
田島 誠
facebook.com/mtajima
エムロジック株式会社 代表取締役・裏方
鹿児島県出身 4〇才 2児の父
Windows派少数民族 Movable Type担当
エムロジック株式会社
1998年創業
千代田区神保町でもうすぐ16年
エンジニア2名(1名は私)事務1名の3人
草食系 企業
当初はWindows、PalmOS方面であれこれ開発
Movable Type日本語化の頃よりこちらの世界
最近はiOSとMovable Typeの2本立て
この人の名前を出したほうが 話が早いことがあります・・・
関根 元和(CHEEBOW)
最近のMTのお仕事
設計・開発を担当しています
By NetConcierge Co.,LTD. http://netconcierge.jp/mtcommerce/
※ 今日はECの話はありません
本日の傾向
分析しました!
本日の状況
「見渡す限りその世界の大物ばかり」
「バッティングが怖い!(草食系)」
「すでにHPが足りない」
ウェブ界
MT界 クラウド界
小物界の生存戦略
このへん
ウェブ界
MT界 クラウド界
本日のお品書き
1.Movable Type for AWS の特徴
2.Movable Type for AWS の運用での注意点
3.Movable Type for AWS を活用する
本日のお品書き
1.Movable Type for AWS の特徴
2.Movable Type for AWS の運用での注意点
3.Movable Type for AWS を活用する
検討
入門
活用
本日のお品書き
1.Movable Type for AWS の特徴
2.Movable Type for AWS の運用での注意点
3.Movable Type for AWS を活用する
Movable Type for AWS とは
Movable Type for AWS は、Movable Type 6 がインストールされた、OS込みの Amazon Machine Image(AMI)です。 OS、アプリケーション、ウェブサーバー、PSGIサーバー、PHP、データベースがすべて Movable Type にチューニングされた形で提供されるため、数クリックで簡単に Amazon EC2 サーバー上に環境を構築できます。
出典:http://www.sixapart.jp/movabletype/aws/
Movable Type for AWS とは
要は「すぐに使えるMT」です。
1.クリックしてから数分でMTが使える
Movable Type for AWS とは
要は「すぐに使えるMT」です。
1.クリックしてから数分でMTが使える
http://www.sixapart.jp/movabletype/aws/
ここから!
Movable Type for AWS とは
要は「すぐに使えるMT」です。
1.クリックしてから数分でMTが使える
http://www.sixapart.jp/movabletype/aws/
ここを決めて
Movable Type for AWS とは
要は「すぐに使えるMT」です。
1.クリックしてから数分でMTが使える
http://www.sixapart.jp/movabletype/aws/
クリック
Movable Type for AWS とは
要は「すぐに使えるMT」です。
1.クリックしてから数分でMTが使える
http://www.sixapart.jp/movabletype/aws/
これで完成
Movable Type for AWS とは
要は「お安く使えるMT」です。
2.初期コストをかけずにMTが使える
Movable Type for AWS とは
要は「お安く使えるMT」です。
2.初期コストをかけずにMTが使える
ライセンス料金も含めて
「使った分だけ」月払い
Movable Type for AWS とは
要は「お安く使えるMT」です。
2.初期コストをかけずにMTが使える
t2.mediumを「24時間30日」使ったときのデータ転送コストなどを省いた固定費用
ライセンス料金は2年間使い続けるとパッケージライセンスと同じくらいになる感じ
Movable Type for AWS とは
要は「お安く使えるMT」です。
2.初期コストをかけずにMTが使える
さらに
Movable Type for AWS とは
要は「お安く使えるMT」です。
2.初期コストをかけずにMTが使える
一番下のt2.microではなんと 「ライセンス料金無料」!!
1日使っても60円かからない計算
Movable Type for AWS とは
要は「お安く使えるMT」です。
2.初期コストをかけずにMTが使える
つまり・・・
妄想
t2.micro t2.micro t2.micro t2.micro
t2.micro t2.micro t2.micro t2.micro
t2.micro t2.micro t2.micro t2.micro
t2.micro t2.micro t2.micro t2.micro
t2.micro t2.micro t2.micro t2.micro
t2.micro t2.micro t2.micro t2.micro
Elastic Load Balancing
これでも60円x24で・・・
t2.micro t2.micro t2.micro t2.micro
t2.micro t2.micro t2.micro t2.micro
t2.micro t2.micro t2.micro t2.micro
t2.micro t2.micro t2.micro t2.micro
t2.micro t2.micro t2.micro t2.micro
t2.micro t2.micro t2.micro t2.micro
Elastic Load Balancing
Ψ(`∀´)Ψケケケ
正直面倒です・・・
t2.micro t2.micro t2.micro t2.micro
t2.micro t2.micro t2.micro t2.micro
t2.micro t2.micro t2.micro t2.micro
t2.micro t2.micro t2.micro t2.micro
t2.micro t2.micro t2.micro t2.micro
t2.micro t2.micro t2.micro t2.micro
Elastic Load Balancing
Movable Type for AWS とは
要は「ずっと使えるMT」です。
3.さまざまな変化にインフラもMTも対応
Movable Type for AWS とは
要は「ずっと使えるMT」です。
3.さまざまな変化にインフラもMTも対応
現実問題1
MTのアップデート
Movable Type for AWS とは
要は「ずっと使えるMT」です。
3.さまざまな変化にインフラもMTも対応
現実問題1
MTのアップデート
ソフトウェアですから 緊急性の高いセキュリティアップデートも
現実問題発生しますよね。
Movable Type for AWS とは
要は「ずっと使えるMT」です。
3.さまざまな変化にインフラもMTも対応
現実問題1
MTのアップデート
基本これでOK
# yum update movabletype
Movable Type for AWS とは
要は「ずっと使えるMT」です。
3.さまざまな変化にインフラもMTも対応
現実問題2
ある日のYah○o砲・WBS砲
Movable Type for AWS とは
要は「ずっと使えるMT」です。
3.さまざまな変化にインフラもMTも対応
現実問題2
ある日のYah○o砲・WBS砲
できればちゃんとコンテンツを表示したいですよね。
Movable Type for AWS とは
要は「ずっと使えるMT」です。
3.さまざまな変化にインフラもMTも対応
現実問題2
ある日のYah○o砲・WBS砲
CloudFront(CDN)ありマス
Movable Type for AWS とは
要は「ずっと使えるMT」です。
3.さまざまな変化にインフラもMTも対応
現実問題3
システムの肥大化・速度低下
Movable Type for AWS とは
要は「ずっと使えるMT」です。
3.さまざまな変化にインフラもMTも対応
現実問題3
システムの肥大化・速度低下
まぁ、使い続けますからそうなりますよね。
Movable Type for AWS とは
要は「ずっと使えるMT」です。
3.さまざまな変化にインフラもMTも対応
現実問題3
システムの肥大化・速度低下 インスタンス変更すればいいですしおすし
Movable Type for AWS とは
まとめ
Movable Type for AWS は
「すぐに」「お安く」「ずっと」
使えるMT です。
Movable Type for AWS とは
まとめ
Movable Type for AWS は
「すぐに」「お安く」「ずっと」
使えるMT です。
本日のお品書き
1.Movable Type for AWS の特徴
2.Movable Type for AWS の運用での注意点
3.Movable Type for AWS を活用する
Movable Type for AWS の運用での注意点
Movable Type for AWS いいですよね!
弊社の場合... 1. 公開サーバとして
S3に転送してStaticWebsiteHosting
2. 新規開発時のテストサーバとして ぱっと立ち上げてテストして終わったらTerminate
3. 案件用の開発サーバとして 納品後もしばらくはStop状態でインスタンスを持っておく
Movable Type for AWS の運用での注意点
MTAWS最初の壁
インスタンス起動したあと
何をすればいいのか?
おさらい
今日はココ
ウェブ界
MT界 クラウド界
Movable Type for AWS の運用での注意点
Movable Type for AWS に特化した話
Movable Type for AWS の運用での注意点
基本構成(現時点)
OS: AmazonLinux AMI 2014.09版
Webサーバ: nginx + starman(PSGI)
PHP: php-fpm
DBサーバ: MySQL
メールサーバ: Postfix
いたって一般的ですが
Movable Type for AWS の運用での注意点
使ってみてわかった
Movable Type for AWS
の注意点
Movable Type for AWS の運用での注意点
注意点1:
一部のパスが独自仕様
Movable Type for AWS の運用での注意点
注意点1:
一部のパスが独自仕様
Movable Type インストールディレクトリ: /app/movabletype/
なので・・・
プラグインディレクトリ: /app/movabletype/plugins/
アドオンディレクトリ: /app/movabletype/addons/
になります。
Movable Type for AWS の運用での注意点
注意点1:
一部のパスが独自仕様
ドキュメントルート: /data/file/static/
起動時点で初期コンテンツがコピーされています。
もちろんこれは初期設定としてのパスなので変更可能です。
Movable Type for AWS の運用での注意点
注意点1:
一部のパスが独自仕様
nginx設定ファイル: /data/conf/nginx.conf
MySQLデータディレクトリ: /data/database/
Starmanログ出力先: /data/logs/movabletype/
Starman設定ファイル: /data/conf/movabletype.conf
AmazonLinux管理外のPerlモジュール: /app/local/
Movable Type for AWS の運用での注意点
注意点1:
一部のパスが独自仕様
/app/ ・・・ アプリケーション関連のファイル
/data/ ・・・ 各種データファイル・設定ファイル
を眺めてみましょう。
Movable Type for AWS の運用での注意点
注意点2:
管理画面へのアクセスは「/mt/admin」
Movable Type for AWS の運用での注意点
注意点2:
管理画面へのアクセスは「/mt/admin」
これはmt-config.cgiの環境変数「AdminScript」を
設定しているから。
/app/movabletype/mt-config.cgi から変更可。
Movable Type for AWS の運用での注意点
注意点3:
タイムゾーンが「UTC」
Movable Type for AWS の運用での注意点
注意点3:
タイムゾーンが「UTC」
日本から使う場合、cronなどで地味に不便です。
Movable Type for AWS の運用での注意点
注意点3:
タイムゾーンが「UTC」
OSの設定変更:
Movable Typeの設定変更(mt-config.cgi):
変更したらMovable Typeをリロード:
$ sudo cp /usr/share/zoneinfo/Japan /etc/localtime
DefaultLanguage ja
DefaultTimezone 9
$ sudo kill –HUP `cat /app/run/movabletype.pid`
Movable Type for AWS の運用での注意点
注意点4:
設定がmicroインスタンス向け
Movable Type for AWS の運用での注意点
注意点4:
設定がmicroインスタンス向け
このままではもったいない。
Movable Type for AWS の運用での注意点
注意点4:
設定がmicroインスタンス向け
StarmanのWorker数変更:
/data/conf/movabletype.conf
MySQLのキャッシュ、バッファプールの設定変更:
/etc/my.cnf
php-fpmのサーバ数変更:
/etc/php-fpm.conf
Movable Type for AWS の運用での注意点
注意点4:
設定がmicroインスタンス向け
mt-search.cgiやmt-data-api.cgiなどのアプリケーションを
公開する場合はStarmanのWorker数重視
ダイナミックパブリッシング、DynamicMTMLを使う場合には
php-fpmのサーバ数重視
・・・のように、運用したいサーバのスタイルにあわせて
調整しましょう。
Movable Type for AWS の運用での注意点
動作が重く、設定でも改善しない場合
インスタンス増強の前に!
Movable Type for AWS の運用での注意点
動作が重く、設定でも改善しない場合
インスタンス増強の前に! • まずデータベースをRDSに分離する ことを検討しましょう。
Movable Type for AWS の運用での注意点
動作が重く、設定でも改善しない場合
インスタンス増強の前に! • まずデータベースをRDSに分離する ことを検討しましょう。
• ただしRDSはインスタンスの停止が できないので気をつけましょう。
Movable Type for AWS の運用での注意点
動作が重く、設定でも改善しない場合
インスタンス増強の前に! • まずデータベースをRDSに分離する ことを検討しましょう。
• ただしRDSはインスタンスの停止が できないので気をつけましょう。
• MTのDBはあまり大きくなりにくい のでdb.t2.microインスタンスでも 結構改善したりします。
Movable Type for AWS の運用での注意点
動作が重く、設定でも改善しない場合
インスタンス増強の前に! • まずデータベースをRDSに分離する ことを検討しましょう。
• ただしRDSはインスタンスの停止が できないので気をつけましょう。
• MTのDBはあまり大きくなりにくい のでdb.t2.microインスタンスでも 結構改善したりします。
• DBを独立させることで、MTの複数 インスタンス構成も容易になります。
Movable Type for AWS の運用での注意点
動作が重く、設定でも改善しない場合
インスタンス増強の前に! • まずデータベースをRDSに分離する ことを検討しましょう。
• ただしRDSはインスタンスの停止が できないので気をつけましょう。
• MTのDBはあまり大きくなりにくい のでdb.t2.microインスタンスでも 結構改善したりします。
• DBを独立させることで、MTの複数 インスタンス構成も容易になります。
• くれぐれもRDSでクエリキャッシュの有効化をお忘れなく。
本日のお品書き
1.Movable Type for AWS の特徴
2.Movable Type for AWS の運用での注意点
3.Movable Type for AWS を活用する
Movable Type for AWS を活用する
活用の前に
Movable Type と AWS の相性は?
Movable Type for AWS を活用する
Movable Type と AWS の相性
1.静的ファイル出力 • フロントへのアクセスが負荷にならない • S3に転送してStaticWebsiteHosting • アクセス多いならCloudFront CPUのコストがあまりかからない つまりは 低コスト で運用できます!
Movable Type for AWS を活用する
Movable Type と AWS の相性
2.再構築とT2インスタンス • T2インスタンスでは高負荷時に自動的に性能をアップする機能(バースト)が実装されています。
• MTが重たいのはテンプレートビルドのとき、24時間管理画面を使うわけではないですよね?
再構築時は高負荷になるので自動的にバーストしてくれます。 つまりt2.microインスタンスでも再構築がかなり速い。
Movable Type for AWS を活用する
結論
Movable Type と AWS の相性は 最高
Movable Type for AWS を活用する
(補足)T2インスタンスの実力
10月18日開催の「JAWS-UG 沖縄 CMS 祭り!」で発表されたシックス・アパート高山さんのスライドにて
• インスタンス別再構築勝負 • 記事数:約3,500件 • 調査したインスタンス:
t2.micro、t2.medium、c3.large、c3.xlarge
Movable Type for AWS を活用する
再構築勝負結果 バーストすごい!
インスタンスタイプ 再構築時間
t2.micro 2分55秒
t2.medium 2分47秒
c3.large 2分51秒
c3.xlarge 2分48秒
Movable Type for AWS を活用する
勝負で得た教訓
• 1プロセスでの再構築に限っては t2.micro で十分 • ただし DataAPI など複数のリクエストを同時に処理したい場合には、t2.micro は不向き。
• コストを考えると DataAPI 使用サイトは t2.medium が有利。
DataAPI 勝負の結果など詳しい内容は高山さんのスライドをご参照ください!(ありがとうございました)
Movable Type for AWS を活用する
本題に戻ります
Movable Type for AWS を活用する
活用例1:
S3でのStaticWebsiteHosting
Movable Type for AWS を活用する
活用例1:
S3でのStaticWebsiteHosting
聞きますよね?「S3から配信」とか。
そうです、あれです。
アプリケーションはEC2
静的ファイルはS3
Movable Type for AWS を活用する
活用例1:
S3でのStaticWebsiteHosting
S3 Management Consoleで設定
Route53でEndpointを登録すれば
独自ドメインのホスト名で使える
Movable Type for AWS を活用する
活用例1:
S3でのStaticWebsiteHosting
S3への転送方法:
1. Amazonプラグイン
http://tec.toi-planning.net/mt/amazon/
特定の拡張子であれば転送といった使い方もできる
素敵プラグイン
Movable Type for AWS を活用する
活用例1:
S3でのStaticWebsiteHosting
S3への転送方法:
2. AWS CLI s3 sync もしくは s3cmd sync
• lsyncdでディレクトリを監視してS3と常に同期 便利だけどちょっと設定が面倒なことも。
Movable Type for AWS を活用する
活用例1:
S3でのStaticWebsiteHosting
S3への転送方法:
2. AWS CLI s3 sync もしくは s3cmd sync
• シェルから都度実行 任意のタイミングで同期処理。 再構築時に余計なことをしないのでサーバにはやさしい。 それに・・・
Movable Type for AWS を活用する
活用例1:
S3でのStaticWebsiteHosting
EC2側をステージングサーバ、S3/CloudFrontを公開サーバにする
リアルタイムに転送するのではなく、適切なタイミングで同期処理を行うことで可能に
EC2で確認 S3で公開
Movable Type for AWS を活用する
活用例1:
S3でのStaticWebsiteHosting
弊社ではこんなプラグイン使ってます
近日公開します
Movable Type for AWS を活用する
StaticWebsiteHostingとRoute53(DNS)の
ステキな組み合わせ(正常時)
mt-data-api.cgi等
静的ファイル+ エラードキュメント
Route53で 名前解決と
HealthCheck
リダイレクトする空のバケット
Movable Type for AWS を活用する
StaticWebsiteHostingとRoute53(DNS)の
ステキな組み合わせ(障害発生時)
インスタンス停止!
mt-data-api.cgiの代わりにエラーファイル
リダイレクト
フェイルオーバー 名前解決の変更
Movable Type for AWS を活用する
StaticWebsiteHostingとRoute53(DNS)の
ステキな組み合わせ
切り替わりは決して早くはない
でも、
アラートメール受けてマニュアルで対応するより
相当早いです
Movable Type for AWS を活用する
活用(?)例2:
MTAssetThumbnailURL対策
Movable Type for AWS を活用する
活用(?)例2:
MTAssetThumbnailURL対策
みなさんお気づきでしょうか?
Movable Type for AWS を活用する
活用(?)例2:
MTAssetThumbnailURL対策
MTAssetThumbnailURLを 多用するほど再構築の コストが増えることに。
Movable Type for AWS を活用する
活用(?)例2:
MTAssetThumbnailURL対策
何故か?
Movable Type for AWS を活用する
活用(?)例2:
MTAssetThumbnailURL対策
何故か?
商用CMS故の厳格な処理でした
画像をMT以外からでも上書きできる環境では、上書きされた結果突然サムネイルを作成できなくなるケースが想定されるため、毎回画像を開いて確認している為。
Movable Type for AWS を活用する
活用(?)例2:
MTAssetThumbnailURL対策
画像を開く=処理用メモリを確保 •画像が大きいとメモリを切り詰めている環境には 致命傷になりうる(t2.microとか)
•そんな環境ではできるだけリサイズ済みの画像を 使うようにし(て、タグの使用を回避し)ましょう
Movable Type for AWS を活用する
活用(?)例2:
MTAssetThumbnailURL対策
弊社ではこんなプラグイン使うことも
1. サムネイル生成可能であるかの確認処理方法を切り替え可能にする機能
2. 省メモリで高速にリサイズする機能
3. ただし、サーバに直接画像をアップロードしない、もしくは 誰が上書きアップロードするかが厳格に管理できる環境限定
4. 黒魔術(?)系のプラグインなのでご了承ください
近日公開します
Movable Type for AWS を活用する
活用(?)例2:
MTAssetThumbnailURL対策
計測(参考値):
インスタンスタイプ: t2.micro
画像: 3648x2736程度のもの25枚
計測方法: /mt/admin?__mode=list&_type=assetに アクセスして3回実施中の最速のWait時間を記録
Movable Type for AWS を活用する
活用(?)例2:
MTAssetThumbnailURL対策
結果: asset_c内のファイルが揃っている状態
asset_c内のファイルを消した状態(リサイズ発生)
ノーマル 3.48sec
プラグイン 165.7msec
ノーマル 24.32sec
プラグイン 3.68sec
(おまけ)直前の戦い
2日前・・・
アノヒジャネエカ(゚Д゚;)
Dear Amazon EC2 Customer, One or more of your Amazon EC2 instances in the ap-northeast-1 region is scheduled for retirement. The following instance(s) will be shut down after 12:00 AM UTC on 2014-11-29.
今回やるべきことは
Stop→Startのみ、ただし冗長化なし
「EC2のメンテナンスのためサーバを 停止させてください!」
「クラウドなのになんで 止まるんですか?」
エッ(゚Д゚;)
事務連絡
約9時間
メンテナンス作業
約10分
クラウドだってどこかで動いているサーバ
そんなことより
簡単なメンテナンス作業で済むことに感謝
※も・・もちろん大部分フィクションです(震え声)
まとめ
•Movable Type for AWS は超オススメ •これからドキュメントが整備されていくことを期待しています! •プラグインは近日公開いたします (ドキュメント整備中デス…orz)
•田島誠先生の次回作にご期待ください。
御清聴ありがとうございました
お問い合わせはエムロジック株式会社田島まで