ちょっと話題の記事

試してわかった NLB の細かいお作法

2017.09.15

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんばんは、菅野です。
ネットワークロードバランサー(NLB) が発表され、Dev.IOでもいくつかのブログエントリーが公開されました。
今回はユーザーとして NLB の作成からアクセスまで色々試してみました。

サブネット

  • NLB を作成する前に用意しておきましょう。
  • NLB の作成を開始した後にサブネットを作ってもリストに出てきませんし、更新ボタンもありません。(VPC が複数ある場合は VPC を選択し直すことでサブネットのリストが更新されます)
  • このサブネットには NLB と EC2 インスタンスを配置することになります。
  • ルートテーブルにはインターネットゲートウェイ(IGW)へのルートを追加しておきましょう。
  • IGWへのルートが無いとこんなメッセージが表示されます。
    図1

Elastic IP(EIP)

  • NLB を作成する前に用意しておきましょう。
  • NLB を配置するアベイラビリティゾーン(AZ)の数だけ用意します。
  • NLB の作成を開始した後に EIP を作ってもリストに出てきませんし、更新ボタンもありません。(VPC を選択し直しても EIP のリストは更新されません)
  • 各 AZ に同じ EIP を設定する事はできません。
    図2

  • EIP を指定しなくても NLB は作れます。その場合は自動でパブリック IP が割り当てられます。
    図3

  • EIP 無しでも作れますが、後から EIP を割り当てる方法は現時点では見つかりませんでした。

  • ネットワーク IF に割り当てられているパブリック IP を外そうとするとエラーになります。
    図4

  • ネットワーク IF に EIP を強引に付けれるかも試しましたがエラーになります。
    図5

  • EIP を指定して作った NLB には IP アドレスが表示されます。
    図6

  • EIP 無しで作成した NLB には IPアドレスは表示されません。
    図7

ターゲットグループ

  • NLB は アプリケーションロードバランサー(ALB) のようにターゲットグループで EC2 インスタンスを接続します。
  • 先に作成する時は、プロトコルを「TCP」にします。
  • 試しにプロトコルが「TCP」と「HTTP」の二つのターゲットグループを用意してみると
    図8

  • NLB 作成時にはプロトコルが「TCP」のターゲットグループのみが「利用可能」となります。
    図9

  • プロトコルが「TCP」であっても、他の NLB で使われているターゲットグループは「利用不可」になります。
    図10

AZ 間の振り分け

  • NLB の DNS 名にアクセスしても AZ 間での割り振りはされません。
$ dig nlb-ip-b74c3242c35ad815.elb.ap-northeast-1.amazonaws.com +short
13.115.26.212 ← ap-northeast-1c 側に割り当てられた IP
13.115.3.103 ← ap-northeast-1a 側に割り当てられた IP
  • この状態で NLB の DNS 名へブラウザでアクセスすると、ap-northeast-1c にある EC2 インスタンスにだけアクセスが流れます。
  • ap-northeast-1a にある EC2 インスタンスにアクセスするためには、NLB が持つ同じ AZ の IP アドレスにアクセスする必要があります。

メトリクス

  • NLB には以下のメトリクスがあります
    • ProcessedBytes・・・処理される総バイト数。
    • ConsumedLCUs・・・使用するロードバランサーキャパシティーユニット (LCU) の数
    • NewFlowCount・・・新しいフローの数
    • ActiveFlowCount・・・アクティブなフローの数
    • TCP_ELB_Reset_Count・・・リセット数

さいごに

いかがでしたでしょうか。
私の中では今の NLB をどう使うか、何に使うかが想像できていないので、ひとまずは作成してみてその時につまづいた事、気になった事、気づいた事を書き出してみました。
これから NLB を触ってみようと思っているのでしたら、さらっと目を通しておくといいと思いますよ。