26
株式会社エクストーン 下っ端 豊田陽一

Awsをちゃんと使ってみた

Embed Size (px)

Citation preview

Page 1: Awsをちゃんと使ってみた

株式会社エクストーン 下っ端 豊田陽一

Page 2: Awsをちゃんと使ってみた

 AWSでサービス作ってみた ◦ 構成 ◦ 各サービスについて   EC2   RDS   S3   ELB   Route 53

Page 3: Awsをちゃんと使ってみた

 Androidアプリケーションと通信するRuby on Railsサービス ◦ アプリケーションサーバ   Ruby on Rails (unicornで動作)   nginx ◦ データベースサーバ   MySQL ◦ タスクワーカー   Sidekiq (Resque互換)   Redis ◦ メールサーバ   Postfix ◦ ログ収集基盤   fluentd

Page 4: Awsをちゃんと使ってみた
Page 5: Awsをちゃんと使ってみた

 仮想サーバーを作る ◦ AMI (Amazon Machine Image)を選んで即座に起動可能  あらかじめ、WindowsだとかLinuxだとか、色々用意されている

  Ubuntuとかのコミュニティが提供しているAMIもある

 マーケットプレイスとかで有料のAMIも選べる  自分でカスタマイズしたAMIも選べる

Page 6: Awsをちゃんと使ってみた
Page 7: Awsをちゃんと使ってみた

 固定のグローバルIP ◦ EC2インスタンスに割り振る   EC2に割り振られるIPは再起動時に変わる   VPC(後述)の場合、そもそもグローバルIPが割り振られない

  1アカウント5個を超えると色々手続きが必要

Page 8: Awsをちゃんと使ってみた

 仮想的なプライベートネットワーク ◦ ローカルネットワークを作成可能   10.20.0.0/16みたいな  サブネットを作って、異なるAvailability Zoneを割り当てることが出来る

◦ 外部からの接続方法   Elastic IPを割り振る  同一ネットワーク内にある他のホストから入る   VPNで接続する

Page 9: Awsをちゃんと使ってみた

 注意点 ◦ 既存のVPC外にあるインスタンスをVPCの内部に移動することは出来ない   AMI化して新しくインスタンスを作ろう

Page 10: Awsをちゃんと使ってみた

 特定の通信の許可/不許可の設定 ◦ インスタンスをSecurity Groupに所属させる  特定のIP/ネットワーク  他のSecurity Group

Page 11: Awsをちゃんと使ってみた
Page 12: Awsをちゃんと使ってみた

 マシンイメージ ◦ EC2の管理画面から1クリックで作成可能

Page 13: Awsをちゃんと使ってみた

 ロードバランサ ◦ ELBにSSL証明書が設定可能   ELB配下のEC2インスタンスにSSL証明書をいちいち設定する必要がない

◦ ELB配下のインスタンスの生存監視  死んでたらELB配下から外す

Page 14: Awsをちゃんと使ってみた
Page 15: Awsをちゃんと使ってみた

 リレーショナルデータベース ◦ MySQL, Oracle, SQL Server ◦ Multi-AZ  異なるAvailability Zoneにホットスタンバイ  異常があると勝手に切り替わる ◦ Read-Replica  読み込み専用のスレーブサーバ

 クリック一回で作成できる  マスターサーバへの昇格もクリック一回

◦ バックアップ  時間・期間を指定したら勝手にやってくれる

Page 16: Awsをちゃんと使ってみた

 細かいMySQLのサーバー設定 ◦ DB Parameter Groupで設定 ◦ 今回はunique indexのサイズ上限を上げるのに使った   utf8mb4でvarchar(255)のuniqueインデックスが作成できない  以下を設定する   innodb_large_prefix: 1   innodb_file_format: Barracuda

Page 17: Awsをちゃんと使ってみた
Page 18: Awsをちゃんと使ってみた

 ファイル用ストレージ ◦ 早い ◦ 落ちない ◦ 安い

 bucket名は公開したいドメイン名で作成すること ◦  Image.example.comでS3を参照したい場合   bucket名にimage.example.comを指定

Page 19: Awsをちゃんと使ってみた

 DNSサービス ◦ 使いやすいインターフェイス ◦ AレコードにAlias拡張(後述)

Page 20: Awsをちゃんと使ってみた

 前提 ◦ EC2から送られるメールは一部の宛先からSPAM扱いされることがある   SpamhausがEC2のIP域をごっそりブラックリストに入れている

 やるべきこと ◦ Spamhausのホワイトリストに申請する ◦ メールサーバの逆引きが出来るようにする ◦ SPFの設定をする

Page 21: Awsをちゃんと使ってみた

 やったこと ◦ AWSに申し込めば大丈夫   https://aws-portal.amazon.com/gp/aws/html-forms-controller/contactus/ec2-email-limit-rdns-request

 上記フォームで申し込むと、逆引き設定とspamhausなどへのホワイトリスト申請まで全部やってくれる

◦ SPF設定は自分で書こう

Page 22: Awsをちゃんと使ってみた

 hogehoge.comといったドメイン名をELBに割り当てたい場合 ◦ ELBのグローバルIPは分からない ◦ FQDNが割り当てられる ◦ このFQDNをCNAMEで設定するととりあえず出来る   CNAMEで設定した名前は、他のType(AとかMXとか)で使えない

 簡単に言うと、MXでドメインが指定できなくなる

Page 23: Awsをちゃんと使ってみた

 A Aliasという拡張を利用する ◦ ELBのFQDNがAレコードに適用可能

Page 24: Awsをちゃんと使ってみた

 メンテナンスモード ◦ アプリケーションからリクエストを送ると、常にメンテナンス中を表すJSONファイルを返す ◦ ブラウザからリクエストを送ると、常にメンテナンス中を表すHTMLファイルを返す

Page 25: Awsをちゃんと使ってみた

 静的ファイルを返すEC2インスタンスを作成 ◦ 常にメンテナンス用JSON, HTMLを返す ◦ メンテナンス時はそのインスタンスを起動し、ELBでアプリケーションサーバと差し替えることで実現 ◦ このイメージをAMI化することで、メンテナンス時に常にインスタンスを作成する運用を行う

Page 26: Awsをちゃんと使ってみた

 AWSは昔ほど取っつきにくくない ◦ ほとんどの作業はwebで可能  Webで初期設定を全部済ませて、スクリプトで自動化するという運用がいいと思う

◦ 専用サービスはいろいろ便利   EC2使ったら負け   EC2以外の専用サービスで実現できる省力化にこそお金を払う価値があるのでは