AWS NLBを使用して固定IPでhttpsのサイトの構築

固定IPでNLBを使えると何が良い?

Aレコードに指定できる

外部にネームサーバーがあるドメインを使ってAレコードに指定できます

無停止で再起動できる

1台ずつ再起動することで無停止で運用できるようになります

負荷を分散させられる

複数台ロードバランサーに付けられるので負荷分散させられます

AmazonLinuxにLet’s EncryptでSSLを導入する

cerbotをインストールして証明書を取得します

sudo curl https://dl.eff.org/certbot-auto -o /usr/bin/certbot-auto
sudo chmod 700 /usr/bin/certbot-auto

sudo certbot-auto certonly --webroot -w /usr/share/nginx/html -d nitamago.example.com --email nitamago@example.com  --debug

ファイルが /etc/letsencrypt/live/nitamago.example.com/ 以下にできるので証明書をNginxに設定します

sudo cat /etc/letsencrypt/live/nitamago.example.com/cert.pem /etc/letsencrypt/live/nitamago.example.com/fullchain.pem > /etc/letsencrypt/live/nitamago.example.com/cert_chain.pem
sudo chmod 700 /etc/letsencrypt/live/nitamago.example.com/cert_chain.pem

Nginxで証明書を指定する設定を書いてリロードします

ssl_certificate "/etc/letsencrypt/live/test-nlb.kozakana.net/cert_fullchain.pem";
ssl_certificate_key "/etc/letsencrypt/live/test-nlb.kozakana.net/privkey.pem";

これでhttpsの設定が完了です

NLBの設定

  1. EIPを取得します
  2. セキュリティグループを設定します 80番と443番ポートを開けたセキュリティーグループを作成する
  3. ターゲットグループを設定します プロトコルをTCPにして、ポートを80番にしたものと443番にしたものの二つを作ります
  4. NLBの作成
  5. Network Load Balancer を選ぶ
  6. リスナーに TCP 80TCP 443 を登録します
  7. アベイラビリティーゾーンの設定でElasticIPで先に作っておいたEIPを指定します。この際IPを一つにする必要がある場合にはアベイラビリティーゾーンを1つにします
  8. ターゲットグループで3で作成した設定を追加します。この画面では一つしか設定できないので後からもう一つを設定します
  9. 作成後NLBにもう一つのターゲットグループを追加します


EIPを指定しているとNLBの作成に時間がかかるようで5分〜10分程度かかりますが、無事作成されれば完了です