質問: AWS(Amazon)のALB(Application Load Balancer)を設定していますがうまくいきません。 根本的なところが間違っているかもしれませんのでお伺いさせてください。 httpではアクセスできていますが、httpsでアクセスできません。 TargetGroupはInstanceのWebサーバ1台を指定し、Portは80を設定しています。 【質問内容】 (1)Application Load Balancerはレイヤ2動作で正しいでしょうか? ⇒ユーザからのHTTPSパケットの宛先IPアドレスはInstanceのWebサーバIPアドレスになっていて、レイヤ2で通過時にLoadBalanceしてくれると思っています。 WebサーバのアドレスとしてLoadbalancerのIPアドレスを設定するわけではないと思っています。IPアドレスを設定してませんし。。。 (2)Application Load BalancerはHTTPSを終端していると思っています。 (リスナーにはHTTPとHTTPSを設定し、HTTPSにはACMで作成したSSL証明書を設定しています。) HTTPSはLoadBalancer(ALB)まででターゲットのInstanceのWebサーバにはHTTPで送信していますでしょうか? InstanceのサーバはHTTPのみサポートすればHTTPSもサポートできるのは誤っていますでしょうか? InstanceのWebサーバはSSL証明書を必要としないと思っています。 AWSでALBを追加してInstanceのWebサーバにHTTPSを使えるようにしたいのですが、やり方が良くわからず困っています。 よろしくお願いします。
回答: 解決済みのようですが、誤っているので正しておきます。 Elastic Load Balancing(以下ELB)について ================================== 元々ELBは1つだけでした。 2016年の9月末にコンテナベースアプリケーションのサポートやURLベースのルーティングに特化した Application Load Balancing(以下ALB)が新設されました。 基本的にはアーキテクチャは元々1つですからALBもELBも変わりはありません。 EC2インスタンスをアタッチ/デタッチして、インスタンスに通信させるか否かを設定します。 #LANケーブルの結線と抜線と同じ動作となります。 ELB、ALBのしくみ ============ ELBは、OSI参照モデルで言うところのレイヤー4(トランスポート層)およびレイヤー7(アプリケーション層)で動作します。 ALBは、レイヤー7でのみ動作します。 ELB、ALBは、IPアドレスを複数持っておりランダムで変更されます。 よって、DNS側で指定するときは、AレコードのエイリアスかCNAMEとして設定することになります。 ELB,ALBの機能 =========== ELB、ALBは、外部ないし内部通信を受け、設定したインスタンスに通信を渡します。 ポートフォワーディング機能を持っていますので、 例えば443ポートで来た通信を8080に変更してEC2インスタンスに渡すことができます。 証明書の認証及び検証機能も設定することができます。 ELBないしALBで、いちいちEC2インスタンスに渡すことなくSSLの証明書検証ができるようになっています。 また、内部ロードバランサーとして利用することも可能で、ロードバランサー作成時にスキーマを 外部向けなのか内部向けなのか選択することができます。 #ただし、一度作成してしまうと変更できませんので、作り直したいときは削除して作り直します。 内部向けに作ったロードバランシングに対して、ネームをつけたい場合は、 外部ネームサーバは使うことができないため、EC2インスタンスにDNSを立てるかRoute53で設定するしかありません。 外部向けに作ったロードバランシングに対して、ネームをつけたい場合は、 外部DNSを使う、EC2インスタンスにDNSを立てる、Route53で設定するの選択ができます。 Route53は、非常に安価にもかかわらず、事前にAWSネットワークと主要拠点を結んで認識するようになっていますので、 普段は1日や2日かかるIPアドレスと名前の紐付けが、数分で伝播させることができます。 以上、ELBの概略ですが、回答となったのではないでしょうか。