-
-
[AWSでWordPressのスケールアウト]PHPカンファレンス仙台2019に参戦してきた!
SRE/採用広報のあだちんです!!
というわけで!!
PHPカンファレンス仙台2019にて、弊社SREチームリーダー金澤さんが登壇するので、初!仙台に行ってきました!!その様子と登壇内容を簡単に解説&ブログしていきます。
SESSION
https://phpcon-sendai.net/2019/
弊社ランサーズではWordpressをAWSで運用しています。1台のインスタンスにいくつものメディアが可動しているのですが、スケールアウトのノウハウやHTTPS化、セキュリティ対策など合わせてご紹介できればと思います!
ちなみにエンジニアブログでもご紹介されているのでぜひ参考にしてみてください。
1/25 13:00~
phpカンファレンス 仙台まで行ってきやす!!#phpconsen #ランサーズ pic.twitter.com/HAB1hMNDjx
— あだちん😆ランサーズ(SRE・採用広報) (@adachin0817) January 25, 2019
まずは恒例のエントランスでの写真撮影から!
お昼は会社近くの磯丸水産でランチ!!安いのでおすすめです!
(って新幹線で駅弁食べないのかい!!)🚅
https://tabelog.com/tokyo/A1303/A130301/13208791/
1/25 14:25~
新幹線乗った🚄
もうブログ書いちゃう👍#phpconsen pic.twitter.com/brPuQ1IadA— あだちん😆ランサーズ(SRE・採用広報) (@adachin0817) January 25, 2019
隣でざわさんはひたすらスライドを修正しまくっていましたが、
私もこのブログを書いていました。(はやっ)
平日ということもあり、車内はガラガラ 。非常にのどかです。🗻
そして、
私もPHPカンファレンス仙台行きたかった……😇 pic.twitter.com/gmu7zFToJc
— 採用広報さいまり@ランサーズ (@lancers_saimari) January 25, 2019
採用広報にずんだもちのお土産を要求される👀
ちなみに自分は食べたことがない😋
1/25 16:04~
仙台到着!!雪がぱらつき、なんとも風情がある街!
そして我々は前前夜祭へ向かいます。
前前夜祭!!#phpconsen pic.twitter.com/WCZWzO0Xun
— あだちん😆ランサーズ(SRE・採用広報) (@adachin0817) January 25, 2019
からの!!!前夜祭!!
前夜祭!!#phpconsen pic.twitter.com/YY1ico4rBD
— あだちん😆ランサーズ(SRE・採用広報) (@adachin0817) January 25, 2019
そーだいさんダイエットしてるらしい!!#phpconsen pic.twitter.com/nQZR2Etc4y
— あだちん😆ランサーズ(SRE・採用広報) (@adachin0817) January 25, 2019
オミカレCTOそーだいさんに遭遇!!!
地元仙台出身のエンジニアさんも集まり、金澤さんと同い年の方もいたのは偶然すぎる!
2次会は行かず、金澤さん実家へ泊まりに行きました(どんだけ仲いいのよ!)
— うずら (@uzulla) January 25, 2019
そーだいさんのリアクションがあまりにも面白すぎて思わずリツイート。
後ろの「食べたらやみつきだ」が似合う。
1/26 08:00~
大雪! pic.twitter.com/AIJbYOAEDD
— あだちん😆ランサーズ(SRE・採用広報) (@adachin0817) January 25, 2019
朝から大雪!!凍結!!危うく転ぶところだった。。
リッチな朝ごはん🥞 pic.twitter.com/oXPEea1T5d
— あだちん😆ランサーズ(SRE・採用広報) (@adachin0817) January 25, 2019
朝ごはんはオシャンティーカフェで最後のスライド確認!
本日はこちら👀#phpconsen pic.twitter.com/fpkcZpDWeI
— あだちん😆ランサーズ(SRE・採用広報) (@adachin0817) January 26, 2019
現地に到着!!
ランサーズステッカーゲットしに来てください〜#phpconsen pic.twitter.com/JKYt7JoEpg
— あだちん😆ランサーズ(SRE・採用広報) (@adachin0817) January 26, 2019
ランサーズ集まった!!#phpconsen pic.twitter.com/krrIKHPQFT
— あだちん😆ランサーズ(SRE・採用広報) (@adachin0817) January 26, 2019
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 さんツイートありがとうございます!!!
何も考えないでスケールアウトすると、、
DBが分散
ファイルアップデートしても片方にしかない
画面からプラグインのアップデートできない
wp-cronがサーバの数だけ起動
アクセスログなどが分散
#phpconsen— for_3 | ZOE (@for__3) January 26, 2019
待ちに待ったランチ!!
善治郎うめええええ
私は自重しません👍 pic.twitter.com/pt3UVzpMsQ— あだちん😆ランサーズ(SRE・採用広報) (@adachin0817) January 26, 2019
仙台と言えば「牛タン!」
我々は善次郎さんでたらふくいただきました。
にしても小林さんのビールジョッキ大はデカイ。そして飲みきった!!
まとめ
実際に仙台のエンジニアさんと交流できたのは熱かったです!!
そして強いエンジニアさんとも人脈掴めたのはいい経験でした。
個人的に仙台へはまた行きたいと思います。
他の登壇者については私個人のブログで紹介したいと思います!!
↓書きました。
😋
ランサーズではサービスを成長させてくれるエンジニア、デザイナーを募集しています!
ご興味がある方は、以下URLよりご応募ください。
【中途採用】
サービスリードエンジニア
テックリード(アーキテクト)
フロントエンドエンジニア
サーバーサイドエンジニア
業務エンジニア(社内システム基盤・基幹システム)
【インターン・学生バイト】
19新卒対象サマーインターン
エンジニアインターン
その他採用情報
関連記事
-
-
PHP、CakePHPバージョンアップの決断
インフラエンジニアの金澤です。 この度、ランサーズ稼働環境(PHP + CakePHP)のバージョンアップを決断しました。 まずは私から、その経緯と計画についてお話いたします。 バージョンアップ決断の理由 ランサーズは、2008年にサービスを開始しました。 現 …
-
-
AWSのスポットインスタンス運用
はじめまして。ランサーズインフラエンジニアの金澤です。 AWSのスポットインスタンスを利用したことはありますか? スポットインスタンスとは、AWSの余剰インスタンスを入札制で提供する仕組みです。 各インスタンスの1時間あたりの料金比較しても、スポットインスタン …
-
-
CakePHP3.5における各種実装例 ~ LancersTop 開発現場より ~
こんにちは エンジニアの上野 です。本日「CakePHP3.5における各種実装例」という題目で登壇するので、発表資料をアップロードします。資料として使えるようにコード例などを厚めに盛り込んだスライドですので役に立てると嬉しいです。 CakePHP3.x での各 …