Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Aws handson 20181108

238 vues

Publié le

AWS体験ハンズオン〜セキュア&スケーラブルウェブサービス構築

  • Soyez le premier à commenter

Aws handson 20181108

  1. 1. アマゾン ウェブ サービス ジャパン株式会社 AWS体験ハンズオン 〜 セキュア&スケーラブル ウェブサービス構築 〜
  2. 2. 2 はじめに https://bit.ly/2NLm6Di ID:Guest Pass:Cube@11999
  3. 3. 3 はじめに アマゾン ウェブ サービス(AWS)を利用して、セキュアでスケーラブルなウェブ サービスの構築手順を体験できるハンズオンを実施いたします。 AWSを使ってより安全にサービスを運用する方法、ウェブサービスの規模に合わせ て、柔軟にシステムを拡張する方法を体験できる内容です。 本ハンズオンのドキュメントで掲載されているスクリーンキャプチャは現在の画面とは異なる 場合がございます。予めご了承ください。 【準備事項】 AWSを利用可能なネットワークに接続されたPC(Windows, Mac OS, Linux等) 事前に用意していただいたAWSアカウント SSHクライアント(Windows環境ではTeratermを推奨) ブラウザ(FirefoxもしくはChromeを推奨)
  4. 4. AWSのセキュリティやスケーラビリティを 高める機能・サービス
  5. 5. 5 AWSのセキュリティを高める機能・サービス セキュリティグループ = ファイアウォール Amazon VPC = プライベートな仮想ネットワーク AWS IAM = AWSリソースへのアクセス権限の管理
  6. 6. 6 セキュリティグループ インターネットからのトラフィック(インバウンド)をブロックするだけで なく、EC2からのトラフィック(アウトバウンド)も制限できるファイア ウォール機能です。 セキュリティ グループ ポート 22 (SSH) ポート 80 (HTTP) EC2 インスタンス
  7. 7. 7 セキュリティグループ 個々のインスタンスごとに、インバウンド、アウトバウンドに対して下記 の許可ルールを定義できます。ルールはステートフルで扱われ、明示ルー ルが無い通信は拒否されます。 インバウンド • プロトコル (TCP/UDP/ICMP) • ポート範囲 (ポート番号の範囲) • 送信元 (アクセス元のIPアドレス) アウトバウンド • プロトコル (TCP/UDP/ICMP) • ポート範囲 (ポート番号の範囲) • 送信先 (アクセス先のIPアドレス)
  8. 8. 8 Amazon VPC (Virtual Private Cloud) クラウド内にお客様専用のプライベートアドレスの空間を構築 社内ネットワークとインターネットVPNやキャリアの閉域網で接続可能 AWSクラウド VPC イントラ インターネット プライベート サブネット 分離したNW 領域を作成 インターネット VPN接続 (IPSec) パブリック サブネット インターネット ゲートウェイ 仮想サーバ (EC2) DBサービス(RDS)専用線接続 Direct Connect
  9. 9. 9 VPCとサブネットについて 1つのVPCは、1つのネットワークアドレス(CIDR)で定義します。 1つのVPC内には複数のサブネットを作成することができます。 サブネットは特定のアベイラビリティゾーン内に配置します。 パブリック サブネット 10.0.1.0/24 VPC 10.0.0.0/16 Web サーバ Web サーバ パブリック サブネット 10.0.2.0/24 CIDR IPアドレス数 xxx.xxx.xxx.xxx /16 65,531 xxx.xxx.xxx.xxx /20 4,091 xxx.xxx.xxx.xxx /24 251 xxx.xxx.xxx.xxx /28 11 アベイラビリティゾーン-A アベイラビリティゾーン-B 各サブネットにおいて先頭の4IPアドレ スと最後の1IPアドレスはAWS側で確 保されます
  10. 10. 10 ルートテーブルについて 各サブネットはルートテーブルを持っています。 設定を変更することでデータの流れを制御可能です。 • パブリック サブネット に割り当てられたルートテーブル ルートテーブル: rtb-XXXXXXXX • プライベート サブネット ルートテーブル: rtb-XXXXXXXX 送信先 ターゲット 10.0.0.0/16 Local 0.0.0.0/0 igw-XXXXXXXX IGW (インターネット ゲートウェイ) へのルーティングがあるので、 外部とのアクセスが可能 送信先 ターゲット 10.0.0.0/16 Local
  11. 11. 11 ルートテーブルについて パブリック サブネット VPC 10.0.0.0/16 Web サーバ プライベート サブネット DB サーバ インターネット 送信先 ターゲット 10.0.0.0/16 Local 0.0.0.0/0 igw-xxxxx 送信先 ターゲット 10.0.0.0/16 Local インターネット ゲートウェイ (IGW) IGWにルーティング されていないので 外部と通信できない。
  12. 12. 12 VPCでのセキュリティーグループとNACL Instanceレベルで In/Outのアクセス 制御 Subnetレベルで In/Outのアクセス 制御 NACLは本日 は使いません
  13. 13. 13 NACL (Network Access Control List) 個々のSubnetごとにアクセス 制御が可能 Inbound, Outboundに対して下記の設定が可能 Inbound Port range(ポート番号) Source(アクセス元IPアドレス) Allow/Deny Outbound Port range(ポート番号) Destination(アクセス先IPアドレス) Allow/Deny 制御可能な項目は セキュリティーグループと同じ NACLは本日は使いません ステートフル(SG)かステート レス(NACL)かの違いがあり ます。
  14. 14. 14 AWS IAM (Identity and Access Management) AWS操作をよりセキュアに行うための認証・認可の仕組み AWS利用者の認証とアクセスポリシーを管理 • グループ、ユーザー、ロールで管理 • 実行出来る操作を IAM ポリシー規定 • ユーザーごとに認証情報の設定が可能 ⎼ マネージメントコンソールにはユーザ名とパスワードを使用 さらに、MFA(多要素認証)の利用が推奨 ⎼ APIにはアクセスキーとシークレットキーを使用
  15. 15. 15 IAMポリシーで必要最小限のみ付与 AWSアカウント (ルートアカウント) 全操作可能 IAMアカウント EC2 S3 IAM ポリシー管理者グループ 開発グループ 運用グループ S3参照 だけ S3は すべて 操作可能 全操作 可能
  16. 16. 16 備考:MFA(多要素認証)で認証の安全性を高める AWSアカウント(ルートアカウント) • ハードウェアトークンで保護 • トークンは金庫などで管理 IAMアカウント • 個人ごとのアカウント • 仮想MFA対応のスマホアプリで保護
  17. 17. ハンズオン
  18. 18. 18 ハンズオンのながれ WordPressサイトを最小構成でスタートする。 サーバ 1台構成 フェーズ 1 スケールできるアーキテクチャに移行する準備をする。 Web + DB(サーバ 2台構成) フェーズ 2 Webサーバがスケールできる構成を構築する。 LB + Web x2 + DB 構成 (サーバ 3台構成) フェーズ 3 DBサーバを冗長化された構成にする。 LB + Web x2 + DB x2 構成(サーバ 4台構成)オプション
  19. 19. 19 インターネット ユーザ アベイラビリティゾーン - C パブリックサブネット: 10.0.1.0/24 プライベートサブネット:10.0.3.0/24 10.0.0.0/16 アベイラビリティゾーン - A パブリックサブネット: 10.0.0.0/24 EC2 Word Press +MySQL プライベートサブネット:10.0.2.0/24 インター ネット ゲートウェイ 本フェーズでの作成範囲フェーズ 1
  20. 20. 20 インターネット ユーザ アベイラビリティゾーン - C パブリックサブネット: 10.0.1.0/24 プライベートサブネット:10.0.3.0/24 10.0.0.0/16 アベイラビリティゾーン - A パブリックサブネット: 10.0.0.0/24 プライベートサブネット:10.0.2.0/24 インター ネット ゲートウェイ フェーズ 2 EC2 Word Press +MySQL RDS MySQL 本フェーズでの 作成範囲
  21. 21. 21 インターネット ユーザ アベイラビリティゾーン - C パブリックサブネット: 10.0.1.0/24 プライベートサブネット:10.0.3.0/24 10.0.0.0/16 アベイラビリティゾーン - A パブリックサブネット: 10.0.0.0/24 プライベートサブネット:10.0.2.0/24 インター ネット ゲートウェイ フェーズ 3 EC2 Word Press +MySQL RDS MySQL EC2 Word Press ELB AMI 本フェーズでの作成範囲
  22. 22. 22 インターネット ユーザ アベイラビリティゾーン - C パブリックサブネット: 10.0.1.0/24 プライベートサブネット:10.0.3.0/24 10.0.0.0/16 アベイラビリティゾーン - A パブリックサブネット: 10.0.0.0/24 プライベートサブネット:10.0.2.0/24 インター ネット ゲートウェイ EC2 Word Press +MySQL RDS MySQL オプション EC2 Word Press AMI ELB RDS MySQL 本フェーズでの 作成範囲
  23. 23. 23 インターネット ユーザ アベイラビリティゾーン - C パブリックサブネット: 10.0.1.0/24 プライベートサブネット:10.0.3.0/24 10.0.0.0/16 アベイラビリティゾーン - A パブリックサブネット: 10.0.0.0/24 プライベートサブネット:10.0.2.0/24 インター ネット ゲートウェイ 最終 EC2 Word Press +MySQL EC2 Word Press ELB AMI RDS MySQL RDS MySQL
  24. 24. 25 【補足】無料利用枠(個人アカウントでご参加の方向け) ※IAMではなく、個人のアカウントでご参加されている方への補足 フェーズ 1〜3 のハンズオンは以下の無料利用枠の範囲で行います。ハンズオン終 了後に、作成したリソースを全て削除すると課金は発生しません。オプションにつ いてはわずかに課金が発生します。 <1年間、以下範囲が毎月無料> EC2:Windows/Linux/RedHatなど の t2.micro インスタンスを合計約 1ヶ月分 EBS:合計 30GB の General Purpose (SSD) と 1GB のスナップショットを合計約 1ヶ月分 RDS:MySQL/PostgreSQLなど を 20GB まで db.t2.micro インスタンスを合計約 1ヶ月分 (シングルAZ構成限定) ELB:合計約 1ヶ月分、15GB の処理 トラフィック:インターネットへのデータ送信 15GB
  25. 25. 26 始める前に スクリーンキャプチャに表示されている情報について • リソースの各種ID(vpc-XXXXXX、subnet-XXXXXX、i-XXXXXX など)はAWS全体で ユニークとなっており、スクリーンキャプチャに記載のIDと実際に操作されて作成され るIDは各自で異なります。 • Elastic IP(固定IPアドレス)なども各自で異なります。 • 画面のデザイン等が変更されて実際とは異なっていることがあります。画面の項目名等 から判断して操作下さい。 コマンドライン • コマンドライン文をPDFからコピー&ペーストすると不要な文字が含まれてしまう事が多 いため、ご注意ください
  26. 26. ハンズオン フェーズ1:サーバ 1台構成
  27. 27. 28 インターネット ユーザ アベイラビリティゾーン - C パブリックサブネット: 10.0.1.0/24 プライベートサブネット:10.0.3.0/24 10.0.0.0/16 アベイラビリティゾーン - A パブリックサブネット: 10.0.0.0/24 EC2 Word Press +MySQL プライベートサブネット:10.0.2.0/24 インター ネット ゲートウェイ 本フェーズでの作成範囲フェーズ 1
  28. 28. 29 フェーズ1:サーバ 1台構成 最小構成で最も低コストですが、拡張性が低く、性能を一定以上上げるこ とができません。 拡張性:低 • 拡張するには1台のインスタンスタイプを大きくします。 冗長性:低 • インスタンスが動作している物理サーバが壊れると一旦停止になりま すが、同じアベイラビリティゾーン内の問題の無いサーバですぐ起動 できます。
  29. 29. ハンズオン フェーズ1 – VPCを作成
  30. 30. 31 AWSマネージメントコンソールへのログイン ログイン方法は利用するアカウント種類によって異なります IAMアカウントを御利用の場合(通常はこちらです) • 会社等で、IAMアカウントを本ハンズオン用に準備されているケース • 事前にログイン情報が記載されたcsvファイル(user1.csv等)を確認してください • そのファイルに、ログイン用のURL、User Name、パスワードが記載されていますので、 それに従ってログイン AWSのルートアカウント(個人アカウント)を御利用の場合 • https://console.aws.amazon.com にブラウザでアクセス • アカウントのEメールアドレスとパスワードでログイン
  31. 31. 32 AWSマネージメントコンソールにログインする [ホームに戻る] ボタン AWSの各サービス
  32. 32. 33 リージョンを変更する(シンガポール) 2. [アジアパシフィック (シンガポール)] を選択 1. リージョン選択をクリック
  33. 33. 34 リージョンを変更する(シドニー) 2. [アジアパシフィック (シドニー)] を選択 1. リージョン選択をクリック
  34. 34. 35 リージョンを変更する(東京) 2. [アジアパシフィック (東京)] を選択 1. リージョン選択をクリック
  35. 35. 36 VPC管理ページを開く 1. [サービス] をクリック 2. [VPC] をクリック
  36. 36. 37 VPCの作成ウィザードを開始する 1. [VPC ウィザードの起動] をクリック
  37. 37. 38 VPC作成ウィザード – Step 1 1. [1つのパブリックサブネットを持つVPC] をクリック 2. [選択] をクリック
  38. 38. 39 VPC作成ウィザード – Step 2 4. 東京 [ap-northeast-1a] であることを確認 6. [VPC の作成] をクリック 2. handson-ユーザ名と入力。例)[handson-user1] 3. [10.0.0.0/24] であることを確認 1. [10.0.0.0/16] であることを確認 IAMユーザを利用している場合は同じ アカウント内で名前が被らないように ユーザ名を付ける等してくださ -1a 5.サブネット名を[パブリックサブネット-1a]を入力
  39. 39. 40 VPCが作成された 1. [OK]をクリック
  40. 40. 41 表示されるVPCをフィルタリング設定 1. 画面左上の「VPCでフィルタリング」のプルダ ウンメニューから自分のVPCを選択してください (他ユーザのVPCと間違わないように注意) 操作するVPCをフィルタリングしておく事で、他のVPCを操作する 間違いを防ぐことが出来ます
  41. 41. 42 作成されたVPCの確認 1. [VPC] をクリック 2. 先ほど作成したVPCが存在 するか(正しく絞り込めている か)を確認 3. [10.0.0.0/16] であることを確認
  42. 42. 43 ウィザードで作成されたサブネットを確認 VPC作成ウィザードでは、VPC自体と一緒に1つ目のサブネットも作成されます。 1. [サブネット] をクリック 3. [10.0.0.0/24] であることを確認 4. [ap-northeast-1a] であることを確認 2. サブネットを選択
  43. 43. 44 作成されたサブネットのRoute Tableを確認 VPCのネットワークアドレス 10.0.0.0/16 のターゲットが local に、 デフォルトルートの 0.0.0.0/0 のターゲットがインターネットゲートウェイ (igw-XXXX) になっており、インターネットと通信できる設定になっています。 1. [ルートテーブル] をクリック 2. 内容を確認 igw-XXXXXXXX
  44. 44. ハンズオン フェーズ1 – サブネットを追加作成
  45. 45. 46 サブネットを3つ追加作成 2つ目以降のサブネットを順次作成します。合計3つを追加作成します。 1. [サブネットの作成] をクリック 名前タグ VPC アベイラビリティ ゾーン CIDR ブロック 2つ目 パブリック サブネット-1c ご自身のVPC を選択してく ださい。 ap-northeast-1c 10.0.1.0/24 3つ目 プライベート サブネット-1a ap-northeast-1a 10.0.2.0/24 4つ目 プライベート サブネット-1c ap-northeast-1c 10.0.3.0/24 2. 上記表の通り入力。VPC名は 自分のものを選択してください 3. [はい、作成する] をクリック ※自分のVPCを選択 してください ※AZは各リージョンごとにことなるので読み 替えてください
  46. 46. 47 全てのサブネットを確認 ウィザードで作成したサブネットと追加したサブネットを確認します。 • ※CIDR列でソートすると見やすくなります シンガポール[ap-southeast-1a,b] シドニー [ap-southeast-2a, b] -1a -1c -1a -1c
  47. 47. 48 パブリックサブネットのルートテーブルを変更 追加した2つ目のサブネット [10.0.1.0] を実際にインターネットと通信できるように、 ルートテーブルの割り当てを変更します。(変更するサブネットは2つ目のみです) 1. [10.0.1.0/24] のサブネットをクリック 2. [ルートテーブル] をクリック 3. [編集] を クリック -1a -1c -1a -1c
  48. 48. 49 パブリックサブネットのルートテーブルを変更 1. これまでと異なるものを選択(※この VPCにはルートテーブルが2つしかありません) 2. [0.0.0.0/0] が表示されていることを確認 3. [保存] をクリック -1a -1c -1a -1c
  49. 49. 50 10.0.0.0/24のサブネットIDをメモ 10.0.0.0/24に後ほどインスタンスを作成するので、このSubnetIDをメモしてお いてください • ※CIDR列でソートすると見やすくなります パブリックサブネット-1a パブリックサブネット-1c プライベートサブネット-1a プライベートサブネット-1c などと名前付するとわかりやすいです。 (鉛筆マークをクリックすると編集できます) このIDをメモしておいてください。 -1a -1c -1a -1c
  50. 50. ハンズオン フェーズ1 – EC2インスタンスの作成
  51. 51. 52 EC2管理ページを開く 1. [サービス] をクリック 2. [EC2] をクリック
  52. 52. 53 EC2インスタンスの作成 Webサーバの作成を行います。 1. [インスタンスの作成] をクリック
  53. 53. 54 EC2インスタンスの作成 – ステップ 1 コミュニティAMIを選び、右記のAMI-IDを検索して選択します。。 3. Handson ami image の [選択] をクリック 東京 [ami-d70722b0] シンガポール [ami-1b308c78] シドニー [ami-982926fb] 2. 右上の該当AMI-IDを検索する 1. コミュニティAMIをクリック ami-d70722b0
  54. 54. 55 EC2インスタンスの作成 – ステップ 2 無償利用枠の [t2.micro] を利用します。 1. [t2.micro] をクリック 2. [次の手順] をクリック
  55. 55. 56 EC2インスタンスの作成 – ステップ 3 インスタンスの詳細設定を行います。VPCを選択するところでは、自分のVPCを選択して ください。 1. 自分のVPCを選択 2. [10.0.0.0/24 | パブリック サブネット]を選択 3. [有効化] を選択 画面下に続きます どちらのパブリックサブネットが 10.0.0.0/24か、わからない場 合は、右クリックで新しいタブ (別ウィンドウ)でVPC-> サブ ネットを開き、subnet idを 確認する 先ほどメモした 10.0.0.0/24のサブネットIDを 選択します。
  56. 56. 57 EC2インスタンスの作成 – ステップ 4 起動時に実行するスクリプトを定義 高度な詳細 をクリック Wordpressがインストールされるディレクトリの権限を設定 #!/bin/bash chown apache:apache /var/www/html/ 次の手順:ストレージの追加をクリック
  57. 57. 58 EC2インスタンスの作成 – ステップ 5 ストレージは変更せずに、次に進みます。 1. [次の手順] をクリック
  58. 58. 59 EC2インスタンスの作成 – ステップ 6 インスタンスを区別できるようにタグに名前を設定します。 IAMユーザを利用している場合、他ユーザと区別が付くように-user1等ユーザ名を付ける よにしてください 4. [次の手順] をクリック 3. webserver#1-ユーザ名等として、インスタンスへのタグ 付を行い、他ユーザと被らないようにしてください。 例)[webserver#1-user1]と入力 2. Nameを入力 1. (Nameキーのタグ入 力画面になっていない場 合)タグの追加をクリック
  59. 59. 60 EC2インスタンスの作成 – ステップ 7 (1/2) セキュリティグループ(ファイアウォール)を設定します。 1. [新しいセキュリティグループを作成する] を選択 2. セキュリティグループ名はweb-ユーザ 名としてください。説明にも同じ値を入力 します。例)[web-user1] 4. [ルールの追加] をクリック 3. 送信元を[任意の場所]に変更
  60. 60. 61 EC2インスタンスの作成 – ステップ 7 (2/2) 1. [HTTP] を選択 2. [任意の場所] を選択 3. [確認と作成] をクリック
  61. 61. 62 EC2インスタンスの作成 – ステップ 8 画面を下にスクロールさせて設定内容を確認してから作成します。 1. [作成] をクリック
  62. 62. 63 キーペアを作成する キーペアを作成してEC2に関連付けます 通常はhandson-key-userという名前でキーペアを作成しましょう。 2. handson-key-user と入力 3. ダウンロードする (※この鍵:例ではhandson-key-user.pemを持っていない とEC2にログインできません) 1. [新しいキーペア の」作成」を選択 4. [インスタンスの 作成]をクリック
  63. 63. 64 補足:キーペアについて 本ハンズオンでは前ページの画面で新規に作成したキーペアを使用しているが、 事前に登録しておいたキーペア(公開鍵と暗号鍵のペア)を使用することも可能 です。
  64. 64. 65 (すでにキーペアをお持ちの場合)キーペアを選択する ハンズオン用に準備されたキーペアを選択してEC2に関連付けます 通常はec2handsonという名前でキーペアが用意されています 2.事前に用意されている [ec2handson]を選択 3. チェックを入れる(※この鍵:例ではec2handson.pem を持っていないとEC2にログインできません) 1. [既存のキーペア の選択」を選択 4. [インスタンスの 作成]をクリック
  65. 65. 66 EC2インスタンスの作成 EC2インスタンスが作成されました。 1. [インスタンスの表示] をクリック
  66. 66. 67 作成したEC2インスタンスを確認 EC2インスタンス一覧の画面では、他ユーザのEC2インスタンスも見られるため、まずユーザ 名等で絞込を行うと便利です。インスタンス作成完了には数分かかります。 作成中 作成完了 1.ここにユーザ名を入れてリターンを 押すことで表示を絞り込めます
  67. 67. ハンズオン フェーズ1 – Elastic IPの割り当て
  68. 68. 69 Elastic IP (EIP) を取得 インスタンスを停止/開始した後も、同じIPアドレスが使用できるよう、固定IPアドレスで あるElastic IPを取得します。 1. [Elastic IP] をクリック 2. [新しいアドレスの割当] をクリック
  69. 69. 70 Elastic IP (EIP) を取得 1. [割り当て]をクリック 2. [IPアドレス]をクリックします。こうすることで 次の画面でIPアドレスが絞りこまれた状態で表示さ れます (「閉じる」を押しても問題ありません。その場合 は次ページの画面で自分のIPアドレスを間違わない ように選択してください) → 「関連付ける」を押すとEIPが取得できます。IPアドレスを確認し、メモしておいてください。
  70. 70. 71 Elastic IP (EIP) をインスタンスに紐付け 前ページで確保したEIPをどのEC2インスタンスで使用したいか指定します。自分のEIPを 確認してから進めてしてください。 1. 前ページで取得した自分のIPアドレスが表 示されている事を確認の上、選択 2. [アドレスの関連付け] をクリック
  71. 71. 72 Elastic IP (EIP) をインスタンスに紐付け 1. クリックすると候補が表示さ れますuser1等と自分のユーザ名 を入れることで自分のインスタン スを選択してください。例) [webserber#1-user1]等 2. [関連付ける]をクリック 取得したEIPをEC2インスタンスに紐付けます。自分のEC2インスタンスを選択してください。 user1
  72. 72. 73 Elastic IP (EIP) をインスタンスに紐付け 紐付けされたEC2インスタンスとEIPを確認します。EIPは後で使用します。 1. 正しく自分のインスタンスに 紐付けられたかを確認 2. EIPを再確認(メモ)
  73. 73. ハンズオン フェーズ1 – WordPressの構成
  74. 74. 75 EC2インスタンスへSSHでログイン 必要なもの • インスタンス作成時に指定したキーペアの秘密鍵ファイル (handson-key-userxx.pem) • インスタンスに割当てたElastic IPアドレス(前章でのメモ) SSHログイン方法 (具体的な操作方法は次ページより説明しています) • 接続先ホスト:インスタンスに割当てたElastic IP (EIP) アドレス • ログインユーザ名: ec2-user • 接続方法:公開鍵暗号方式(秘密鍵ファイルを指定)
  75. 75. 76 Windowsから:インスタンスへSSHでログイン Windowsからログインする場合 • TeraTerm (ttssh.exe) を起動 http://sourceforge.jp/projects/ttssh2/ • 1.接続するインスタンスのElastic IPを入力 • 2.SSH2を指定 • 3.「OK」をクリック • 4.この画面が出たら「続行」をクリック → 1 2 3 4 EIP
  76. 76. 77 Windowsから:インスタンスへSSHでログイン • ユーザ名: ec2-user • 「RSA/DSA/ECDSA/ED25519鍵を使う」を選択 • 秘密鍵ファイル(handson-key-userXX.pem)を選択して接続 →→ 1 2 3 5 6 7 4. すべてのファイル(*.*)を選択する (選択しないと鍵が表示されない) 補足)この認証画面で時間が掛かりすぎた場合、タイムアウト により「OK」をクリックしても繋がらない場合があります。その 場合は再度Teratermを起動してやり直してください。
  77. 77. 78 Mac/Linuxから:EC2インスタンスへSSHでログイン Mac/Linuxからログインする場合 • ターミナルからコマンドラインでログイン (事前に秘密鍵(pemファイル)のパーミッ ションを600にしないと接続出来ません) $ chmod 600 ~/Downloads/handson-key-userXX.pem $ ssh -i ~/Downloads/handson-key-userXX.pem ec2-user@割当てたElastic IPアドレス
  78. 78. 79 MySQLとNginxが動いていることを確認 $ Last login: Thu Mar 30 10:14:29 2017 from 54-240-199-105.amazon.com __| __|_ ) _| ( / Amazon Linux AMI ___|¥___|___| https://aws.amazon.com/amazon-linux-ami/2016.09-release-notes/ 15 package(s) needed for security, out of 27 available Run "sudo yum update" to apply all updates. [ec2-user@ip-10-0-0-101 ~]$ [ec2-user@ip-10-0-0-101 ~]$ [ec2-user@ip-10-0-0-101 ~]$ sudo service mysqld status mysqld (pid 2687) is running... [ec2-user@ip-10-0-0-101 ~]$ sudo service nginx status nginx (pid 2785) is running... [ec2-user@ip-10-0-0-101 ~]$
  79. 79. 80 SSHログインがうまくいかない場合 インスタンスは完全に起動完了しているか? 起動時に指定した内容どおりに起動しているか? 接続先のIPアドレス あるいは ホスト名は正しいか? 指定したSecurity Groupは 22(SSH) や 3389 (RDP) を有効にしているか? 指定したKey Pairと対応する鍵ファイルを指定しているか? 秘密鍵ファイルのパーミッションは600になっているか?(Mac/Linuxから)
  80. 80. 81 WordPressの初期設定 http://<Elastic IPアドレス>/ を開いて、WordPressの初期設定を始めます。 2. [続ける]をクリック 1. [日本語]をクリック
  81. 81. 82 WordPressの初期設定 1. [さあ、はじめましょう!]をクリック
  82. 82. 83 WordPressの初期設定 作成したMySQLのDB設定に基づき、設定します。 1. [admin]と入力 wordpress 2. 指定したDB接続用 パスワード(wordpress)を入力 3. [送信]をクリック
  83. 83. 84 WordPressの初期設定 1. [インストール実行] をクリック
  84. 84. 85 WordPressの初期設定 1. ブログのタイトルを入力(任意のタイトル) WordPressのブログを設定します。 4.メールアドレスを入力 3. ブログの管理者パスワードが自動的 に作成されるのでこれをメモしておいて ください。 (もしくは任意のパスワードに変更も可 能ですが、脆弱なパスワードは危険を伴 います) 脆弱を承知で、「wordpress」 6. [WordPress をインストール] をクリック abc@example.com 2. 管理者ユーザ名を入力 5.チェックを付ける
  85. 85. 86 WordPressの初期設定 1. [ログイン] をクリック
  86. 86. 87 WordPressの初期設定 3. [ログイン] をクリック 先ほど入力したユーザ名とパスワードを入力します。 1. ブログの管理者ユーザ名を入力 2. ブログの管理者パスワードを入力
  87. 87. 88 WordPressの初期設定 WordPressの管理者画面が表示されます。 1.「投稿」を押して任意の新規ブロクポストを書くことができます 2. ブログタイトルをクリックするとブログが表示できます(次ページ) 1. 「投稿」で投 稿が可能です 2.タイトルをク リックするとブロ グが表示
  88. 88. 89 ブログの起動確認 Wordpressブログが実行できていることを確認します(nginxの画面が出る場合はリロードし てみてください)前ページの管理画面に戻るには http://EIPアドレス/wp-admin/ にアク セスします
  89. 89. ハンズオン フェーズ2:Web + DB (サーバ 2台構成)
  90. 90. 91 Amazon RDS (Relational Database Service) AWSにて運用管理されるマネージドRDBMSサービス MySQL、Oracle、SQL Server、PostgreSQL、MariaDB、Aurora バックアップやフェイルオーバーに対応したDBを数クリックで利用可能 メンテナンスフリー(自動バックアップ、パッチ当て自動等) 自動 バックアップ 手動スナップ ショット パッチ更新 AZ-b スタンバイ AZ-a マスタ リード レプリカ 同期データコピー& 自動フェイルオーバー 非同期 データコピー
  91. 91. 92 インターネット ユーザ アベイラビリティゾーン - C パブリックサブネット: 10.0.1.0/24 プライベートサブネット:10.0.3.0/24 10.0.0.0/16 アベイラビリティゾーン - A パブリックサブネット: 10.0.0.0/24 プライベートサブネット:10.0.2.0/24 インター ネット ゲートウェイ フェーズ 2 EC2 Word Press +MySQL RDS MySQL 本フェーズでの 作成範囲
  92. 92. 93 フェーズ2:Web + DB(サーバ 2台構成) 拡張性が少し高くなり、DBの運用が楽になります。 拡張性:中 • 拡張方法はフェーズ1と変わらず、インスタンスタイプを大きくしま す。 • 2台構成のため、フェーズ1よりも最大構成で対応できる規模が大きく なります。 冗長性:低 • フェーズ1と変わりません。
  93. 93. ハンズオン フェーズ2 – RDSセキュリティグループを作成
  94. 94. 95 DB用のセキュリティグループ DBへのアクセスを許可するソースには、IPアドレスではなくWebサーバ用のセ キュリティグループを指定します。 こうする事でDBはWebサーバからのアクセスのみ許可されます 22,80 OK EC2 Word Press RDS MySQL セキュリティグループ: db-user1 3306 db-user1 3306: web-user1 web-user1 22: 0.0.0.0/0 80: 0.0.0.0/0 セキュリティグループ: web-user1
  95. 95. 96 DB用セキュリティグループを作成 1. [セキュリティグループ] をクリック 2. [セキュリティグループの作成] をクリックする
  96. 96. 97 DB用セキュリティグループを作成 1. db-ユーザ名と入力:例)[db-user1] 2. [RDS for MySQL]など説明を入力 3. 自分のVPCを選択してください: 例)[hadson-user1]を選択 4. [ルールの追加] をクリック
  97. 97. 98 DB用セキュリティグループを作成 1. [MySQL/Aurora]を選択 2. [カスタム] を選択 3. [sg-id]と入力し候補 を表示させる 4. 候補をクリック 5. [作成] をクリック
  98. 98. ハンズオン フェーズ2 – DBサブネットグループを作成
  99. 99. 100 RDS管理ページを開く 1. [サービス] をクリック 2. [RDS]をクリック
  100. 100. 101 DBサブネットグループを作成 プライベートサブネット内にDB サブネットグループを作成します。 1. [サブネットグループ] をクリック 2. [DB サブネットグループの作成] をクリック
  101. 101. 102 DBサブネットグループを作成 ap-northeast-1aのプライベートサブネット (10.0.2.0/24)を追加します。 1. db subnet ユーザ名を入力: 例)db subnet user1 2. [RDS for MySQL] などと入力 3. 自分のVPCを選択: 例)[handson-user1] 4. [ap-northeast-1a] を選択 5. [10.0.2.0/24] を選択 6. [追加] をクリック
  102. 102. 103 DBサブネットグループを作成 (1/2) 続けて、ap-northeast-1cのプライベートサブネット(10.0.3.0/24)を追加します。 1. [ap-northeast-1c]を選択 2. [10.0.3.0/24]を選択 3. [追加] をクリック
  103. 103. 104 DBサブネットグループを作成 (2/2) 2. [作成] を クリック 1. 異なるアベイラビリティゾーンにある 2つのプライベートサブネットが追加されたことを確認 シンガポール[ap-southeast-1a, b] シドニー [ap-southeast-2a, b]
  104. 104. 105 DBサブネットグループを作成 DBサブネットグループが作成されました。表示には少し時間が掛かる場合があります。自分のサブネッ トグループが表示されていない場合は、このボタンを押してください。
  105. 105. ハンズオン フェーズ2 – RDSインスタンスを作成
  106. 106. 107 RDSインスタンスを作成 1. [インスタンス] をクリック 2. [DB インスアンスの起動] をクリック
  107. 107. 108 RDSインスタンスを作成 – ステップ 1 1. [MySQL] を選択 2. [選択] をクリック
  108. 108. 109 RDSインスタンスを作成 – ステップ 2 開発/テストを選択します。 1. [開発/テスト]を選択 2. [次へ] をクリック
  109. 109. 110 RDSインスタンスを作成 –ステップ 3 (1/2) 1. [db.t2.micro]を選択 2. [いいえ] を選択 マルチAZ配置は「いいえ」を選択して、シングルのRDS構成にします 20 新しいものがある場合 デフォルトを選択
  110. 110. 111 RDSインスタンスを作成 –ステップ 3 (2/2) 1. wp-ユーザ名と入力:例)[wp-user1] 2. [admin]と入力 3. adminのパスワードを入力 5. [次へ]をクリック 4. 再度パスワードを入力 パスワードは、フェーズ1のEC2上でadminユーザに付けたものと同 じものを指定します 例「wordpress」
  111. 111. 112 RDSインスタンスを作成 –ステップ 4 (1/3) 1. 自分のVPCを選択します。例)[handson-user1] 2. 自動的にRDSサブネットグループが選択されます 4. [ap-northeast-1a] を選択 5. db-ユーザ名を選択(例[db-user1]) 3. [いいえ]を選択 シンガポール[ap-southeast-1a] シドニー [ap-southeast-2a] 既存のセキュリティグループを選択
  112. 112. 113 RDSインスタンスを作成 –ステップ 4 (2/3) 1. [wordpress]と入力
  113. 113. 114 RDSインスタンスを作成 –ステップ 4 (3/3) 1. [0]を選択 2. [DB インスタンスの作成]を選択
  114. 114. 115 RDSインスタンスを作成 RDSインスタンスが作成されました。 1. [DB インスタンスの詳細の表示] をクリック
  115. 115. 116 休憩タイム インスタンスの作成が完了するのを待ちます ステータスが「利用可能」になるまで数分かかります
  116. 116. 117 作成したRDSインスタンスを確認 インスタンスの作成が完了するのを待ちます。 ステータスが「利用可能」になるまで数分かかります。
  117. 117. 118 作成したRDSインスタンスを確認 1. 自分のRDSインスタンスをクリックする(他ユー ザのRDSと間違えないように注意)
  118. 118. 119 作成したRDSインスタンスを確認 RDSの各インスタンスにはエンドポイント(Endpoint)と呼ばれるホスト名が設定さ れます。エンドポイントのホスト名部分をメモします。ホスト名には「:3306」の部 分は含めません。 1.メモする
  119. 119. 120 作成したRDSインスタンスへの接続確認 WebサーバのEC2インスタンスから、RDSに接続できることを確認 $ mysql -u admin -p -h メモしたRDS Endpointのホスト名部分 Enter password: 指定したRDSの管理者パスワード mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | innodb | | mysql | | performance_schema | | sys | | wordpress | <-wordpress Databaseがある事を確認 +--------------------+ 6 rows in set (0.00 sec) mysql> exit :3306はつけない
  120. 120. ハンズオン フェーズ2 – MySQLのデータを移行
  121. 121. 122 MySQLのデータをエクスポート EC2インスタンス上にインストールされているMySQLからデータをエクスポート EC2インスタンス上のMySQLは今後使わないため停止 $ mysqldump -u root -p wordpress > export.sql Enter password: 指定したMySQLの管理者パスワード $ sudo service mysqld stop $ sudo chkconfig --level 345 mysqld off 補足)この作業でEC2上にあるMySQLからデータを取り出し、 export.sqlとして保存しています
  122. 122. 123 MySQLのデータをインポート エクスポートしたデータ(export.sql)をRDSのインスタンスにインポート インポートされたことを確認 $ mysql -u admin -p -h メモしたRDS Endpointのホスト名部分 wordpress < export.sql Enter password: 指定したRDSの管理者パスワード $ mysql -u admin -p -h メモしたRDS Endpointのホスト名部分 wordpress Enter password: 指定したRDSの管理者パスワード mysql> show tables; (wp_から始まるテーブルが複数表示されます) mysql> exit :3306はつけない
  123. 123. ハンズオン フェーズ2 – WordPressのDB接続設定
  124. 124. 125 WordPressのDB接続設定を削除 再設定をWebから行うため、DB接続設定を初期化します。 設定ファイル(wp-config.php)をホームディレクトリに移動させます。こうする ことで/var/www/htmlから設定ファイルが消え、設定が初期化されます。 $ sudo mv /var/www/html/wp-config.php ~/
  125. 125. 126 WordPressの再設定 http://<Elastic IPアドレス>/ を開いて、WordPressの初期設定を始めます。 2. [続ける] をクリック 1. [日本語] をクリック
  126. 126. 127 WordPressの再設定 1. [さあ、はじめましょう!] をクリック
  127. 127. 128 WordPressの再設定 作成したRDSのDB設定に基づき、設定します。フェーズ1との違いはデータベースのホス ト名でRDSを指定している部分です。 1. [admin] と入力 2. 指定したRDSの 管理者パスワードを入力 4. [送信] をクリック 3. メモしたRDS Endpointの ホスト名部分を入力 ********* :3306はつけない
  128. 128. 129 WordPressの再設定 1. [インストール実行] をクリック
  129. 129. 130 WordPressの再設定 1. [ログイン] をクリック この画面が出るので正しい状態です。(RDS上にはすでにデータが入っているため)
  130. 130. 131 WordPressの再設定 フェーズ1で設定したブログのユーザ名とパスワードを入力します。 3. [ログイン]をクリック 1. ブログの管理者ユーザ名を入力 2. ブログの管理者パスワードを入力
  131. 131. 132 WordPressの再設定 WordPressの管理者画面が表示されます。データベースをRDSに切り替えてもフェーズ1 と同様にWordPressが動いていることを確認してください。
  132. 132. ハンズオン フェーズ3:LB + Web x2 + DB 構成 (サーバ 3台構成)
  133. 133. 134 インターネット ユーザ アベイラビリティゾーン - C パブリックサブネット: 10.0.1.0/24 プライベートサブネット:10.0.3.0/24 10.0.0.0/16 アベイラビリティゾーン - A パブリックサブネット: 10.0.0.0/24 プライベートサブネット:10.0.2.0/24 インター ネット ゲートウェイ フェーズ 3 EC2 Word Press +MySQL RDS MySQL EC2 Word Press ELB AMI 本フェーズでの作成範囲
  134. 134. 135 フェーズ3:LB + Web x2 + DB 構成 (サーバ 3台構成) 拡張性:高 • 本構成ではWebサーバを自由に増減でき、拡張性が高い構成です。 • DBサーバについては変更がなく、1台ですのでインスタンスタイプを 大きくして拡張することになります。 冗長性:低 • Webサーバが複数台あり、ロードバランサ (ELB) が停止したWebサー バにはアクセスを振り分けなくなるため冗長性が高まります。 • DBサーバはフェーズ1・2と同じく1台構成のため、あまり冗長性は 高くありません。
  135. 135. ハンズオン フェーズ3 – WebサーバのAMIを作成
  136. 136. 137 EC2管理ページを開く 1. [サービス] をクリック 2. [EC2] をクリック
  137. 137. 138 WebサーバのAMIを作成 既存のwebserverを元にAMIを作成します。このAMIにはWordpressのインストールや RDSへの接続情報が含まれています。また、最初のMySQLが起動されないものになってい ます。 1. [インスタンス] をクリック 3. [イメージ] - [イメージの作成] をクリック 2. webserver#1-ユーザ名 を右クリック ※他のユーザのインスタンス をクリックしないように注意
  138. 138. 139 WebサーバのAMIを作成 1. “wordpress ユーザ名”など 他の人と区別が付くような名前を入力 例)[wordpress user1]と入力 2. [イメージの作成] をクリック
  139. 139. 140 WebサーバのAMIを作成 1. [保留中のイメージの表示]をクリックするこ とで、次の画面で自分のAMIの状況だけが絞り こまれて表示されます
  140. 140. 141 休憩タイム AMIの画面でAMI作成を待ちます。 完了するまで数分かかります。
  141. 141. 142 WebサーバのAMIを作成 AMIの画面でAMI作成を待ちます。完了するまで数分かかります。 作成中 作成完了 他のユーザのAMIも表示されている場合はここ にユーザ名等を入れて絞り込む事が可能です
  142. 142. ハンズオン フェーズ3 – 2個目のEC2インスタンスを作成
  143. 143. 144 2個目のEC2インスタンスを起動 作成したAMIからインスタンスを作成します。 1. 自分のAMIを右クリック (例:[wordpress user1]) 2. [作成] をクリック
  144. 144. 145 2個目のEC2インスタンス作成 – ステップ 2 無償利用枠の [t2.micro] を利用します。 1. [t2.micro]をクリック 2. [次の手順] をクリック
  145. 145. 146 2個目のEC2インスタンス作成 – ステップ 3 インスタンスは1個目と異なるアベイラビリティゾーンに作成します。VPCとサブネットの 選択に注意してください。 1. 自分のVPCを選択 例)[handson-user1] を選択 2. [10.0.1.0/24 | パブリックサブネットc] を選 択3. [有効化] を選択 4. [次の手順] をクリック
  146. 146. 147 2個目のEC2インスタンス作成 – ステップ 4 ストレージは変更せずに、次に進みます。 1. [次の手順] をクリック
  147. 147. 148 2個目のEC2インスタンス作成 – ステップ 5 インスタンスを区別できるようにタグに名前を設定します。 2. [次の手順] をクリック 1. webserber#2-ユーザ名 を入力 例)[webserver#2-user1]
  148. 148. 149 2個目のEC2インスタンス作成 – ステップ 6 既に作ったセキュリティグループを使用します。 1. [既存のセキュリティグループを選択する] を選択 2. フェーズ1で作成したセキュリティグルー プ(web-user1等)をクリック 3. [確認と作成] をクリック
  149. 149. 150 2個目のEC2インスタンス作成 – ステップ 7 設定内容を確認してから作成します。 1. [作成] をクリック
  150. 150. 151 キーペアを指定する 2. [handson-key- userXX] を選択 4. [インスタンスの作成] をクリック 1. [既存のキーペア の選択]を選択 3. オンにする
  151. 151. 152 2個目のEC2インスタンス作成 EC2インスタンスが作成されました。 1. [インスタンスの表示] をクリック
  152. 152. 153 作成した2個目のEC2インスタンスを確認 インスタンスの作成が完了するのに数分間かかります。 他ユーザのインスタンスが表示されている場合はここにユーザ名を入れて絞り込んでください 作成中 作成完了 webserver#2-ユーザ名 2つの異なるアベイラビリティ ゾーンにEC2が作成されている
  153. 153. ハンズオン フェーズ3 – ELBを作成
  154. 154. 155 ELBのセキュリティグループ 以下のようにWebサーバのフロントにELBを作成します。 ELB用のセキュリティグループは任意のIPアドレスから80番ポートへのアクセス を受け付けるように登録します。 80 OK EC2 Word Press RDS MySQL SecurityGroup: db-user1 EC2 Word Press db-user1 3306: Web web-user1 22: 0.0.0.0/0 80: 0.0.0.0/0 SecurityGroup: web-user1 ELB elb-user1 80: 0.0.0.0/0 SecurityGroup: elb-user1
  155. 155. 156 ELBを作成 2台のWebサーバへのアクセスを振り分けるELBを作成します。 2. [ロードバランサの作成] をクリック 1. [ロードバランサー] をクリック
  156. 156. 157 左側のロードバランサーを選択 今回はApplication Load Balancer を選択します 1.[作成]を選択
  157. 157. 158 ELBを作成 – ステップ 1 (1/3) 1. elb-ユーザ名と入力:例)[elb-user1] 2. 自分のVPCを選択(handson-ユーザ名)
  158. 158. 159 ELBを作成 – ステップ 1 (2/3) ELBを2つのパブリックサブネットに配置します。アベイラビリティゾーンにチェックを 入れ、利用可能なサブネットからパブリックサブネット2つをクリックし[次の手順:セ キュリティ設定の構成]をクリック 1. [10.0.0.0/24 パブリックサブネット] をクリック 2. [10.0.1.0/24 パブリックサブネット] をクリック
  159. 159. 160 ELBを作成 – ステップ 3 今回はSSLを使用しないため、何も設定せず次に進みます。 1. [次の手順] をクリック
  160. 160. 161 ELBを作成 – ステップ 2 1. [新しいセキュリティグループを作成する] を選択 3. [HTTP]を選択 4. [次の手順] をクリック 2. elb-ユーザ名と名前を付ける:例)[elb-user1] 説明にも同じ文字列を入力 ELB用のセキュリティグループを新規に作成します。
  161. 161. 162 ELBを作成 – ステップ 4 ヘルスチェックの条件を変更します。 1. ターゲットグループの[名前] にTarget-user1 3. [次の手順] をクリック 2. [正常のしきい値]を2に変更
  162. 162. 163 ELBを作成 – ステップ 4 ヘルスチェックの条件を変更します。 1. webserver#1-user1、webserver#2-user2 のインスタンスにチェックを入れる 3. [次の手順] をクリック 2. [登録済に追加]をクリック
  163. 163. 164 ELBを作成 – ステップ 7 設定内容を確認します。 1. [作成] をクリック
  164. 164. 165 ELBを作成 ELBが作成されました。 1. [閉じる] をクリック
  165. 165. 166 作成されたELBを確認 作成されたELBのDNS名(ホスト名)をメモします。 2. 自分のELBを選択 3. ホスト名をメモします 1. ユーザ名で絞りこむ この時点ではまだブラウザ経 由でアクセスしないでください DNSが登録されるまでにタイ ムラグがあります
  166. 166. 167 作成されたELBを確認 2. ターゲットグループ名の [Target-user1]をクリック 1. [リスナー]を選択 ELB配下の2つのEC2インスタンスの状態確認します
  167. 167. 168 作成されたELBを確認 2. 状態 が [healthy] に 変わるのを確認 1. [ターゲット]を選択 ELB配下の2つのEC2インスタンスが[healthy]と認識されると、正しく稼動できています。
  168. 168. 169 WordPressの設定変更 WordPressが生成するHTML内のホスト名 は初期セットアップ時に使用していたEIP のアドレスが指定されており、ELBのDNS 名でアクセスできるように変更が必要です。 webserver#1にSSHでログインし、以下 のコマンドを実行して更新します。 $ mysql -u admin -p -h メモしたRDS Endpointのホスト名部分 wordpress Enter password: 指定したRDSの管理者パスワード mysql> update wp_options set option_value='http://メモしたELBのDNS名' where option_name='siteurl' or option_name='home'; mysql> exit;
  169. 169. ハンズオン フェーズ3 – ELB経由でアクセス
  170. 170. 171 ELB経由でアクセス http://<ELBのDNS名>/ を開いて、WordPressが表示されることを確認します。
  171. 171. 172 両方のサーバにアクセスがされているか確認 webserver#1, webserver#2それぞれにSSHでログインし、以下のコマンドを 実行してアクセスログを表示させることが可能です。 ELBの定期的なヘルスチェックが実行されたり、Wordpressでページをリロード するたびに双方のEC2へアクセスされている状況を確認できます。 $ sudo tail -f /var/log/nginx/access.log Ctrl + C で終了 補足)webserver#2にログイン する際には、もう一つのEIPを 付与しEIPに対してSSHログイ ンしてください
  172. 172. ハンズオン フェーズ3 – セキュリティグループ設定変更
  173. 173. 174 Webサーバ用のセキュリティグループ WebサーバにはELBからのみアクセスを許可するよう、セキュリティグループを 変更します。 80 OK EC2 Word Press RDS MySQL SecurityGroup: db-user1 EC2 Word Press db-user1 3306: Web web-user1 22: 0.0.0.0/0 80: 0.0.0.0/0→elb-user1 SecurityGroup: web-user1 ELB elb-user1 80: 0.0.0.0/0 SecurityGroup: elb-user1
  174. 174. 175 セキュリティグループ設定変更 セキュリティグループの設定を変更し、WebサーバへのHTTPアクセスはELBからに限定す るようにします。 1. [セキュリティ グループ] を クリック 3. グループ web-ユーザ名 を選択 5. [編集] をクリック 2. ユーザ名で絞込む 4. [インバウンド] をクリック
  175. 175. 176 セキュリティグループ設定変更 1. HTTP用のルールを[カスタム] に変更 2. [elb]と入力して 候補を表示させる 3. 表示された候補から elb-ユーザ名 を選択 4. [保存] をクリック 2つあるルールのうち、HTTPの方を変更します。SSHの方と間違わないように注意してく ださい。
  176. 176. 177 確認 http://<ELBのDNS名>/ を開いて、WordPressが表示されることを確認します。 http://<webserver#1のEIP>/ にはアクセスできなくなっている事を確認します。
  177. 177. ハンズオン Option:LB + Web x2 + DB x2 構成 (サーバ 4台構成)
  178. 178. 179 【オプションハンズオン】 LB + Web x2 + DB x2 構成(サーバ 4台構成) 拡張性:高 • データベースがMulti-AZ構成になります。Activeで動作するDBサーバ は変わらず1台ですが、インスタンスタイプの変更時は先にスタンバ イ側を変更してからフェイルオーバする動作になるため変更時の停止 時間を短く抑えることができます。 冗長性:高 • DBサーバがアベイラビリティゾーンにまたがって2台構成となり、障 害時には自動的にフェイルオーバする構成となり、冗長性が高まりま す。
  179. 179. 180 インターネット ユーザ アベイラビリティゾーン - C パブリックサブネット: 10.0.1.0/24 プライベートサブネット:10.0.3.0/24 10.0.0.0/16 アベイラビリティゾーン - A パブリックサブネット: 10.0.0.0/24 プライベートサブネット:10.0.2.0/24 インター ネット ゲートウェイ EC2 Word Press +MySQL RDS MySQL オプション EC2 Word Press AMI ELB RDS MySQL 本フェーズでの 作成範囲
  180. 180. ハンズオン Option – RDSをMulti-AZ構成に変更
  181. 181. 182 RDS管理ページを開く 1. [サービス] をクリック 2. [RDS]をクリック
  182. 182. 183 RDSインスタンスの設定変更 1. [インスタンス]を選択 3. [インスタンスの操作] をクリック 4. [変更]を選択 2. 自分のインスタンスを選択
  183. 183. 184 Multi-AZを有効に (1/2) 1. [はい] を選択 20
  184. 184. 185 Multi-AZを有効に (2/2) 「すぐに適用」をオンにしなければ、サーバの停止や負荷が伴う変更は次のメンテナンス ウィンドウのタイミングで適用されますが、今回は「すぐに適用」を行います。 1. [オン] に 2. [次へ] をクリック [すぐに適用]がない場合、[次へ] をクリックしてください。次の ページにあります
  185. 185. 186 設定変更内容を確認 1. [DB インスタンスの変更] をクリック マルチAZ配置への設定がすぐに適用されることを確認して変更します
  186. 186. 187 休憩タイム 変更完了を待ちます(約10分間)
  187. 187. 188 マルチAZ化の完了を確認 変更完了を待ちます(約10分間)。 ステータスが[変更中]にならない 場合は、ここをクリックして再描画 します
  188. 188. 189 RDSインスタンスをフェイルオーバーさせる RDSをスタンバイ側に切り替え、挙動を確認します 3. [再起動]を選択 1. 自分のインスタンスを選択 2. [インスタンスの操作] をクリック
  189. 189. 190 RDSインスタンスをフェイルオーバーさせる フェイルオーバーを選択して再起動させます。再起動が完了するまではWordpressにアクセ スできなくなります。再起動が完了すると元通りアクセスできるようになります。 ハンズオンは以上で終了です。 1. フェイルオーバーを選択 2. [再起動]をクリック
  190. 190. AWSをさらに使いこなす
  191. 191. 199 さらに拡張性を高める ※WordPressは考慮せず一般論 Webサーバ • AutoScalingで負荷調整を自動に • 静的コンテンツにS3のWebサイト機能を使用する • CloudFrontでコンテンツキャッシュする DBサーバ • DBのリードレプリカを作成し、読み込み負荷を分散 • DBをシャーディングで分散 • ElastiCacheでセッション情報の保持 • ElastiCacheでデータをキャッシュ
  192. 192. 200 さらに安全性を高める IAMを利用する SSH等の管理接続を制限する • Security Groupで接続元を制限 • VPCのVPN経由のみに限定 System Manager Run Commandを利用し、SSHを使用しない 監視を行う • CloudWatchで監視 • サードパーティ製品・サービスで監視 CloudTrailで監査ログを残す AWS WAFを利用する 前段にELBを配置した場合は、EC2をプライベートサブネットに置く
  193. 193. 201 WordPressを実際に複数台構成で使用する場合 ハンズオンで作成した構成だけでは、複数台構成のWordPressを適切に使用できない点があ ります。 アップロードされたメディアファイルは各サーバのローカルに保存されてしまい、ELBで 振り分けられたWebサーバによっては表示できない。 • “Amazon S3 and Cloudfront” などのプラグインの機能でメディアファイルをS3に保管させる。 • EFSを利用して、各サーバで共有ストレージをマウントする。 ※EFS東京リージョンは2018年7月に提供開始予定 WordPress自体、プラグイン、テーマなどのバージョンアップや変更をWebから行える が、各サーバのローカルディスク上に反映され、全サーバに適用できない。 • Webサーバ間のローカルディスクを同期する仕組みを実装する。 例:管理機能部分を特定のWebサーバ 1台にProxyし、rsyncd + lsyncdで残りのサーバに配布 • 変更したプログラム・コンテンツをイメージとして別途作成してデプロイする方式にする。 • EFSを利用して、各サーバで共有ストレージをマウントする。 WordPressのcron機能が全体で実行されてしまう。
  194. 194. 202 環境の削除 お疲れ様でした。以下の順序で、AWSで作業した環境の片付けをおねがいします。(そのままにしておく と、課金が発生します)もしくは管理IDを持っている方がまとめて削除する方法でもかまいません。 ※他の人のリソースを削除しないようにご注意ください EC2関連 1. ELB ⎼ 不要なロードバランサを右クリック → 「削除」 2. EC2 ⎼ 不要なインスタンスを右クリック → 「削除」 ※インスタンスの状態が「terminated」となればOK 3. EIP ⎼ 不要なElastic IPを右クリック → 「アドレスの解放」(EC2削除時に一緒に消えているはずですが念のため確認) 4. AMI ⎼ 不要なAMIを右クリック-> 「登録解除」 ※登録解除の反映に少し時間がかかります 5. EBSスナップショット ⎼ 不要なスナップショットを右クリック → 「削除」 RDS 不要なRDSインスタンスを右クリック → 「削除」 ※「最終スナップショットを作成しますか?」は「いいえ」に VPC、セキュリティグループ、キーペアについては費用が発生しません。 使用されないのであれば消しましょう。
  195. 195. 203 補足)MySQLのrootパスワードを忘れた場合のパスワード 変更方法 MySQLのrootパスワードを忘れた場合は以下の手順でrootパスワードの更新が可能です。 1. MySQLが稼動しているサーバにSSHでログイン 2. 以下の手順を実行 $ sudo service mysqld stop $ mysqld_safe --skip-grant-tables & $ mysql -u root mysql> use mysql; mysql> update user set password=PASSWORD("ここに新しいパスワードを指定") where User='root'; mysql> commit; mysql> flush privileges; mysql> ¥q $ sudo service mysqld stop $ sudo service mysqld start MySQLをセーフモードで起動 MySQLを再起動 MySQLに接 続してrootパ スワードを更 新
  196. 196. 補足資料:AWSの技術リソース
  197. 197. AWS各種サービスのド キュメントが整理されてい ます AWS公式ドキュメント http://aws.amazon.com/jp/documentation/
  198. 198. AWSクラウドセキュリティ https://aws.amazon.com/jp/security/ https://aws.amazon.com/jp/security/security-resources/ AWSクラウドコンプライアンス https://aws.amazon.com/jp/compliance/ AWS:日本の災害対策関連情報 https://aws.amazon.com/jp/compliance/jp-dr-considerations/ セキュリティ/DR/BC関連資料
  199. 199. 技術セミナー資料 AWS クラウドサービス活用資料集 http://aws.amazon.com/jp/aws-jp-introduction/
  200. 200. オンライン・セミナー(無料) 火曜・水曜、Webにて無料セミナーを実施中 火曜 12時〜13時:ソリューションカット 水曜 18時〜19時:サービスカット 申し込みサイト(各種セミナー) http://aws.amazon.com/jp/about-aws/events/
  201. 201. 公式Twitter/Facebook AWSの最新情報をお届けします @awscloud_jp 検索 最新技術情報、イベント情報、お役立ち情報、お得なキャンペーン情報などを 日々更新しています! もしくは http://on.fb.me/1vR8yWm

×