wordpressサイトをnginxとsoftlayerで高速化する
TRANSCRIPT
© SIOS Technology, Inc. All rights Reserved.
WordPress サイトを Nginx と SoftLayer で 高速化する
Kazuhisa Hara SIOS Technology, Inc.
SoftLayer Tokyo Meetup 2015/08/04 @Bit-isle GroupLounge
© SIOS Technology, Inc. All rights Reserved.
原 和久 KAZUHISA HARA サイオステクノロジー株式会社 OSS テクノロジーセンター/エンジニア @kazuhisya kazuhisya kazuhisahara kazuhisya 第9章 NginxでハイパフォーマンスWordPress in SoftLayer http://thinkit.co.jp/story/2015/05/01/5472
2
© SIOS Technology, Inc. All rights Reserved. 4
Web サイトを爆速 にしたい!
ひとまとめに高速化したいと言っても観点は色々 • js とか レンダリング順とか・・・ • DB の高速化とか H/W とか・・・ • ネットワークとか AP サーバとか・・・ • チューニングとか・・・
今日は SoftLayer との連携周りがメインターゲット
https://pixabay.com/en/space-shuttle-lift-off-liftoff-nasa-992/
© SIOS Technology, Inc. All rights Reserved.
“Nginx で高速化” のアプローチ
基本は『キャッシュとスケールアウト』
5
クライアント
ロードバランサ +
キャッシュ
アプリケーションサーバ
データベースサーバ
スケールアウト
キャッシュ
© SIOS Technology, Inc. All rights Reserved.
キャッシュ
Nginx のキャッシュの基本的なアプローチ
キャッシュがない場合はバックエンドに聞きに行く 一度バックエンドに聞きに行った URI はキャッシュする
キャッシュがある場合は即座にキャッシュを返す 単位ファイルだけでなく、php(FastCGI) などの動的に作られるページも対象
6
クライアント
リバプロ キャッシュ
バックエンド アプリケーション
キャッシュが あれば即座に返
す
© SIOS Technology, Inc. All rights Reserved.
キャッシュするときのポイント
キャッシュストアはディスクに置かれる
複数台用意する場合は同期させた方がベター
memcached もキャッシュストアにもできる スケールアウトはしやすくなるが・・・
SSL セッションキャッシュもできるよ
コンテンツや URI だけでなく、SSL のセッションもキャッシュできる
SSL を使う場合は積極的に使いたいところ
7
© SIOS Technology, Inc. All rights Reserved.
キャッシュするときのポイント
キャッシュの消し方も検討しておこう
有効期限で消させる?
WordPress のプラグイン/ドロップインなどで消させる? やり方は色々
別途 purge モジュールが必要になる場合もある
キャッシュがどこにあるかにも注意!
8
© SIOS Technology, Inc. All rights Reserved.
スケールアウト
Nginx のスケールアウトの基本的なアプローチ
L7 ロードバランサとして振る舞い、AP をスケールアウトさせる
TCP ロードバランサとして振る舞い、DB などをスケールアウトさせる
9
クライアント
バックエンド アプリケーション
データベース
L7 LB TCP LB
© SIOS Technology, Inc. All rights Reserved.
ロードバランサ・・・?
SoftLayer でも LB のサービスがあったような・・・?
あります!
ローカル LB、NetScaler VPX アプライアンス、専用 LB…
Nginx LB の立ち位置は?
SoftLayer 標準の LB と、NetScaler などの高価なアプラインスの間くらいを提供するよ
(性能が許す限り)接続数無制限、キャッシュ
ユーザフレンドリーな設定方法
10
© SIOS Technology, Inc. All rights Reserved.
ロードバランスするときのポイント
Nginx で LB する場合、CPU に盛るのが効く
SoftLayer ならでは、ベアメタルも検討しよう
メモリ量よりコア数優先
TCP LB は実は使いどころが難しい
Galera cluster なんかと組み合わせることはできる
運用考えると HyperDB(WP ドロップイン) の方が現実的?
11
© SIOS Technology, Inc. All rights Reserved.
その他ポイント
worker_processes の初期値に注意 入れ方によっては初期値が 1 の場合も auto にすると CPU コアに応じたワーカプロセスが上がる 物理メニーコアがやっぱり効く
本気でチューニングするなら worker_cpu_affinity でコアのピニングまでできますよ
gzip も活用しよう 対象ブラウザが対応しているなら検討しましょうか やっぱりこれも CPU が活きてくる
SPDY3/1 もつかえるよ listen 443 ssl spdy; みたいに宣言するだけ
HTTP/2 対応計画あるよ、2015年末までには出せるらしいよ! https://www.nginx.com/blog/how-nginx-plans-to-support-http2/ https://www.nginx.com/blog/nginx-1-8-and-1-9-released/
12
© SIOS Technology, Inc. All rights Reserved. 13
ケーススタディ
https://pixabay.com/en/whiteboard-strategy-diagram-849803/
© SIOS Technology, Inc. All rights Reserved.
既存環境への追加パターン
Apache mod_php な既存環境に LB+キャッシュ として追加
14
NFS NFS
© SIOS Technology, Inc. All rights Reserved.
サービス活用パターン
SoftLayer の提供するサービスをうまく活用するパターン 静的ファイルはプラグインで Object Storage 経由、CDN 配送
php(FastCGI) が生成するページは Nginx のキャッシュを利用
更に前段に Global LB を重ねて DR 構成も可能
15
Nginx + PHP FastCGI
CDN Object Storage
フロントキャッシュ+LB
© SIOS Technology, Inc. All rights Reserved.
バランス構成パターン
可用性を担保しつつ、拡張を視野に入れたパターン WordPress プラグイン/ドロップインを活用
AMIMOTO Nginx Cache Controller HyperDB
Nginx の L7 LB の機能を活用し、 /wp-admin はフロントで処理 それ以外はバックエンド or キャッシュで処理 キャッシュをフロントでコントールする事で、削除処理などを実施
コンテンツは SoftLayer の NFS で共有 NFS は速度を出そうとすると高額になるので、キャッシュで返せるようにする
16
Nginx + PHP FastCGI
L7 LB フロントキャッシュ
+ /wp-admin
MariaDB Replication
M S
NFS
© SIOS Technology, Inc. All rights Reserved.
まとめ
基本はキャッシュとスケールアウト
キャッシュ キャッシュは消し方を検討しておこう
スケールアウト ケースバイケースで SoftLayer の LB と使い分けよう
サービスを使い分けよう
CDN, Object Storage, NFS, LB・・・ どこまで必要なのか?
予算はどれくらいないなのか?
運用・保守できるのか?
17
© SIOS Technology, Inc. All rights Reserved.
ちょっと宣伝
NGINX Plus なる製品があります NGINX, inc. が提供 エンタープライズ向けの機能拡張を行った製品
LB バックエンドヘルスチェック オンザフライ設定変更 ライブステータスダッシュボード 高可用性・・・などなど
日本語サポートあります
NGINX Plus|サイオステクノロジー株式会社
http://www.sios.com/products/oss/nginx/
18