16
S3 & ELB & Varnish @suz_lab Thursday, November 10, 11

S3 & ELB & Varnish

Embed Size (px)

Citation preview

Page 1: S3 & ELB & Varnish

S3 & ELB & Varnish@suz_lab

Thursday, November 10, 11

Page 2: S3 & ELB & Varnish

cloudpack

Thursday, November 10, 11

Page 3: S3 & ELB & Varnish

suz-lab

Thursday, November 10, 11

Page 4: S3 & ELB & Varnish

S3

• HTTPでコンテンツをダウンロード• 堅牢性 : 99.999999999% : 99.99% (RRD)

• 可用性 : 99.99%• SLA : 99.9%

Thursday, November 10, 11

Page 5: S3 & ELB & Varnish

ELB

• ロードバランサー• SSL Termination• 実は一つのEC2に複数のELBが接続可能(AWS Management Console ではできない... )

Thursday, November 10, 11

Page 6: S3 & ELB & Varnish

Varnish

• コンテンツキャッシュサーバ• リバースプロキシーサーバ• HTTPヘッダの操作

Thursday, November 10, 11

Page 7: S3 & ELB & Varnish

S3 & ELB & Varnish

• S3 の HTTPS での独自ドメイン• S3 への POST アクセス• S3 のレスポンスに独自ヘッダ• S3 & ELB の Zone Apex 対策

Thursday, November 10, 11

Page 8: S3 & ELB & Varnish

S3 の HTTPS での独自ドメイン

• Facebookアプリ• HTTPSはELBで処理• N(ELB) : 1(Varnish)

Thursday, November 10, 11

Page 9: S3 & ELB & Varnish

設定例sub vcl_recv {

if(req.http.host == "www.cloudpack.jp") {set req.backend = cloudpack;set req.http.host = "s3.www.cloudpack.jp";return(lookup);

}return(error);

}backend cloudpack {

.host = "s3.www.cloudpack.jp";

.port = "80";}

Thursday, November 10, 11

Page 10: S3 & ELB & Varnish

S3 へのPOST アクセス

• Facebookアプリ• POSTをGETに変換

Thursday, November 10, 11

Page 11: S3 & ELB & Varnish

設定例

sub vcl_recv {if(req.http.host == "www.cloudpack.jp") {

set req.backend = cloudpack;set req.http.host = "s3.www.cloudpack.jp";set req.request = "GET";return(lookup);

}return(error);

}

Thursday, November 10, 11

Page 12: S3 & ELB & Varnish

S3 のレスポンスに独自ヘッダ

• 携帯画像(SoftBank)の著作権保護機能

• x-jphone-copyright• SoftBank以外はOK...

Thursday, November 10, 11

Page 13: S3 & ELB & Varnish

設定例sub vcl_recv {

if(req.http.host == "www.cloudpack.jp") {set req.backend = cloudpack;set req.http.host = "s3.www.cloudpack.jp";return(lookup);

}return(error);

}sub vcl_fetch {

if(req.http.host == "s3.www.cloudpack.jp") {set beresp.http.x-jphone-copyright = "no-transfer";

}return(deliver);

}

Thursday, November 10, 11

Page 14: S3 & ELB & Varnish

S3 & ELB のZone Apex 対策

• ELB で Route53 なら不要• cloudpack.jp の頭に www つけてリダイレクト(301)

Thursday, November 10, 11

Page 15: S3 & ELB & Varnish

設定例sub vcl_error {

set obj.http.Content-Type = "text/plain; charset=utf-8";if(req.url == "/healthcheck.txt") {

set obj.status = 200;synthetic {"health check"};

} else {set obj.http.Location = "http://www." req.http.host req.url;set obj.status = 301;

}return(deliver);

}

Thursday, November 10, 11

Page 16: S3 & ELB & Varnish

cloudpack Tools

Thursday, November 10, 11