Glusterfsを用いた静的コンテンツ配信サーバ冗長化 20130723

1,925 views
1,789 views

Published on

0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,925
On SlideShare
0
From Embeds
0
Number of Embeds
19
Actions
Shares
0
Downloads
21
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Glusterfsを用いた静的コンテンツ配信サーバ冗長化 20130723

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

×