あまぶろぐ

インフラと趣味のゆるいブログ

ロードバランサーとNLB

オンプレをメインとしてたころ、私が担当するお客様では導入が少なかった。理由は高価であるからだ。なので、触る機会が少なかった。クラウドをやり始めてからは、導入前提で話が始めることが多い。直近でAWSのNetwork Load Balancer を触る機会が多かったので、備忘として記録する。

ELBとは

AWS上のロードバランシングサービスで2022/04 時点で以下の4つがある。

・Application Load Balancer

・Network Load Balancer

Gateway Load Balancer

・Classic Load Balancer

BlackBeltのELBには、「スケーラブル」「安価な従量課金」「運用管理が楽(マネージドだから)」「豊富な連携機能(i.g Auto Scaling、Route53、Cloud Formationなど)」と記載。今回はELBの中でも Network Load Balancer(NLB)に焦点を当てる。

NLBはIPアドレスが固定

なんらかの理由で、ELBのIPを固定したいとなればNLB一択となる。「なぜ、IPを固定する必要があるか?」をしっかりDive Deepすることは忘れずに。

NLBのスケール

ELBはそれ自体、負荷に応じて自動でスケールする。NLBはスケールする際にもIPアドレスは固定したままである。ALB/CLBはスケールする時はIPが変化する。ですけど、「毎秒数百万のリクエストを処理」となっているので、エンタープライズなお客様でないとスケールには出会わないかも。

ロードバランサーの種類

NLBはレイヤー4に対応するロードバランサーである。プロトコルリスナーは、TCP/UDP/TLSとなっている。しかし、PrivateLinkと連携する時は、TCP/TLSのみのサポートとなる点は注意。

スティッキーセッションもサポート

NLBはスティッキーセッションに対応している。スティッキーセッションとは、「同じユーザから来たリクエストを同じターゲットグループに送信」する機能である。NLBは送信元IPでルーティングするようである。私がAWSを学び始めた時点では未対応だったが、気づいたら対応していた。アップデートは要チェックですね。

コネクションタイムアウト

NLBは固定値で350秒となる。ALB/CLBは、変更可能。

ターゲットグループ

ターゲットグループに、IP/インスタンス/ALBを指定できる。ALBを利用したいが「IPアドレスを固定する必要がある」といった場合に、NLBの裏でALBを利用することができる。

 

NLBを利用してFTPのアクティブモードをバランシングできるのか?

他の方のBlogをみるとパッシブモードの検証は多かったが、アクティブモードが見つからなかったので試してみた。検証環境は以下である。

・2つのVPCを用意して、片方をFTP Server(EC2) + NLB、もう片方をFTP Client(EC2)とした

・EC2はそれぞれ1台である

・2つのVPCはピアリング接続をした

結論はうまくいった。EC2の数を増やしてのテストはしていない。アクティブモードのコントロールコネクションは、FTP ClientからEC2への通信となりこれはNLBでうまく捌いてくれる。気になるのでは、アクティブモードのデータコネクションである。これはFTP ServerからFTP Client宛の通信でありNLBの「バック」から発信される。今回の検証環境ではうまくいったが、EC2の台数が増えた場合に期待通りに動くかはなんとも言えない。

 

参考サイト (わかりやすい)

aws.amazon.com