BCPに活かせ!一撃 CloudFormation

  • 1,181 views
Uploaded on

2013.7.15 JAWS-UG名古屋で発表した資料です。

2013.7.15 JAWS-UG名古屋で発表した資料です。

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,181
On Slideshare
0
From Embeds
0
Number of Embeds
7

Actions

Shares
Downloads
0
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. 2013.7.15 吉田真吾 @yoshidashingo BCPに活かせ! CloudFormation
  • 2. 自己紹介 名前:吉田真吾 アイレット株式会社 cloudpack エバンジェリスト JAWS-UG 横浜 代表 好きなAWSサービス:Amazon S3 好きなAWSクラウドデザインパターン:Direct Hostingパターン
  • 3. アジェンダ cloudpack 紹介 事例 AWS CloudFormation の活用方法 AWS CloudFormation Tips まとめ
  • 4. AWS運用をアウトソースしたい企業向けの 月額費用固定型フルマネージドホスティング 24時間365日サーバー運用・保守 •電話/メールによるサポート 初期費用なし(基本移行作業含む) 月額5万円からのスタート 日本円で請求書発行
  • 5. フルマネージド サービス/リソース監視 ディスク使用量、メモリ使用量、プロセス数、 Webサーバー・DBサーバー死活... バックアップ/リストア EBSスナップショットを利用した二世代(過去 二日分)バックアップ アクセス制御(ファイアーウォール) 適切なセキュリティグループを設定、OS・ミド ルウェアレベルでさらに細かな設定も対応可能
  • 6. 定額課金・請求書払い 従量課金では予算計画が立てられない クレジットカードでUSドル決済では利用料の予測が難しい Amazon Web Servicesでは... 月額固定+日本円請求書発行
  • 7. バースト保障 キャンペーンなど急激なアクセス増加へ合わせてインフラ 準備するのは不可能 いつあるかわからないピークのために予め準備できない 追加料金無しでスケールアウト (7インスタンス日まで)
  • 8. 日本初のAPNプレミア コンサルティングパートナーの 一社として認定されました。
  • 9. Confidential AWS CloudFormation 事例
  • 10. インフラ設計・構築 インターネット公式サイト 月間1億PV 45億ヒット、 新車発表時3倍のアクセス すべて冗長化 オンプレに環境再生可能な バックアップ 東京リージョン障害時に シンガポールで復旧可能
  • 11. DR用CloudFormation CloudFormationでシンガポールリージョ ンに環境構築 テンプレートから一発で構築可能 Tokyo Region Singapore Region CloudForma*on, Template, Stack,
  • 12. ベストプラクティスの集大成 CloudFront Clone Server Multi-Datacenter Cache Distribution DB Replication Bootstrap Stack Deployment HA NAT DR
  • 13. リリース時のバースト 公開時、想定を超えるアクセスが集中 スケールアウト、そしてスケールアップ を同時に スケールアウト スケールアップ
  • 14. ポイント 大規模プロジェクトでのスケジュール管理 インフラ構築フェーズの位置、前後のタスク Bプランをいつも準備されている AWSすら信頼しない前提でのリスク管理 オンプレ環境へのデータバックアップ シンガポールリージョンの準備
  • 15. Confidential AWS CloudFormation 説明
  • 16. AWS CloudFormation JSON形式で記述したテンプレートを利用する ことで、システムのスタックまるごとデプロ イ・更新・削除できるサービス テンプレートのパート Resources:作成したいリソースの定義 Parameters:画面から指定する引数 Mappings:条件に応じて入替える引数リスト Outputs:結果の出力
  • 17. {    "Parameters"  :  {        "KeyName"  :  {            "Description"  :  "Name  of  an  existing  EC2  KeyPair  to  enable  SSH  access  to  the  instance",            "Type"  :  "String"        }    },    "Mappings"  :  {        "RegionMap"  :  {            "us-­‐east-­‐1"  :  {                    "AMI"  :  "ami-­‐76f0061f"            },            "us-­‐west-­‐1"  :  {                    "AMI"  :  "ami-­‐655a0a20"            },            "eu-­‐west-­‐1"  :  {                    "AMI"  :  "ami-­‐7fd4e10b"            },            "ap-­‐southeast-­‐1"  :  {                    "AMI"  :  "ami-­‐72621c20"            },            "ap-­‐northeast-­‐1"  :  {                    "AMI"  :  "ami-­‐8e08a38f"            }        }    },    "Resources"  :  {        "Ec2Instance"  :  {            "Type"  :  "AWS::EC2::Instance",            "Properties"  :  {                "KeyName"  :  {  "Ref"  :  "KeyName"  },                "ImageId"  :  {  "Fn::FindInMap"  :  [  "RegionMap",  {  "Ref"  :  "AWS::Region"  },  "AMI"  ]},                "UserData"  :  {  "Fn::Base64"  :  "80"  }            }        }    } }
  • 18.    "Outputs":  {        "InstallURL":  {            "Value":  {                "Fn::Join":  [                    "",                    [                        "http://",                        {                            "Fn::GetAtt":  [                                "ElasticLoadBalancer",                                "DNSName"                            ]                        },                        "/wp-­‐admin/install.php"                    ]                ]            },            "Description"  :  "Installation  URL  of  the  WordPress  website"        },        "WebsiteURL":  {            "Value":  {                "Fn::Join":  [                    "",                    [                        "http://",                        {                            "Fn::GetAtt":  [                                "ElasticLoadBalancer",                                "DNSName"  ]                        }                    ]                ]            }        }    }
  • 19. Confidential AWS CloudFormation Tips
  • 20. Tips テンプレートを再利用可能なモジュ ール分割(パラメータ、アウトプッ ト)してチェーン実行しよう 同じ役割のサーバーを複数作成する ならオートスケーリングで管理しよう (可用性の観点からも Good!)
  • 21. テンプレートのチェーン "Resources":  {   "CloudFormationStackVPCBasic"  :  {     "Type":  "AWS::CloudFormation::Stack",     "Properties":  {       "TemplateURL":  "https://s3-­‐ap-­‐northeast-­‐1.amazonaws.com/template.suz-­‐lab.com/template/suz-­‐lab_vpc-­‐ basic-­‐0.0.1.json", "TimeoutInMinutes":  "60"     }   },   "CloudFormationStackOnDemandNAT"  :  {     "Type":  "AWS::CloudFormation::Stack",     "Properties":  {       "TemplateURL"  :  "https://s3-­‐ap-­‐northeast-­‐1.amazonaws.com/template.suz-­‐lab.com/template/suz-­‐ lab_ondemand-­‐nat-­‐0.0.1.json",       "Parameters"  :  {         "KeyName":  {  "Ref":  "KeyName"  },         "ImageId":  {  "Ref":  "OnDemandNATImageId"  },         "InstanceType":  {  "Ref":  "OnDemandNATInstanceType"  },         "Name":  {  "Ref":  "OnDemandNATName"  },         "RouteTableId":  {  "Fn::GetAtt"  :  [  "CloudFormationStackVPCBasic",   "Outputs.RouteTableIdProtected"  ]  },         "SecurityGroupId":  {  "Fn::GetAtt"  :  [  "CloudFormationStackVPCBasic",   "Outputs.SecurityGroupIdCommon"  ]  },         "SubnetId":  {  "Fn::GetAtt"  :  [  "CloudFormationStackVPCBasic",  "Outputs.SubnetIdPublicVarA00"  ]  },         "VpcId":  {  "Fn::GetAtt"  :  [  "CloudFormationStackVPCBasic",  "Outputs.VpcIdBasic"  ]  }       }     }   } }, 親テンプレートの定義
  • 22. 同一レイヤーは Auto Scaling で "Resources":  {   "AutoScalingLaunchConfig"  :  {     "Type"  :  "AWS::AutoScaling::LaunchConfiguration",     "Properties"  :  {       "KeyName"                :  {  "Ref"  :  "KeyName"  },       "ImageId"                :  {  "Ref"  :  "ImageId"  },       "SecurityGroups"  :  {  "Ref"  :  "SecurityGroups"  },       "InstanceType"      :  {  "Ref"  :  "InstanceType"  }     }   },   "AutoScalingAutoScalingGroup"  :  {     "Type"  :  "AWS::AutoScaling::AutoScalingGroup",     "Properties"  :  {       "DesiredCapacity"                  :  {  "Ref"  :  "CapacitySize"  },       "LaunchConfigurationName"  :  {  "Ref"  :  "AutoScalingLaunchConfig"  },       "MaxSize"                                  :  {  "Ref"  :  "CapacitySize"  },       "MinSize"                                  :  {  "Ref"  :  "CapacitySize"  },       "AvailabilityZones"  :  [         {  "Fn::FindInMap"  :  [  "AzMap",  {  "Ref"  :  "AWS::Region"  },  "Az1"  ]  },         {  "Fn::FindInMap"  :  [  "AzMap",  {  "Ref"  :  "AWS::Region"  },  "Az2"  ]  }       ],     "Tags"  :  [       {  "Key"  :  "Name",  "Value"  :  {  "Ref"  :  "Name"  },  "PropagateAtLaunch"  :  true  }     ]     }   } }, Parameters
  • 23. AWSのみでクレジット決済の インフラを構築 →PCI DSS審査合格 AWSのみでクレジット決済の インフラを構築 →PCI DSS 審査合格
  • 24. AWSのみでクレジット決済の インフラを構築 →PCI DSS審査合格 PCI DSS 環境構築用 CFn テンプレート https://github.com/suz-lab/suz-lab-cloudformation/blob/ master/pattern/suz-lab_0302_admin_firewall.json
  • 25. PCI DSS要件 要件1: カード会員データを保護するために、ファイアウォールをインストールして構成を維持する 要件2: システムパスワードおよび他のセキュリティパラメータにベンダ提供のデフォルト値を使用しな い 要件3: 保存されるカード会員データを保護する 要件4: オープンな公共ネットワーク経由でカード会員データを伝送する場合、暗号化する 要件5: アンチウィルスソフトウェアまたはプログラムを使用し、定期的に更新する 要件6: 安全性の高いシステムとアプリケーションを開発し、保守する 要件7: カード会員データへのアクセスを、業務上必要な範囲内に制限する 要件8: コンピュータにアクセスできる各ユーザに一意の ID を割り当てる 要件9: カード会員データへの物理アクセスを制限する 要件10: ネットワークリソースおよびカード会員データへのすべてのアクセスを追跡および監視する 要件11: セキュリティシステムおよびプロセスを定期的にテストする 要件12: すべての担当者の情報セキュリティポリシーを整備する
  • 26. 脆弱性対策 ミドルウェア最新化 Apacheはパッケージでは不可だったため、最新版ソー スをコンパイル • IPA(独立行政法人 情報処理推進機構)の定めるCVSS 4.0以上(レベ ルIII危険+レベルII警告)はすべて対策必須のため
  • 27. まとめ データとシステムの保全方法は別々に考 える→システムの保全は CloudFormation+AMI で可能 「誰でも」「再現性の高い」インフラ の構築が可能 Bootstrap 処理を煩雑にしないため に、AMI化およびバージョン管理が重要
  • 28. アプリケーション管理サービス AWS CloudFormation テンプレートベースで柔軟な設定 AWS Elastic Beanstalk Webアプリケーション向け 障害の起きたEC2を自動復旧 ELBのURLを入替えて環境の切替が瞬時にできる AWS OpsWorks Chef(0.9)レシピベース RDS 未対応
  • 29. Thanks! http://www.cloudpack.jp/ suuport@cloudpack.jp @cloudpack_jp