Upload
takaki-kawamura
View
1.360
Download
1
Embed Size (px)
Citation preview
株式会社 gloops
クロスファンクション統括部
システム基盤部インフラエンジニア リーダー
河村喬樹
2013.7.23
glusterfs を用いた
静的コンテンツ配信サーバ冗長化
■ 名前河村喬樹(かわむらたかき) 33 才・独身
■gloops 入社2011 年 4 月前職は携帯サイト運営のインフラエンジニア
入社当時 社員 80 名 インフラ 2 人目
■ 趣味お酒大好き ! ( facebook でも大概飲んでる写真あがってます)
自己紹介
アジェンダ
1. gloops のシステム概要
2 . glusterfs (+samba) +nginx+varnish を用いた静的コンテンツ配信サーバ冗長化
1. gloops のシステム概要
■ 構成Linux( 黄 ) と Windows( 青 ) のハイブリット
構成複数クラスタで運用
gloops インフラシステム概要
LB
nginx
memcachedredisDB(SQLServer)
nginx
AP(IIS) AP(IIS) AP(IIS)
gloops の DB と KVS
■DB前述の通り、 SQL Server を利用
■KVSredis と memcached を利用→DB の負荷を軽減するため、 cache を最大限利用→ 利用場面で SQL Server と redis と memcached 使い分け→ アクセスを捌くことが優先
gloops サーバ規模
■1 タイトル最大で…約 150 台
■ 合計1800 台以上のサーバ(構築中・スタンバイも含)→Windows:Linux= 約 7:3
2 . glusterfs (+samba) +nginx+varnish を用いた静的コンテンツ配信サーバ冗長化
静的コンテンツ配信の概要
ユーザー mobage CDN gloops サーバ群
①Platform CDN に静的コンテンツ(画像 etc )が cache されてい
れば、そのままユーザーへ返す
②Platform CDN に静的コンテンツ(画像 etc )が cache されていない場合は、 gloops サーバ群に取
りに来る
va
nx nxnx
va va
静的コンテンツ配信サーバ群 ver.1.0
LB
LB
LB
varnish
LB
nginx
file
:http
:nfs(autofs)
:Global IP
画像 etc
静的コンテンツ配信サーバ群 ver.1.0
■ 経緯・上位回線が逼迫されていたため、 varnish サーバ群をクラウドへ外出ししていた・なので、 varnish→nginx 間は、 GLOBAL NW でアクセスしていた
va va va
nx nxnx
静的コンテンツ配信サーバ群 ver.1.1
LBLB
varnish
nginx
file
:http
:nfs(autofs)
:Global IP
画像 etc
nx nxnx
静的コンテンツ配信サーバ群 ver.1.1
■ 改善点・上位回線が拡大され、 varnish サーバ群を外出しせず、同一 NW 上に設置することが可能になった・よって、 varnish→nginx 間は LOCAL NW を通信→ レスポンス改善→ 外的要因によるリスク軽減
静的コンテンツ配信サーバ群 ver.1.1
■ 問題点・ nx→file 間の nfs(autofs) が、安定しない!!・ 10 台中 1 台程度、数日に 1 回接続切れる→ 一部画像 etc NG・ timeout 等の設定変更、 version 変更しても改善せず ><
→nfs やめよう!→nginx で poxy させよう!
静的コンテンツ配信サーバ群 ver.1.2
va
nx
LBLB
varnish
file(nginx+ 画像 etc)
:http
:Global IP
画像 etc
va va
静的コンテンツ配信サーバ群 ver.1.2
■ 改善点・ nfs(autofs) が接続断になる問題解決!
静的コンテンツ配信サーバ群 ver.1.2
■ 問題点・ (もちろん最初から分かっていましたが、)File (静的コンテンツ配置)サーバが、 SPOFFile サーバがダウンしたら、画像 etc 全て(現時点でcache されているもの以外)閲覧不能!
そもそもの大前提そもそもの大前提
・ glusterfs (+samba) +nginx+varnish を用いた静的コンテンツ配信サーバ冗長化
画像 etc
Linux
File サーバ
Windows
画像 etc:samba
File サーバの冗長化
・ glusterfs を利用して、静的コンテンツファイルの分散を行なう
glusterfs とは
・スケーラブルなストレージのための汎用分散ファイルシステムの 1 つ・ TCP/IP インターコネクトなどの各種ストレージを集約し、大規模並列ネットワークファイルシステムを構築できる・ 2011 年のレッドハットによる Gluster 買収の後はレッドハットにより開発されている
( Wikipedia より)
va
静的コンテンツ配信サーバ群 ver.2.0
va
nx
LBLB
varnish
glusterfsreplica volume(nginx+ 画像 etc)
:http
:Global IP
画像 etc
va
nx
画像 etc
画像 etc
:glusterfs
glusterfsnative client+samba
Windows
画像 etc
:samba
静的コンテンツ配信サーバ群 ver.2.0
# gluster volume info
Volume Name: data01Type: ReplicateVolume ID: 12345678-1234-abcd-abcd-abcdefghijklStatus: StartedNumber of Bricks: 1 x 2 = 2Transport-type: tcpBricks:Brick1: 172.16.10.11:/www/dataBrick2: 172.16.10.12:/www/data
静的コンテンツ配信サーバ群 ver.2.0
■ 仕様・ glusterfs native client+samba サーバから、 replica volume サーバへ画像の同期を行なう・ replica volume サーバには各々 nginx が稼働している
静的コンテンツ配信サーバ群 ver.2.0
■ 改善点・ nginx が稼働している glusterfs replica サーバが、ダウンしても冗長化をとっているため、画像 etc が配信されなくなることはない
静的コンテンツ配信サーバ群 ver.2.0【ヘルスチェック】
■from LB・ LB→varnish→nginx 経由で特定ファイルの HTTP status 監視→200 が返って来なかったら、 LB から varnish が外れる
5s おきにチェックし、HTTP Status 200 が 3s 以内に返ってくれば OK1 回でも NG なら外す
■from varnish・ varnish→nginx 経由で特定ファイルの HTTP status 監視→200 が返って来なかったら、 varnish から nginx が外れる
.expected_response = 200;
.interval = 5s;
.timeout = 1s;
.initial = 6;
.window = 5;
.threshold = 4;
5s おきにチェックし、レスポンスが 1s 以内に返ってきて、5 回中 4 回 HTTP Status 200 が返ってくれば OK起動時は 6 回成功しないと、 healthとみなさないよ
静的コンテンツ配信サーバ群 ver.2.0【ヘルスチェック】
静的コンテンツ配信サーバ群 ver.2.0
【そもそも varnish の設定】・ vcl で複数ドメインに対応→ ドメイン毎に、振り先の nginx ( replica volume )サーバ群を変更可能
■nginx(replica volume) への振り分け
director image01 round-robin { { .backend = replica11; } { .backend = replica12; }}director image02 round-robin { { .backend = replica21; } { .backend = replica22; }}
■ ドメインの振り分け
set req.http.host = regsub(req.http.host, ":8080$", ""); if ( req.http.host == "image01.hogehoge.jp" ) { set req.backend = image01; } if ( req.http.host == "image02.hogehoge.jp" ) { set req.backend = image02; }
静的コンテンツ配信サーバ群 ver.2.0
【そもそも varnish→nginx 間の設定】・ varnish から Host Header で、ドメインを nginxへ渡している
【そもそも nginx の設定】・ varnish で設定した、ドメイン毎に VirtualHost を設定→ ドキュメントルート、 log の出力先を分けてる→ 前述ヘルスチェックを利用し、個別ドメイン毎に切り離すことも可能
静的コンテンツ配信サーバ群 ver.2.0
■varnish monitoring
■varnishstat の値をmonitoring
静的コンテンツ配信サーバ群 ver.2.0
■ 今後・静的コンテンツ配布先の冗長化・ glusterfs のパフォーマンス(チューニング・監視)
ご清聴ありがとうございました