この記事は現役ウェブディベロッパーがわかりやすさにこだわって作成しました
前半ALB(ロードバランサー)の作成
AWSにログイン後の画面の中央にある「EC2」を選択します。
EC2のダッシュボードに移動したら、左側の縦に並んだメニューの下の方「ロードバランサー」を押してください。
以下のような画面に遷移しますので、赤枠の「ロードバランサー」の作成を押してください。
ロードバランサーの種類の選択
次の画面ではロードバランサーの種類を選択します。
左が今回作成するALB(Application Load Balancer)になります。左側の「作成」を押してください。
ロードバランサーの設定
ロードバランサーの設定を行います
- 名前:管理する時に分かりやすい名前(今後ALBを複数個作った時に分かりやすくなります。基本なんでも大丈夫です。)
- 「リスナーの追加」を選択し、「ロードバランサーのプロトコル」に「HTTP」と「HTTPS」を選択してください。ぽーとは自動的に80と443に設定されます。
- 次の手順:「セキュリティ設定の構成」を押してください。
続いて画面少し下へ行き、アベイラビリティゾーンの設定を行います。
VPCは自分で作成した覚えがない場合は「デフォルト」のままでOKです。
アベイラビリティゾーンを2つ以上指定する必要があるので、上から2つチェックを入れましょう。
「アドオンサービス」という項目がありますが、そこはスルーで大丈夫です。一番下へ行くとお馴染みの「タグ」を入力する欄があるので、「キー」に「Name」、値に管理しやすい名前を入力しておいてください。最後に「次の手順:セキュリティ設定の構成」を押します。
セキュリティ設定の構成
ここで、証明書が必要になります。以下の記事でSSL証明書を取得していれば、赤枠の「ACMから証明書を選択する(推奨)」を選択状態で「証明書の名前」の欄に作成したACM証明書を確認できるはずです。
【AWS解説】SSL証明書を取得してブログをhttps通信化する方法
続きを見る
正しい証明書名が表示されていたら、「セキュリティポリシーの選択」はデフォルトのままで「次の手順:セキュリティグループの設定」を押してください。
セキュリティグループの設定
続いてセキュリティグループを設定します。
赤枠の「新しいセキュリティグループを作成する」にチェックを入れて、新しいセキュリティグループのルールを記載していきます。
セキュリティグループ名には管理しやすい名前、例えば「WordPressALB」などを入力し、
下のルールの欄には画像のように以下の設定をしてください。
- 「タイプ」:「HTTPS」 「ソース」:「0.0.0.0/0, ::/0」
- 「タイプ」:「HTTPS」 「ソース」:「0.0.0.0/0, ::/0」
HTTPで来たリクエストはHTTPS通信に変換する設定を後ほど行います!
できたら、右下の「次の手順:ルーティングの設定」を押してください。
ターゲットグループの登録
続いてターゲットグループの登録です。ターゲットグループではALBがどのサーバに対してどんな方法で通信を行うかを設定します。
赤枠の名前にターゲットグループにつけたい名前を設定してください。基本的に1つしか作らない人が多いと思いますので何でも良いですが、ワードプレス用なら「WordPressTarget」などで良いかと思います。
プロトコル等ですが、ALBとEC2間の通信は安全なプライベートネットワーク内になるので、「HTTP」のままで問題ありません。
このページの設定は以上なので、右下の「次の手順:ターゲットの登録」を押して進んでください。
ターゲットの登録
ここではALBを経由させたいEC2インスタンスを選択します。起動中になっていないと表示されないのでご注意ください!
画面下のインスタンスの中から「https通信化」したいインスタンスにチェックを入れ、ポート「80」のままで、「登録済に追加」を押します。追加されると画面上部にも表示されるようになります。
「次の手順:確認」を押してください。
最後に確認ページです、設定が合っていることを確認し、右下の「作成」を押してください。
これで作成は完了です!
ロードバランサーの管理画面へ戻ると、作成したALBが表示されているかと思います。
EC2インスタンスの確認
これで、今までEC2インスタンスにいきなりブラウザからアクセスしていたのが、ALB経由でアクセスするようにルートが変更になりました。
まだ以前取得したドメイン名との関連付けは行っていませんが、ALBのアドレスからサーバへアクセスできるか確認することができます。
先ほどのロードバランサーの一覧の画面で、作成したALBにチェックを入れ、画面下の赤枠「DNS名」をコピーしてください。
これをブラウザに貼り付けると、設定がちゃんと行われていれば今までと同じようにブログにアクセスできるはずです。この時点ではまだ「http通信」です。
ALBのDNS名でアクセスするとエラーが表示される場合
上記の手順で画面が表示されない場合は、ALBとEC2の間の接続が上手くいっていないことになります。
左側のメニューの「ターゲットグループ」を押すと以下の画面になります。先ほど作成したターゲットを押してください。
以下のような画面に遷移します。「Targets」を選択すると、下の「Resistered targets」の欄にALBがルーティングを行うEC2インスタンスと、接続状態が表示されます。
ここが画像のように「healthy」と表示されている場合、ALBとEC2インスタンスの間の接続は無事完了しています。
その場合セキュリティグループの問題が考えられるので、ALBに着けたセキュリティグループが「HTTP」、「HTTPS」通信を「0.0.0.0/0」で許可しているか、またブラウザにURLを貼る時に「http://」にしているかを確認してみてください。
ここが「unhealthy」だった場合は、ALBと「EC2インスタンス」の接続が上手くいっていないことになります。この場合EC2のセキュリティグループを確認し、ALBからのHTTP通信が許可されているかを確認してみてください。また、多少「healthy」になるのに時間がかかる場合もあります。
後半:ALB(ロードバランサー)とドメイン名の紐づけ
ここまでの手順でALB経由でEC2インスタンスへアクセスする設定が完了しました。
ここからはURLを入力した時にALB経由でEC2インスタンスへアクセスできるよう設定を行いたいと思います。
Route53へアクセス
まずはAWSログイン後の画面の上の検索バーに「Route53」と入力し、赤枠の「Route53」を選択してください。
左側のメニューの「ホストゾーン」を押します。
以下の記事で作成したドメイン名が表示されるので、ドメイン名をクリックしましょう。
【初心者向け】AWSでドメイン名を取得する方法!Route53使用
続きを見る
レコードの編集
続いて以下のような画面が表示されます。タイプが「A」と書かれた欄の右側に以前下の記事でドメイン名と紐づけたElasticIPの値が表示されているはずです。
【初心者向け】AWSでドメイン名を取得する方法!Route53使用
続きを見る
以前はURLで直接EC2インスタンスへアクセスするよう設定しましたが、今回はALBが間に入ることになるので、ここにALBを設定すれば完了します!
「タイプ」が「A」の箇所にチェックを入れて、「編集」を押してください。悩んでるひよわタイプAが表示されていない場合は?
上の画面でまだタイプ「A」がない方は「レコードの作成」を押して新しく作成しましょう。入力項目は下に続く解説と同じものを入力します。「エイリアス」はオンにします。
タイプAが既にある方は上の手順で「編集」を押すと、以下の画面になります。「値」には現在ElasticIPのIPアドレスが記載されているかと思いますが、赤枠の「レコードタイプに応じたIPアドレスまたは別の値」を押して、「Application Load BalancerとClassic Load Balancerへのエイリアス」を選択してください。
続いてリージョンに「アジアパシフィック(東京)」。
その下の赤枠に作成したALBのドメイン名(~elb.amazonaws.com)が表示されるので、選択して「変更を保存」を押してください。
これでブログのドメイン名にアクセスすると、ALBにルーティングされるようになりました!
正しく設定できていればドメイン名でブログにアクセスできるはずです。以前と挙動は変わりませんが、ちゃんとALBを経由するようになりました。
ただし今の状態だとhttp通信でもALB経由でブログにアクセスできる状態になっています。https通信一本化にした方が好ましいので、引き続き以下の記事からhttp通信のリダイレクト設定を行ってください。
【AWS画像付き解説】HTTPリクエストをHTTPSにリダイレクトする方法
続きを見る
まとめ
以上でALBの作成は完了です。
これで、ブラウザからwebサイトにアクセスする際に、ALBを経由するルートに変更されました。
この記事についてのご質問またはお困りのことがございましたら、お気軽にお問い合わせください。