#目的
個人アプリでssl化が必要だったためSSL証明書の発行が求められた。
筆者の備忘録
#前提条件
AWS、ALB(Application Load Balancer)、ec2、を活用します。
開発環境 rails unicorn nginx
##ssl化までの手順
Route53でドメインを購入(有料です)
AWS Certificate Manager(ACM)でSSL証明書の発行
ロードバランサーでALBにhttpsの設定を入れて作成 <=今回はここ
Route53でAレコードのエイリアスを作成
##ロードバランサーについて
ロードバランサーとは、その名の通りサーバーにかかる負荷を、平等に振り分けるための装置のことを指します。これによって1つのサーバーにかかる負担を軽減したり、停止状態を防ぐことができたりします。
サーバの数を増やすことで負荷がかかりすぎている一つあたりの負荷が減る作戦。
仕事で例えるなら1人で大量の仕事を抱え込むオーバーワークで倒れてしまう。だから社員のみんなで分担して仕事を分け合おうねということだろう。言い換えるならその仕事の量が多すぎたら多数のサーバもともにダウンしてまう。そのために大量のサーバつまりコストが必要なのだろう。
*今回はawsでssl発行書を発行したため、ロードバランサーを使用した。
#ロードバランサーでALBにhttpsの設定を入れて作成
awsのコンソールEC2の飛び、横のタブからロードバランサーを選択し、ロードバランサーの作成をクリック
ALB(Application Load Balancer)を選択。
##手順1 ロードバランサーの設定
名前は区別が付く名前に
リスナー:ロードバランサーのプロトコル => HTTPSを選択
アベイラビリティーゾーンは2つ以上選択します。
###ポイント
リスナーは
究極的にはリクエストした側がhttpで通したいのかhttps通したいのかを聞いているにで
今回はssl化が目的なのでhttpsを選択。
証明書タイプ:ACMから証明書を選択する(事前にSSL証明書を発行したため)
証明書の名前に事前にSSL証明書を選択
既存のセキリティグループでもよし
今回は新しくセキリティグループを作成し、
HTTPSを選択
ALBはターゲットグループにルーティングが行える
ALBはターゲットグループと呼ばれる別々のサーバグループに対してインスタンスを紐付け、ルーティングを設定することができます。
直接的にインスタンスを設定していたELBとは違って、サービスを独立させて実行することもでき、ルーティングのルール定義も複数作成可能です。
###ポイント
ルーティングは、どのインスタンスと結びつけたいかだから
紐付けたいインスタンスのポートに合わせよう。
そのためhttpsを選択せず今回は、httpを選択した。
ヘルスチェックは、同様にhttp:/80を選択(ここは検証していません)
紐付けたいインスタンスを登録させる。
##手順 6: 確認
設定がただしか確認する。
確認後ALBが作成される。
##最後にターゲットグループの紐付けたインスタンスを確認する
横のタブからターゲットグループを選択
作成したターゲットがロードバランサーとつながっているか確認し
登録済みのターゲットのステータスがhealthyになっているか確認する。
ここがしっかり紐付いていなかっため筆者は痛い目にあった。