• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
JAWS-UG-Kyoto-2nd
 

JAWS-UG-Kyoto-2nd

on

  • 5,057 views

JAWS-UG Kyoto勉強会 第二回で発表した資料です。はてなブログをAWSで構築した記録、アーキテクチャなど。

JAWS-UG Kyoto勉強会 第二回で発表した資料です。はてなブログをAWSで構築した記録、アーキテクチャなど。

Statistics

Views

Total Views
5,057
Views on SlideShare
3,276
Embed Views
1,781

Actions

Likes
10
Downloads
23
Comments
0

9 Embeds 1,781

http://yunishio.hateblo.jp 788
http://jawsug-kyoto.g.hatena.ne.jp 512
http://wtatsuru.hatenadiary.com 432
http://slide.yoshiday.net 21
http://sinka.gob.jp 15
http://webcache.googleusercontent.com 5
https://www.google.co.jp 4
http://twitter.com 3
https://twitter.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

JAWS-UG-Kyoto-2nd JAWS-UG-Kyoto-2nd Presentation Transcript

  • はてなブログの下側 株式会社はてな 渡辺 起 (id:wtatsuru)2011/11/10 JAWS-UG - Kyoto 勉強会第2回
  • 自己紹介 渡辺 起 (WATANABE Tatsuru)  システムプラットフォーム部@はてな 2011年10月入社  AWSまわりを主に担当  Id:wtatsuru, @tatsuru 経歴  福岡→東京→京都  大学ロボコン、HPC(High Performance Computing) 趣味:ラーメン屋巡り  http://d.hatena.ne.jp/wtatsuru/ 2
  • Outline はてなについて AWSでのインフラ構築  環境構築  サーバ・ネットワーク構成  冗長化  監視体制 所感 3
  • はてなについて 4
  • はてなのサービス はてなダイアリー はてなブックマーク 人力検索はてな うごめもはてな etc. 5
  • はてなのインフラ iDC  物理サーバ640台、仮想化して約2000台  自作・ベンダー製サーバ  SSDを多用  例:はてブのスレーブはほぼSSD CentOS 5.5 / Debian 6.0  Xen で仮想化  プライベートクラウドっぽく運用  コマンド一発でDomU 6
  • はてなのインフラ AWS  S3  CloudFront:CDN  EMR / Hive:ログ解析  社内Hadoopから移行 既存サービスはiDCが中心  レイテンシの問題 → 東京リージョンで解決! 7
  • はてなブログhttp://hatenablog.com/ 8
  • はてなブログ 2011/11/07 招待制ベータリリース 生まれ変わったはてなダイアリー はてな初のAWS上で動くサービス! 9
  • はてなブログ はてな初のAWS上で動くサービス! はてなブログの下側を中心に話します  cf. 新はてなダイアリーの裏側 (id:onishi) http://www.slideshare.net/onishi/ss-9726535 10
  • AWSでのインフラ構築 11
  • サーバ構成 いつもの三段構成  Proxy: nginx proxy  Backend: Plack  DB: MySQL 5.5 backend DB 12
  • サーバ構成 使いたいサービス  EC2 (Elastic Computing Cloud)  ELB (Elastic Load Balancing)  RDS (Relational Database Service)  VPC (Virtual Private Cloud) 13
  • ネットワーク構成 EC2のネットワーク  起動時にIPアドレス割り当て (DHCP)  グローバル+プライベート (10.0.0.0/8)  セキュリティグループでアクセス制限  Elastic IP (固定グローバルIPアドレス)割り当て可能 IPアドレスベースのアプローチは使えない 14
  • ネットワーク構成 Elastic IP が固定IPアドレス代わりに使える?  ほとんど代替にはならない  EC2内からElastic IPへのアクセスはNATされて届く  アクセス制限ができない  AWS内のみに制限するのも困難  Amazonの増え続けるIPアドレス帯を追えない  外向きサービスのみに使用 15
  • ネットワーク構成 セキュリティグループはシンプルに  全サーバが所属する基本グループ  ICMP, オフィスからのSSH などを許可  Proxy, backend, DB ロールごとに  内部サービス用:VPN, DNS, nagios, develop 16
  • ネットワーク構成 DCにVPNサーバを用意  スレーブDB等はVPN接続 内部サービス用のインスタンスを用意  DCからの接続はここでNAPT  DC内への接続はポート転送 DC → EC2: 全て通る EC2→内部サービス:通る EC2 w/VPN → DC: 全て通る 17
  • 冗長化・負荷分散 高性能 高可用性 18
  • 冗長化・負荷分散 これまで使っていた手法を変更する必要あり LVS LVS  LVS+keepalived による負荷分散 proxy proxy proxy  keepalivedによる冗長化:Master DB, LVS LVS LVS 動的なIPアドレス backend backend backend  DNSに依存してしまう LVS L2, L3 の制限によるもの LVS  マルチキャストが使えない master master slave slave slave  IPアドレスがつけかえられない  (VPCでも解決しない) 19
  • 冗長化・負荷分散 代替手段  proxy  Elastic IP, ELB  backend  proxyでの振り分け, HAProxy, ELB  Master DB  MySQL Proxy, HAProxy, RDS  Slave DB  同上 20
  • 冗長化・負荷分散 Proxy  Elastic IP のつけかえ  Elastic IP にDNSレコードを向ける  アクティブ側を監視、落ちたら付け替える。  お手軽 EIP Proxy Proxy  ELB:本命  AWSが提供するロードバランサ。  ヘルスチェック、AutoScaling  複数リージョンも 21
  • 冗長化・負荷分散 Backend  プロキシでの振り分け  mod_loadbalancer (Apache), nginx  ELB:本命  ヘルスチェック、AutoScaling  ELBへ直接アクセスされる可能性を考慮 22
  • 冗長化・負荷分散 DB  master  master-master 相互レプリケーション  DNSベースでのフェイルオーバ:信頼性・ダウンタイムの問題 MySQL Multi-master on EC2 (id:stanaka) http://www.slideshare.net/stanaka/mysql-multimaster-on-ec2  slave  スレーブインスタンスを用意  振り分けはHAProxy, MySQL Proxy を検証中  バックアップ  EBS Snapshot 23
  • 冗長化・負荷分散 RDS  AWSのリレーショナルデータベースサービス  MySQL  Multi-AZ  定期スナップショット  Read Replica  振り分けは自前で行う必要有り  MySQL Proxy, HAProxy  パフォーマンスに若干の不安  まさに求めていたもの 24
  • 冗長化・負荷分散 開発段階 EIP proxy  最小構成  EBSインスタンス backend memcached master slave 25
  • 冗長化・負荷分散 いまここ EIP  Proxy proxy proxy  Elastic IP で Active/Standby  Backend backend backend memcached memcached  nginxで振り分け  DB  master, slave, backup master slave slave  1台ずつ 26
  • 冗長化・負荷分散 27
  • 冗長化・負荷分散 リリース予定 ELB proxy proxy proxy proxy ELB ELB backend backend backend backend Read Replica RDS Read Replica 28
  • インスタンス作成 インスタンス作成はAPIのラッパを使用  基本セットアップ、サーバ管理ツールへの登録  AMI, セキュリティグループの設定 Chef で構成管理  ソフトウェアのインストール・設定 29
  • 監視 負荷状況の収集  SNMPで収集、RRDToolで保存・可視化  CloudWatch は使用せず 独自のサーバ管理ツール 30
  • 監視 31
  • 監視 Nagiosで監視・アラート  EC2内に専用の監視サーバを配置  Ping, HDD容量, httpd, レプリケーション状態など  設定ファイルは管理用DBの情報から自動生成 32
  • VPC VPCの利用を検討中  IPアドレスを自由に決められる  付け替えはできない  より信頼できるVPN接続  マルチキャスト使えない... Amazon Virtual Private Cloud User Guide より 要件 http://docs.amazonwebservices.com/AmazonVPC/2011-07-15/UserGuide/  複数経路→BGPを喋る必要(!)  OSPFで経路を配る内部ネットワークとの兼ね合い 33  Vyatta で検証中
  • 所感 34
  • AWSで感じたメリット 初期投資が抑えられる  サーバの準備が不要  ラック空ける、サーバ一式準備 柔軟なインフラ  空きホストを探さなくてもいい  簡単にスケールアップ 国際化に対応しやすい  複数AZで世界中から低レイテンシ 35
  • 苦労している点 パフォーマンス  特にDBのI/O  EBSで数百IOPS  DCでSSD単体で4000IOPS  高速ストレージオプションをぜひ! 36
  • 苦労してます L2, L3での制限からくるもの  マルチキャスト使えない→VRRP, LVSが使えない  IPアドレスベースでの切り替えに頼り切っていた ELB, MSQL Proxy 37
  • まとめ はてなブログをAWSでβリリースしました 成長に伴って柔軟に対応するインフラ 既存サービスを移すよりは楽だが、苦労も多い 38
  • ご清聴ありがとうございました。 はてなブログをよろしくお願いいたします。 39