1
0

【AWS】CloudFront+Route53+ALB+AutoScaling+EC2で負荷分散Webサイトを公開する方法

Last updated at Posted at 2024-08-14

構成図

パブリックVPC内のEC2のWebサーバーを、

  • ALB
  • Internet Gateway
  • CloudFront
  • Route53
    で公開する。

Imakara-Web-System.drawio.png

事前準備

・パブリックVPC内にEC2を立ちあげ、Webサーバー(Apache/Nginx)を公開する

開発とネットワークの流れ

  • Route53・・・ドメイン取得とホストゾーン作成
  • ALB・・・ターゲットグループの作成とロードバランサーの作成
  • ACM・・・パブリックSSL/TLS認証書の取得・Route53のホストゾーンへ登録
  • CloudFront・・・ALBをオリジンとするドメインのCDNを作成
  • Auto Scaling・・・EC2/ALBのメトリクスに応じた自動スケーリングを作成・ALBのターゲットへ登録

ルーティング理解.drawio.png

Route53の設定

  1. Route53のコンソール画面を開く
    https://us-east-1.console.aws.amazon.com/route53/v2/hostedzones#
    1.登録済みドメインでドメインを登録を押す
  2. 作成したいドメイン名を検索し、チェックアウトに進むを押して、ドメインを取得する

Route53001.PNG
Route53002.PNG
Route53003.PNG

警告
自動更新をONにすると自動的に年間費用がかかり続けるため、消し忘れに注意

Application Load Balancerの設定

  1. ロードバランサーのコンソール画面を開く
    https://ap-northeast-1.console.aws.amazon.com/ec2/home?region=ap-northeast-1#LoadBalancers:
    1.ロードバランサーの作成を押す
  2. Application Load Balancerの作成を押す
  3. ロードバランサー名を入力する
    ALB001.PNG
  4. アベイラビリティーゾーンを選択する
    ALB002.PNG
  5. セキュリティグループを選択する
    ALB003.PNG
  6. リスナーとルーティングのターゲットグループの作成を押す
    ALB004.PNG
  7. ターゲットグループ名を入力する
  8. ターゲットを登録でEC2を選択し、保留中として以下を含めるを押す
  9. ターゲットグループの作成を押す
  10. ロードバランサーのページに戻り、ロードバランサーの作成を押す

AWS Certificate Manager (ACM)の作成

  1. バージニア北部でACMコンソール画面を開く
    https://us-east-1.console.aws.amazon.com/acm/home?region=us-east-1#/welcome
  2. リクエストを押す
  3. 次へを押す
    ACM001.PNG
  4. 完全修飾ドメイン名にWebサイトのドメインを入力する
    example.com
  5. リクエストを押す
    ACM002.PNG
  6. 作成した証明書をクリックして、Route 53 でレコードを作成を押す
  7. 先ほど作成したRoute53のドメインを選択して、レコード作成を押す

CloudFrontの作成

  1. CloudFront コンソール画面を開く
    https://us-east-1.console.aws.amazon.com/cloudfront/v4/home?region=ap-northeast-1#/distributions
  2. ディストリビューションを作成を押す
  3. Origin domainにALBのDNSを入力する
  4. ディストリビューションを作成を押す
  5. 作成したディストリビューションを押す
  6. 編集を押す
  7. Alternative domain name (CNAMEs) - optionalにドメイン名を入力する
  8. Custom SSL certificate - optionalで作成したACMを選択する
    CloudFront009.PNG
  9. 変更を保存を押す
  10. ビヘイビアのタブを押す
  11. ビヘイビアを作成を押す
  12. パスパターンに/*を入れ、キャッシュキーとオリジンリクエストで下記を選択する
    CF001.PNG
    CF002.PNG
  13. オリジンのタブを押す
  14. オリジンを選択して、編集を押す
  15. カスタムヘッダーを追加 - オプションで下記を追加する
    CF003.PNG

Auto Scalingの作成

  1. Auto Scalingのコンソール画面を開く
    https://ap-northeast-1.console.aws.amazon.com/ec2/home?region=ap-northeast-1#AutoScalingGroups:
  2. Auto Scaling グループを作成するを押す
  3. Auto Scaling グループ名を入力する
    MyAutoScaling
  4. 起動テンプレートを作成するを押す
  5. 起動テンプレート名を入力する
  6. 別のタブでEC2のコンソール画面を開き、起動中のEC2のイメージを作成する
  7. 起動テンプレートのタブに戻り、自分のAMI -> Amazon マシンイメージ (AMI)で作成したイメージを選択する
  8. インスタンスタイプ、キーペア、セキュリティグループ を選択する
  9. 高度な設定でIAM インスタンスプロフィールでロールを選択する
  10. 起動時に実行するスクリプトがあれば、ユーザーデータ - オプション に記載する
    Content-Type: multipart/mixed; boundary="//"
    MIME-Version: 1.0
    
    --//
    Content-Type: text/cloud-config; charset="us-ascii"
    MIME-Version: 1.0
    Content-Transfer-Encoding: 7bit
    Content-Disposition: attachment; filename="cloud-config.txt"
    
    #cloud-config
    cloud_final_modules:
    - [scripts-user, always]
    
    --//
    Content-Type: text/x-shellscript; charset="us-ascii"
    MIME-Version: 1.0
    Content-Transfer-Encoding: 7bit
    Content-Disposition: attachment; filename="userdata.txt"
    
    #!/bin/bash
    /bin/echo "Hello World" >> /tmp/testfile.txt
    
    cd /var/www/html/myapp
    /usr/bin/nohup /home/ec2-user/.local/bin/uvicorn main:app --host localhost --port 8000 --workers 5 &
    
  11. Auto Scaling グループのタブに戻り、作成した起動テンプレートを選択する
  12. ネットワークでVPCとサブネットを選択する
  13. ロードバランシングで既存のロードバランシングにアタッチするを選択し、既存のロードバランサーターゲットグループで先ほどのターゲットグループを選択する
  14. Elastic Load Balancing のヘルスチェックをオンにするをチェックする
  15. 希望するキャパシティ、最小の希望する容量、最大の希望する容量を設定する
  16. 次へを何度か押す
  17. Auto Scaling グループを作成するを押す
1
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
1
0