LoginSignup
0
0

More than 3 years have passed since last update.

awsセルフハンズオン「AWSの基礎サービス ~ Amazon EC2, Amazon RDS, Amazon VPC ~」をやってみた

Last updated at Posted at 2020-10-11

awsセルフハンズオン「AWSの基礎サービス ~ Amazon EC2, Amazon RDS, Amazon VPC ~」をやってみる。
https://resources.awscloud.com/aws-summit-online-japan-2020-on-demand-self-paced-hands-on-85234

ハンズオン資料はここ。
https://github.com/harunobukameda/Amazon-VPC---Amazon-EC2---Amazon-RDS-Handson

ハンズオン

ハンズオンはフェーズ1から3、オプションまで段階を踏んで環境構築を進めていきます。
フェーズ1ではWordPressをEC2インスタンス1台構成で構築(WordPress、nginx、MySQLインストール済みAMIを使用)し、
オプションまで完了すると、LB+Webサーバ2台+DBサーバ2台(Multi-AZ)構成ができます。
※フェーズ3までは無料枠で構築できる

ハンズオンではVPCウィザードを使用しますが、今回は理解のため使わずに進めていきます。
(なので、フェーズ1の範囲は作業が変わります)
awsハンズオン.png
図はハンズオン資料を元にdraw.ioで作成。

フェーズ1:サーバ1台構成(EC2インスタンス1台)

やること

  • VPC作成
    • ハンズオンではVPC作成ウィザードを使用しますが、理解のためここでは使いません。
    • VPCウィザードを使用すると、サブネット・ルートテーブルやインターネットゲートウェイ等のVPCコンポーネントも一緒に作成される。
  • コミュニティAMIからEC2作成
  • ElasticIPを割り当て、EC2インスタンスに割当
  • WordPress設定

やっていき

VPC作成〜VPCコンポーネント設定

VPC作成
  • サービスから「VPC」を選択
  • VPC > VPCの作成
    • 名前タグ … 自分が認識できるもの。ここでは「vpc-handson」にした
    • IPv4 CIDR ブロック … ハンズオン資料と同じく10.0.0.0/16
    • IPv6 CIDR ブロック … IPv6 CIDR ブロックなしを選択
サブネット作成
  • サブネット > サブネットの作成
    • ここでは、AZ 1a、1cにそれぞれパブリックサブネット、プライベートサブネットを作成
    • フェーズ1ではAZ 1aに作成したパブリックサブネットのみ使用。残りはフェーズ2、3、オプションで使用
    • サブネットの作成
      • 名前タグ … 自分が認識できるもの。ここでは「sb-handson-public-1a」「sb-handson-private-1a」といった名前タグを指定
      • VPC … 作成したvpc-handsonを指定
      • IPv4 CIDR ブロック … 資料と同じく 10.0.0.0/24、10.0.1.0/24、10.0.2.0/24、10.0.3.0/24 をそれぞれ指定
インターネットゲートウェイ作成
  • インターネットゲートウェイ > インターネットゲートウェイ作成
    • 名前タグ … 自分が認識できるもの。ここでは「igw-handson」
  • インターネットゲートウェイ > アクション > VPCにアタッチ
    • 作成したインターネットゲートウェイを選択、VPCにアタッチする
ルートテーブル作成&編集
  • 作成したインターネットゲートウェイを送信先に追加する
  • ひとまず既に作成されているルートテーブルは識別できる名前(ここではrtb-handson-private)に変更
    • 作成されたサブネットに関連付け済み。送信先は作成したVPCになっている
  • ルートテーブル > ルートテーブルを作成
    • インターネットゲートウェイに向けるルートテーブル
    • 名前タグ … 自分が認識できるもの。ここでは「rtb-handson-public」
  • インターネットゲートウェイを送信先に追加
    • 新しく作成したルートテーブルを選択 > ルートの編集
    • ルートの追加
      • 送信先を0.0.0.0/0(デフォルトルート)、ターゲットをインターネットゲートウェイを選択
  • サブネットの関連付け
    • サブネットの関連付けの編集
    • パブリックサブネット用に作成したサブネットを選択
セキュリティグループ設定
  • 後の作業でセキュリティグループを新しく追加するので、既に作成されているセキュリティグループのNameを認識しやすい名称(ここではsg-handson-default)に変更する

EC2インスタンスの作成〜WordPressの構成

コミュニティAMIからEC2インタンスを起動、WordPressの設定をしていきます。

EC2インスタンスの作成
  • サービスから「EC2」を選択
  • EC2を作成する
    • EC2インタンスの起動 > コミュニティAMIを選択
    • 資料にあるAMI-IDを検索し、選択
      • wordpress, nginx, mysqlが既に設定済みのイメージ
    • インスタンスタイプ … t2.microを選択
    • インスタンスの詳細 … VPCは作成したVPC、サブネットはパブリックサブネット(AZ az)を選択、自動割当パブリックIPは有効にする
    • 高度な詳細 … ユーザーデータに #!/bin/bash chown apache:apache /var/www/html/ を指定
    • ストレージ … 特に設定せず
    • タグの追加 … キーに「Name」を追加。認識しやすい名前を指定(ここではweb-user-1)
    • セキュリティグループの設定
      • セキュリティグループの割り当て … 新しいセキュリティグループを作成する
      • ルールに「SSH」追加 … プロトコルがTCP、ポート範囲が22、ソースは任意の場所(0.0.0.0/0, ::/0)
      • ルールに「HTTP」追加 … プロトコルがHTTP、ポート範囲が80、ソースは任意の場所(0.0.0.0/0, ::/0)
    • キーペアの作成
      • 新規作成した場合はpemファイルを保存する
ElasticIPの割り当て
  • Elastic IP > Elastic IPアドレスの割り当て よりElasticIPを作成
  • Elastic IP > アクション > Elastic IPの関連付け
    • 先程作成したEC2インスタンスを関連付け
WordPressの構成
  • ターミナルからssh接続を確認
    • ssh -i [EC2インスタンス起動時に保存したpemファイル] ec2-user@[作成したElasticIP]
    • MySQLとnginxが起動していることを確認
      • sudo service mysqld status
      • sudo service nginx status
  • http://[作成したElasticIP]/にアクセス、資料通りにWordPressの設定をする

フェーズ2:Web+DB(サーバ2台構成)(EC2インスタンス1台+RDS1台)

やること

  • DB用セキュリティグループ作成
  • DBサブネットグループを作成(フェーズ1で作成したプライベートサブネットを割り当てる)
  • RDSインタンス作成(作成したサブネットグループを割り当てる)
  • フェーズ1のEC2インスタンス上のMySQLを停止&RDSに接続設定を変更

やっていき

DB用セキュリティグループ作成

  • セキュリティグループを作成
    • セキュリティグループ名 … db-user1
    • 説明 … RDS for MySQL
    • VPC … 作成したVPC
    • インバウンドルール
      • タイプ … MySQL/Aurora
      • ソース … カスタムを選択、webserver用に作成セキュリティグループを選択

DBサブネットグループを作成

  • サービスから「RDS」を選択
  • サブネットグループ > DBサブネットグループを作成
    • 名前 … db subnet user1
    • 説明 … RDS for MySQL
    • VPC … 作成したVPC
    • アベイラビリティゾーン … 1a、1c
    • サブネット … AZ 1a、1cに作成したプライベートサブネットを選択

RDSインタンス作成

  • データベース > データベースの作成
    • データベースの作成方法 … 標準作成
    • エンジンのタイプ … MySQL
    • テンプレート … 開発/テスト
    • DBインスタンスサイズ … バースト可能クラスでdb.t2.microを選択
    • VPC … 作成したVPC
    • サブネットグループ … 先程作成したサブネットグループを選択
  • データベース作成、起動までには数分かかる

wordpressの接続先DBを変更

  • 作成したEC2からRDSに接続できることを確認
    • $ mysql -u admin -p -h [作成したRDSのエンドポイント]
  • EC2インスタンス上にインストールされているMySQLのデータをエクスポート
    • mysqldump -u root -p wordpress > export.sql
  • EC2インスタンス上のMySQLは今後使わないため停止
    • sudo service mysqld stop
    • sudo chkconfig --level 345 mysqld off
  • エクスポートしたデータをRDSにインポート
    • mysql -u admin -p -h [作成したRDSのエンドポイント] wordpress < export.sql
  • 再設定をWebから行うため、DB接続設定を初期化する
    • sudo mv /var/www/html/wp-config.php ~/
    • http://[EIP]/ に接続、WordPressを再設定
    • データベースのホスト名をlocalhostからRDSのエンドポイントに変更
  • http://[EIP]/ にアクセスして表示されることを確認

フェーズ3:LB + Webx2 + DB構成 (サーバ3台構成)

やること

  • フェーズ2までに作成したwebserverを元にAMIを作成する
  • 2つ目のEC2インスタンスを作成
  • ELBのセキュリティグループを作成
  • ELBを作成
    • パブリックサブネットに配置
    • セキュリティグループを新規に作成
  • WordPressが生成するHTMLのホスト名をELBのDNSに変更
  • Webサーバ用のセキュリティグループ変更
    • WebサーバにELBからのみ許可するよう変更

やっていき

2台目のWebサーバーを作成

  • WebサーバのAMIを作成
    • インスタンス > アクション > イメージ > イメージを作成
  • AMI > 作成したAMIを選択、起動
    • ネットワーク … 作成したVPCを選択
    • サブネット … AZ 1cに作成したパブリックサブネットを選択
    • 自動割り当てパブリックIP … 有効
    • タグ … キー「Name」を追加。認識できる名称(ここではwebserver-handson-2)を指定
    • セキュリティグループ … 既存のセキュリティグループ(1台目のWebサーバと同じ)を選択

ELBを作成

  • ロードバランサー > ロードバランサーの作成
    • Application Load Balancer(HTTP、HTTPS)を作成
      • 名前 … 認識できる名前(ここではelb-handson)
    • アベイラビリティーゾーン … 1a、1cのパブリックサブネットを選択
    • セキュリティグループ
      • 新しいセキュリティグループを作成
      • セキュリティグループ名 … 認識できる名称(elb-user1)
      • ルール … HTTP、TCP、80
    • ルーティングの設定
      • 各ターゲットグループは 1 つのロードバランサーのみに関連付けることができることに注意
      • 名前 … 認識できる名前(target-user1)
    • ターゲットの登録
      • 作成済みのインスタンス2台を登録済みに追加
  • 作成したらターゲットグループのStatusがhealthyに変わるのを確認
  • WordPressの設定変更
    • WordPressの生成するHTML内のホスト名は初期セットアップ時のEIPが指定されているので、ELBのDNSに変更
      • $ mysql -u admin -p -h [RDSのエンドポイント] wordpress;
      • update wp_options set option_value='[ELBのDNS名]' where option_name='siteurl' or option_name='home';
    • http://[ELBのDNS名]/ でWordPressが表示されることを確認

ELBのセキュリティグループ設定変更

  • WebサーバにはELBからのみアクセスを許可するよう、セキュリティグループを変更
  • セキュリティグループでWebサーバーに指定しているものを選択
  • インバウンドルールのHTTPのソースを0.0.0.0からELBに変更
  • http://[EIP] にアクセスできなくなることを確認

オプション:LB + Webx2 + DBx2構成(サーバ4台構成)

やること

  • RDSのMulti-AZを有効にする
  • RDSインタンスのフェイルオーバーを選択、再起動する

やっていき

  • データベース > 変更
    • 可用性と耐久性の「マルチAZ配置」に変更
  • データベース > アクション > 再起動
    • フェイルオーバーし再起動する

さらに拡張性、安全性を高める

ハンズオン資料より引用

  • さらに拡張性を高める
    • Webサーバ
      • AutoScalingで負荷調整を自動に
      • 静的コンテンツにS3のWebサイト機能を使用する
      • CloudFrontでコンテンツキャッシュする
    • DBサーバ
      • DBのリードレプリカを作成し、読み込み負荷を分散 • DBをシャーディングで分散
      • ElastiCacheでセッション情報の保持
      • ElastiCacheでデータをキャッシュ
  • さらに安全性を高める
    • IAMを利用する
    • SSH等の管理接続を制限する
      • Security Groupで接続元を制限
      • VPCのVPN経由のみに限定
    • System Manager Run Commandを利用し、SSHを使用しない
    • 監視を行う
      • CloudWatchで監視
      • サードパーティ製品・サービスで監視
    • CloudTrailで監査ログを残す
    • AWS WAFを利用する
    • 前段にELBを配置した場合は、EC2をプライベートサブネットに置く

最後にリソースの削除をする

削除するまでがハンズオン。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0