ロードバランサーと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の台数が増えた場合に期待通りに動くかはなんとも言えない。
参考サイト (わかりやすい)