Top Banner
株株株株 gloops 株株株株株株株株株株株株株 株株株株株株株株株株株株株株株株 株株株株 株株株株 2013.7.23 glusterfs 株株株株 株株株株株株株株株株株株株株株
31

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

May 24, 2015

Download

Documents

Takaki Kawamura
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Glusterfsを用いた静的コンテンツ配信サーバ冗長化 20130723

株式会社 gloops

クロスファンクション統括部

システム基盤部インフラエンジニア リーダー

河村喬樹

2013.7.23

glusterfs を用いた

静的コンテンツ配信サーバ冗長化

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

■ 名前河村喬樹(かわむらたかき) 33 才・独身

■gloops 入社2011 年 4 月前職は携帯サイト運営のインフラエンジニア

入社当時 社員 80 名 インフラ 2 人目

■ 趣味お酒大好き ! ( facebook でも大概飲んでる写真あがってます)

自己紹介

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

アジェンダ

1. gloops のシステム概要

2 . glusterfs (+samba) +nginx+varnish を用いた静的コンテンツ配信サーバ冗長化

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

1. gloops のシステム概要

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

■ 構成Linux( 黄 ) と Windows( 青 ) のハイブリット

構成複数クラスタで運用

gloops インフラシステム概要

LB

nginx

memcachedredisDB(SQLServer)

nginx

AP(IIS) AP(IIS) AP(IIS)

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

gloops の DB と KVS

■DB前述の通り、 SQL Server を利用

■KVSredis と memcached を利用→DB の負荷を軽減するため、 cache を最大限利用→ 利用場面で SQL Server と redis と memcached 使い分け→ アクセスを捌くことが優先

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

gloops サーバ規模

■1 タイトル最大で…約 150 台

■ 合計1800 台以上のサーバ(構築中・スタンバイも含)→Windows:Linux= 約 7:3

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

2 . glusterfs (+samba) +nginx+varnish を用いた静的コンテンツ配信サーバ冗長化

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

静的コンテンツ配信の概要

ユーザー mobage CDN gloops サーバ群

①Platform CDN に静的コンテンツ(画像 etc )が cache されてい

れば、そのままユーザーへ返す

②Platform CDN に静的コンテンツ(画像 etc )が cache されていない場合は、 gloops サーバ群に取

りに来る

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

va

nx nxnx

va va

静的コンテンツ配信サーバ群 ver.1.0

LB

LB

LB

varnish

LB

nginx

file

:http

:nfs(autofs)

:Global IP

画像 etc

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

静的コンテンツ配信サーバ群 ver.1.0

■ 経緯・上位回線が逼迫されていたため、 varnish サーバ群をクラウドへ外出ししていた・なので、 varnish→nginx 間は、 GLOBAL NW でアクセスしていた

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

va va va

nx nxnx

静的コンテンツ配信サーバ群 ver.1.1

LBLB

varnish

nginx

file

:http

:nfs(autofs)

:Global IP

画像 etc

nx nxnx

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

静的コンテンツ配信サーバ群 ver.1.1

■ 改善点・上位回線が拡大され、 varnish サーバ群を外出しせず、同一 NW 上に設置することが可能になった・よって、 varnish→nginx 間は LOCAL NW を通信→ レスポンス改善→ 外的要因によるリスク軽減

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

静的コンテンツ配信サーバ群 ver.1.1

■ 問題点・ nx→file 間の nfs(autofs) が、安定しない!!・ 10 台中 1 台程度、数日に 1 回接続切れる→ 一部画像 etc NG・ timeout 等の設定変更、 version 変更しても改善せず ><

→nfs やめよう!→nginx で poxy させよう!

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

静的コンテンツ配信サーバ群 ver.1.2

va

nx

LBLB

varnish

file(nginx+ 画像 etc)

:http

:Global IP

画像 etc

va va

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

静的コンテンツ配信サーバ群 ver.1.2

■ 改善点・ nfs(autofs) が接続断になる問題解決!

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

静的コンテンツ配信サーバ群 ver.1.2

■ 問題点・ (もちろん最初から分かっていましたが、)File (静的コンテンツ配置)サーバが、 SPOFFile サーバがダウンしたら、画像 etc 全て(現時点でcache されているもの以外)閲覧不能!

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

そもそもの大前提そもそもの大前提

・ glusterfs (+samba) +nginx+varnish を用いた静的コンテンツ配信サーバ冗長化

画像 etc

Linux

File サーバ

Windows

画像 etc:samba

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

File サーバの冗長化

・ glusterfs を利用して、静的コンテンツファイルの分散を行なう

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

glusterfs とは

・スケーラブルなストレージのための汎用分散ファイルシステムの 1 つ・ TCP/IP インターコネクトなどの各種ストレージを集約し、大規模並列ネットワークファイルシステムを構築できる・ 2011 年のレッドハットによる Gluster 買収の後はレッドハットにより開発されている

( Wikipedia より)

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

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

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

静的コンテンツ配信サーバ群 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

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

静的コンテンツ配信サーバ群 ver.2.0

■ 仕様・ glusterfs native client+samba サーバから、 replica volume サーバへ画像の同期を行なう・ replica volume サーバには各々 nginx が稼働している

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

静的コンテンツ配信サーバ群 ver.2.0

■ 改善点・ nginx が稼働している glusterfs replica サーバが、ダウンしても冗長化をとっているため、画像 etc が配信されなくなることはない

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

静的コンテンツ配信サーバ群 ver.2.0【ヘルスチェック】

■from LB・ LB→varnish→nginx 経由で特定ファイルの HTTP status 監視→200 が返って来なかったら、 LB から varnish が外れる

5s おきにチェックし、HTTP Status 200 が 3s 以内に返ってくれば OK1 回でも NG なら外す

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

■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【ヘルスチェック】

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

静的コンテンツ配信サーバ群 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; }

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

静的コンテンツ配信サーバ群 ver.2.0

【そもそも varnish→nginx 間の設定】・ varnish から Host Header で、ドメインを nginxへ渡している

【そもそも nginx の設定】・ varnish で設定した、ドメイン毎に VirtualHost を設定→ ドキュメントルート、 log の出力先を分けてる→ 前述ヘルスチェックを利用し、個別ドメイン毎に切り離すことも可能

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

静的コンテンツ配信サーバ群 ver.2.0

■varnish monitoring

■varnishstat の値をmonitoring

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

静的コンテンツ配信サーバ群 ver.2.0

■ 今後・静的コンテンツ配布先の冗長化・ glusterfs のパフォーマンス(チューニング・監視)

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

ご清聴ありがとうございました