Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
AWS移行に向けたクックパッドの取り組み+αクックパッド株式会社菅原元気
自己紹介クックパッドでのお仕事インフラ担当(最近は主にAWSまわり)ミッションは「スピード・スケール・可用性・バックアップ・セキュリティ」を押さえたインフラの構築・運用オープンソース活動AWSのツールの開発elasticfox-ec2tag、IAM Fox、R53 FoxRubyライブラリの開発zipruby、libarchive、rua…etc
アジェンダAWSのサーバ・ネットワーク構成分散DNSの話
サーバ・ネットワーク構成
サーバ・ネットワーク構成現在のネットワークネットワークセキュリティDNSAMI監視冗長化MySQL
サーバ・ネットワーク構成シンプルな三層構造それぞれの階層でネットワークが分離されているネットワークセキュリティDNSAMI監視冗長化MySQL
サーバ・ネットワーク構成EC2のネットワークネットワークセキュリティDNSAMI監視冗長化MySQL
サーバ・ネットワーク構成全てのサーバが同じセグメント上に存在するネットワークを分離する代わりに、セキュリティグループを利用するネットワークセキュリティDNSAMI監視冗長化MySQL
サーバ・ネットワーク構成インスタンスには二つのセキュリティグループを設定するBasic各ロールのセキュリティグループネットワークセキュリティDNSAMI監視冗長化MySQL
サーバ・ネットワーク構成セキュリティグループ構成ネットワークセキュリティDNSAMI監視冗長化MySQL
サーバ・ネットワーク構成Basicでは基本的なポートについて、相互に通信することを許可するping(icmp)http特定のセキュリティグループからのアクセスを許可する生存監視ツール(Nagiosなど)性能監視ツール(Muninなど)ネットワークセキュリティDNSAMI監視冗長化MySQL
サーバ・ネットワーク構成セキュリティグループ構成ネットワークセキュリティDNSAMI監視冗長化MySQL
サーバ・ネットワーク構成各ロールのセキュリティグループロール同士の通信を許可Basicとロールので通信を許可ネットワークセキュリティDNSAMI監視冗長化MySQL
サーバ・ネットワーク構成AppからDBへのアクセスを許可ネットワークセキュリティDNSAMI監視冗長化MySQL
サーバ・ネットワーク構成BasicからDNSへの問い合わせを許可ネットワークセキュリティDNSAMI監視冗長化MySQL
サーバ・ネットワーク構成基本的に許可するアクセス元にIPアドレスは指定しないElastic Load Balancingからアクセスされるロールは、例外的に10.0.0.0/8のアクセスを許可ソースIPを指定できないセキュリティグループを指定できないすべてのサーバでiptablesを起動人的なミスを防ぐためネットワークセキュリティDNSAMI監視冗長化MySQL
サーバ・ネットワーク構成EC2では内部IPアドレスを固定できない停止、再開などで内部IPアドレスが変更される内部DNSを使って、IPアドレスを意識しない状態にするネットワークセキュリティDNSAMI監視冗長化MySQL
サーバ・ネットワーク構成DNSはActive-Active構成の2台それぞれにElastic IPをアサイン各サーバはresolv.confで2台を参照ネットワークセキュリティDNSAMI監視冗長化MySQL
サーバ・ネットワーク構成DNSはNameタグの情報を取得して、ドメインの情報を構成例) Name:dev-> dev.ap-northeast-1.compute.internalネットワークセキュリティDNSAMI監視冗長化MySQL
サーバ・ネットワーク構成resolv.confは定期的にcronで更新内部IPアドレスが変わったらresolv.confを更新DNSの片方が停止したらresolv.confから除外ネットワークセキュリティDNSAMI監視冗長化MySQL
サーバ・ネットワーク構成cronはDNSのPublic DNS Nameを問い合わせる(Public DNS NameはElastic IPのアサインで固定されている)ネットワークセキュリティDNSAMI監視冗長化MySQL
サーバ・ネットワーク構成Public DNS NameにひもづくIPアドレスとしてDNSの内部IPを取得ネットワークセキュリティDNSAMI監視冗長化MySQL
サーバ・ネットワーク構成取得した内部IPをresolv.confに書き込む問い合わせが返らなかった場合は、resolv.confから除外するネットワークセキュリティDNSAMI監視冗長化MySQL
サーバ・ネットワーク構成CentOS5.5をクリーンインストールルートデバイスはEBS現在は32bitと64bitが混在しているが、64bitに統一する予定ネットワークセキュリティDNSAMI監視冗長化MySQL
サーバ・ネットワーク構成ベースとなるAMIから各ロールのAMIを作成それぞれのAMIはバージョンをつてけ管理しているシステム管理ツール(Chef等)の導入も進めているネットワークセキュリティDNSAMI監視冗長化MySQL
サーバ・ネットワーク構成システムネットワークの生存監視Nagios + nrpe性能監視MuninネットワークセキュリティDNSAMI監視冗長化MySQL
サーバ・ネットワーク構成Nagiosはサーバの生存状態を監視Muninはサーバの性能情報(CPU使用率やロードアベレージ)を記録ネットワークセキュリティDNSAMI監視冗長化MySQL
サーバ・ネットワーク構成起動されたインスタンスは自動的にNagios・Muninの監視対象となる各インスタンスにはタグをつけて、どのような監視対象であるかを識別できるようにするネットワークセキュリティDNSAMI監視冗長化MySQL
サーバ・ネットワーク構成可用性向上のための方策Elastic IPを使用した相互監視Nagiosを使ったAMIからの復旧Heartbeatを使ったフェイルオーバーネットワークセキュリティDNSAMI監視冗長化MySQL
サーバ・ネットワーク構成Elastic IPを使用した相互監視NagiosやLDAPの冗長化に使用ネットワークセキュリティDNSAMI監視冗長化MySQL
サーバ・ネットワーク構成それぞれElastic IPのPublic DNS Nameを監視ネットワークセキュリティDNSAMI監視冗長化MySQL
サーバ・ネットワーク構成返ってきた内部IPアドレスが自分のアドレスの場合、ヘルスチェックは行わない自分のアドレスと異なる場合、ヘルスチェックを行う->常にバックアップがマスタのヘルスチェックを行うネットワークセキュリティDNSAMI監視冗長化MySQL
サーバ・ネットワーク構成マスタのヘルスチェックに失敗した場合、バックアップは自分にElastic IPをアサインするElastic IPがマスタからバックアップに移って、フェイルオーバーされるネットワークセキュリティDNSAMI監視冗長化MySQL
サーバ・ネットワーク構成Nagiosを使ったAMIからの復旧Nagiosがへルスチェックに失敗したタイミングで、AMIからの復旧をするMunin等などで使用ネットワークセキュリティDNSAMI監視冗長化MySQL
サーバ・ネットワーク構成Heartbeatを使ったフェイルオーバー基本的にはcronを使った方法と同じEIPを仮想IPの代わりに使うネットワークセキュリティDNSAMI監視冗長化MySQL
サーバ・ネットワーク構成Heartbeatで相互に監視ネットワークセキュリティDNSAMI監視冗長化MySQL
サーバ・ネットワーク構成フェイルオーバーしたら、リソースエージェントとEIPをアサインネットワークセキュリティDNSAMI監視冗長化MySQL
サーバ・ネットワーク構成Elastic IPを使用した相互監視Heartbeatを使った方法に置き換え中Nagiosを使ったAMIからの復旧5〜10分程度のダウンタイムが許容されるサーバに適用LDAPの故障するとnrpeがおかしくなるので、今は使っていない状態…ネットワークセキュリティDNSAMI監視冗長化MySQL
サーバ・ネットワーク構成Heartbeatを使ったフェイルオーバーダウンタイムは一番短いLVS/keepalivedに比べると劣る…マルチキャストを使えないのが痛いネットワークセキュリティDNSAMI監視冗長化MySQL
サーバ・ネットワーク構成ネットワークセキュリティDNSAMI監視冗長化MySQL
サーバ・ネットワーク構成EC2上にはSlaveのみデータはEBS上に置いているデータは日次でSnapshotを作成ネットワークセキュリティDNSAMI監視冗長化MySQL
サーバ・ネットワーク構成Snapshotから新しいスレーブを作るネットワークセキュリティDNSAMI監視冗長化MySQL
分散DNSの話
分散DNSの話内部DNSは最重要サーバresolv.confで一応、複数のDNSを参照
分散DNSの話内容がキャッシュされるフェイルオーバー時にApache等のリロードが必要timeoutが1s以下にできない先頭のネームサーバが死ぬとクエリがいちいち引っかかるcronで監視ダウンタイムが分単位管理がめんどくさい
分散DNSの話なので分散DNSというものを作りました
分散DNSの話自分のホスト名を指定して各インスタンスでノードを起動
分散DNSの話ホスト名とIPアドレスの情報はGossipプロトコルで各ノードに拡散される
分散DNSの話アプリケーションは自インスタンスのノードに問い合わせ
分散DNSの話死んだノードはクラスタから外れる各ノードの情報は自動的に更新される
分散DNSの話DEMO
ご静聴ありがとうございました

More Related Content

AWS移行に向けたクックパッドの取り組み+α