ランサーズ(Lancers)エンジニアブログ > SRE > [AWSでWordPressのスケールアウト]PHPカンファレンス仙台2019に参戦してきた!

[AWSでWordPressのスケールアウト]PHPカンファレンス仙台2019に参戦してきた!

adachin|2019年01月27日
SRE

SREのあだちんです!!

というわけで!!

PHPカンファレンス仙台2019にて、弊社SREチームリーダー金澤さんが登壇するので、初!仙台に行ってきました!!その様子と登壇内容を簡単に解説&ブログしていきます。

SESSION

https://phpcon-sendai.net/2019/

弊社ランサーズではWordpressをAWSで運用しています。1台のインスタンスにいくつものメディアが可動しているのですが、スケールアウトのノウハウやHTTPS化、セキュリティ対策など合わせてご紹介できればと思います!

ちなみにエンジニアブログでもご紹介されているのでぜひ参考にしてみてください。

https://bit.ly/2K3Z0r4

1/25 13:00~

https://twitter.com/adachin0817/status/1088648085536858112

まずは恒例のエントランスでの写真撮影から!
お昼は会社近くの磯丸水産でランチ!!安いのでおすすめです!
(って新幹線で駅弁食べないのかい!!)🚅

https://tabelog.com/tokyo/A1303/A130301/13208791/

1/25 14:25~

隣でざわさんはひたすらスライドを修正しまくっていましたが、
私もこのブログを書いていました。平日ということもあり、車内はガラガラ 。非常にのどかです。🗻そして、

採用広報にずんだもちのお土産を要求される👀ちなみに自分は食べたことがない😋

1/25 16:04~

仙台到着!!雪がぱらつき、なんとも風情がある街!
そして我々は前前夜祭へ向かいます。

からの!!!前夜祭!!

 

オミカレCTOそーだいさんに遭遇!!!
地元仙台出身のエンジニアさんも集まり、金澤さんと同い年の方もいたのは偶然すぎる!
2次会は行かず、金澤さん実家へ泊まりに行きました(どんだけ仲いいのよ!)

そーだいさんのリアクションがあまりにも面白すぎて思わずリツイート。
後ろの「食べたらやみつきだ」が似合う。

1/26 08:00~

朝から大雪!!凍結!!危うく転ぶところだった。。

朝ごはんはオシャンティーカフェで最後のスライド確認!

現地に到着!!

 

1/26 10:25~
「AWSでWordPressのスケールアウト」

では、簡単に解説していこうと思います!!

ランサーズのWordpressサーバの構成はPHP7.2、PHP-FPM、Nginx、Aurora MySQL5.7、GIthub、自前のdeployシステムでリリースしております。今回は自前でプラグインを作成している、大量アクセスで捌けない!などスケールアウトによる運用が今回ターゲットとなります。

スケールアウトの課題としては、DBが2つ以上のサーバに分離してしまう、ファイルのアップロードができない、管理画面からプラグインをアップロードできない、wp-cronがサーバの数だけ実行されてしまう、アクセスログが分散されてしまう恐れがあります。

ここで、スケールアウトの準備をしましょう。まずはVPCを構築し、Public Subnetを切ります。そしてEIPを付与します。

そしてRoute53でALBのエンドポイントとAレコードAliasで設定をします。

先程のPublic SubnetにALBを配置し、Private Subnetを設定します。そしてWordpressサーバをPublic Subnetに移動します。ALBのメリットとしてはACMによる無料でSSLの証明書が取得可能。セキュリティ向上、HTTP2、SSL Terminationをサポートします。

DBはまずPrivate Subnetを作成していきましょう。RDSのメリットとしてはリードレプリカの追加が簡単で、スケールアウトが楽なところ。自動バックアップやポイントリカバリ機能もあります。Auroraのメリットはリードレプリカが15台まで作成可能で、レプリカ遅延が低く、Readerエンドポイントも提供されています。なので、リードレプリカ追加時の負荷分散が楽なところと、haproxyなどインストールしなくても済みます。デメリットとしてはInnoDBのみサポートしており、MyISAMしか対応していないプラグインもあるので注意してほしいところです。

アップロードディレクトリの分離はS3バケットを用意し、wp-contents/uploads以下のファイルを格納します。プラグインはWP offload Media Liteを使って画像をS3にアップロードします。

プラグイン導入後、SQLでINSERT文をwp_postmetaテーブルにデータを追加していきます。必要に応じてURLの修正をしなければならないので、mysqldumpでエキスポートして修正するのが楽でしょう。

ログの集約はtd-agentでS3に集約していますが、今後CloudWatch Logsの方が学習コストが低いので導入しやすいと思われます。

管理画面専用サーバを構築することで、/wp-admin、/wp-login.phpをIP制限したり、cron実行、deploy処理を行えます。

プラグイン追加とアップデートは上記のようにgit pullをansibleで実行しています。

冗長構成するのであれば2つ以上のAZにAppとDBを分散すれば、AZレベルの障害でも対応できるようになります。

以上!

@for__3 さんツイートありがとうございます!!!

待ちに待ったランチ!!

仙台と言えば「牛タン!」
我々は善次郎さんでたらふくいただきました。
にしても小林さんのビールジョッキ大はデカイ。そして飲みきった!!

まとめ

実際に仙台のエンジニアさんと交流できたのは熱かったです!!
そして強いエンジニアさんとも人脈掴めたのはいい経験でした。
個人的に仙台へはまた行きたいと思います。
他の登壇者については私個人のブログで紹介したいと思います!!
↓書きました。

[2019/01/26]PHPカンファレンス仙台2019に行ってきた!

😋