はじめに
今回はIBM Cloudを利用する中でのLoad Balancerの種類をご紹介し、そのLoad Balancerを使ったらパケットがどのように流れるかを図で表現してみました。
Load Balancer(ロード・バランサー)とは
Load Balancerを説明するためには、まずLoad(ロード)についての説明が必要と思います。
例えば、インターネットから各種サーバーにアクセスがあると、サーバーはその機器に搭載されているCPUやメモリーなどのリソースを使って指示を処理しますが、その指示を処理するための準備のことをロードと言います。
処理した結果が利用者のパソコンに送られて、指示内容がブラウザに表示されるため、アクセス数がそこまで多くなく、処理数が少ない場合には問題ないのですが、もしアクセスが特定のサーバーに集中してしまうとブラウザの表示が遅くなったり、重くなる場合があるかと思います。
これはアクセスに対するロードに時間がかかってしまい、準備が遅くなっている状態といえます。
その負荷を上手に調整し、ロードの遅れを解消するようにする仕組みがLoad Balancerです。
つまり、Load Balancerとは、外部からの通信に対するサーバー負荷を複数のリソースに均等に割り振ってくれる機能となります。
IBM Cloudで提供しているLoad Balancerの種類
IBM CloudのVPCでもLoad Balancerは提供されています。VPCのLoad Balancerを使うことにより、VPC上のサーバーにアクセスする際の負荷を均等に分けてくれるようになります。
IBM Cloud VPCのLoad Balancerには二つの種類がありますが、
「Application Load balancer(ALB)」と「Network Load Balancer(NLB)」の2種類です。
こちら二つのLoad Balancerは必要な要件に応じて選択することができ、その違いを明確に把握しておく必要がありますので、その際にはこちらを確認ください。
また、IBM Cloudで提供しているLoadBalancerの種類によってデータパケットの流れが少し変わってきます。
下記は例として、自宅のPCからインターネットを経由してIBM Cloud上に構成したWebサーバーにアクセスする経路を3つ挙げています。その際にLoad Balancerを使わないアクセスや2種類のLoad Balancerを使ったアクセスによって経路が変わります。そのため、ここでは主に送信元と宛先を中心に確認してください。
1. Load Balancerを使わない場合のパケットの流れ
自宅でPCからIBM Cloud上のサーバー(10.x.x.x
)にアクセスする時、送信元となるPCが持つIPアドレス(192.xxx.x.x)はプライベートIPアドレスのため、ルーターによりNATされ、グローバルIPアドレスである124.x.x.xx
に変換されます。そのため、ルーターを介した時点で送信元は変換されるようになります。
IBM Cloud上のサーバーにアクセスする際、宛先となるVPCの仮想サーバーのIPアドレス10.x.x.x
は、サーバーに付与されたReserved IPですが、これはプライベートIPアドレスであるため、まずはグローバルIP(ここでは128.x.x.xx
にしています)を追加してアクセスする必要があります。IBM Cloud VPCに入った時点でVPCのSDN(Software Defined Networking)機能により、宛先がグローバルIPからReserved IPに書き換えられるようになります。この例では、128.x.x.xx
→10.x.x.x
となります。
サーバーから戻る際には今までの流れの送信元と宛先が逆になった形でPCに戻っていくようになります。
つまり、自宅PCからWebサーバーにアクセスした際にWebページが表示されるまでのパケットの流れとしては、PC
→ルーター
→サーバー
→ルーター
→PC
となります。
2. ALBを使ったパケットの流れ
自宅のPCからサーバー10.x.x.x
にALBを使ってアクセスする流れについてです。ALBを使っての通信では、自宅のPCからルーターを経由して送信元が変更される部分(送信元:192.xxx.x.x
→124.x.x.xx
)は同様ですが、宛先はIBM Cloud VPCのSubnetになる点が異なります(今回はSubnet IP Adressを128.x.x.xx
としています)。宛先のSubnet IP128.x.x.xx
に到達すると、そこから宛先がDNAT(Destination Network Adress Translation)によりALBのIP Adressに変更されます(今回ALBのIP Adressは172.x.xx.x
にしています)。ALBを経由する時点で送信元はALBのIP Adressになり、宛先はサーバーのReserved IPに変更され、10.x.x.x
に変更されます。
サーバーから戻る際には今までの流れの送信元と宛先が逆になった形でPCに戻っていくようになります。
つまり、自宅PCからALBを経由してWebサーバーにアクセスした際にWebページが表示されるまでのパケットの流れとしては、PC
→ルーター
→ALB
→サーバー
→ALB
→ルーター
→PC
となります。
3. NLBを使ったパケットの流れ
自宅のPCからサーバー10.x.x.x
にNLBを使ってアクセスする流れについてです。NLBを使っての通信では上記の2パターンと異なり、OutとInが対応して流れません。
まずはPCからサーバーまでの流れですが、サーバーのGlobal IP128.x.x.xx
を追加してアクセスするために、上記2パターンと同様に送信元がPC192.xxx.x.x
からルーターを経由してGlobal IP124.x.x.xx
に変更され、NLBを経由することになります。NLBからサーバーにアクセスする際、宛先がサーバーのGlobal IPからReserved IPに変更(128.x.x.xx
→10.x.x.x
)されます。
PCに戻る際には、NLBではなくHypervisorレベルでNATされるため、送信先が変更(10.x.x.x
→128.x.x.xx
)されるようになり、宛先がPCのGlobal IP124.x.x.xx
になります。その後ルーターを経由してPCに戻るようになります。
つまり、自宅PCからNLBを経由してWebサーバーにアクセスした際にWebページが表示されるまでのパケットの流れとしては、PC
→ルーター
→NLB
→サーバー
→Hypervisor
→ルーター
→PC
となります。