ロードバランサー(ヘルスチェック)



※以下書籍はKindle Unlimitedで読めます。

■LinuxとUNIXの違いをわかりやすく解説しています。
※サーバーエンジニアは知っておくべき内容です。

【初心者向け】これだけでLinuxとUNIXの違いがわかる!


■ロードバランサー(LB)をわかりやすく解説しています。
※ネットワークエンジニア、サーバーエンジニアは知っておくべき内容です。

これだけでSNMPがわかる!SNMPの使い方


■SNMPの使い方をわかりやすく解説しています。
※ネットワークエンジニア、サーバーエンジニアは知っておくべき内容です。

これだけでロードバランサーがわかる!


■ChatGPTの使い方をわかりやすく解説しています。

【初心者向け】これだけでわかる!ChatGPTの使い方




■動画でわかりやすく解説してます。








では、今日も授業を始める。今日はロードバランサー(負荷分散装置)のヘルスチェックだ。




ロードバランサーの続きね。




ロードバランサーが、負荷分散対象のサーバーの状態をチェックする「ヘルスチェック」という機能を覚えておこう。




ヘルスチェックは、定期的に分散対象のサーバを監視して、もしサーバがダウンしていたら、そのサーバへは通信を振らなくなる。 その後、そのサーバがヘルスチェックに応答するようになったら、再度負荷分散対象に戻すというものだ。




ヘルスチェックせずに、ロードバランシングすると、通信を振った先のサーバが障害発生中だと通信できなくなっちゃうってことね。




うむ。このヘルスチェックは、負荷分散装置がサーバに対して、常に行っている。設定によるが、通常は数秒間隔でチェックしている。




ヘルスチェックは、負荷分散装置が通信を振る先(負荷分散先)のサーバに対して、通信可能な状態かチェックする機能だが、 L3レベルでのヘルスチェックと、L4レベルでのヘルスチェックと、L7レベルでのヘルスチェックがある。 L3(エルサン)レベルのヘルスチェックでは、負荷分散装置から対象のサーバに対して、ICMPレベルで通信チェックをする。 つまり、ICMP(Internet Control Message Protocol)というプロトコルを利用して、PING(ピング)を送信して ネットワークの疎通性があるかどうかをチェックする方法だが、これはあまり利用されない。




L3やL4やL7のL(エル)は、レイヤーのことだ。




レイヤーって?




階層のことだ。OSI参照モデル(オーエスアイさんしょうモデル)という用語を覚えておこう。 これは、国際標準化機構(ISO)によって策定されたもので、通信するときの機能を7つの階層(レイヤー)に分けて定義している。




7つのレイヤー(階層)があるってことね。




OSI参照モデルを以下の7つのレイヤーに分けて機能を分けている。 つまり、プロトコルを考えるとき、レイヤー7のプロトコルであれば、レイヤー2から6はまったく気にせずに、 レイヤー7のプロトコルの仕様のみを定義すればよい。
第7層:アプリケーション層
第6層:プレゼンテーション層
第5層:セッション層
第4層:トランスポート層
第3層:ネットワーク層
第2層:データリンク層
第1層:物理層




L3はネットワーク層、L4はトランスポート層、L7はアプリケーション層ってことね。




うむ。L3レベルでのヘルスチェックは、PING(ピング)やtraceroute(トレースルート)と同じICMPプロトコルを利用してる。




ロードバランサーのヘルスチェックはL4レベルでのヘルスチェック、 もしくはL7レベルでのヘルスチェックがよく利用される。




L4(エルヨン)レベルのヘルスチェックでは、負荷分散装置から対象のサーバに対して、TCP(ティーシーピー)のプロトコル、 もしくはUDP(ユーディーピー)のプロトコルで、レイヤー4レベルで通信できているかをチェックしている。 どちらでチェックするかは設定できる。




対象サーバのTCPポート番号もしくはUDPポート番号に対して、リクエストを送信して、その対象サーバのポートから応答があるかないかによって、 サーバのアプリケーションが動作しているかどうかをチェックする方法がL4レベルのヘルスチェックだ。




対象サーバからポート応答があるかないかをチェックしているってことね。




うむ。次に、L7(エルナナ)レベルのヘルスチェックは、負荷分散装置から対象のサーバに対して、 対象サーバのアプリケーションが正常に動作しているかまでチェックする方法だ。




どのようにアプリケーションレベルのL7レイヤーの正常性を確認するの?




負荷分散装置から、対象サーバに対して、コマンド(リクエスト)を送信して、 対象サーバからの応答をチェックする。もちろん、対象サーバのアプリケーションによって、コマンドが変わってくる。




負荷分散装置が送れるコマンドは、すべてのアプリケーションに対応しているの?




Noだ。負荷分散装置によって、どのアプリケーションレベルのヘルスチェック(監視)に対応しているかはバラバラだ。 例えば、HTTP、FTP、SMTP、POP3、IMAP4、DNSなどのアプリケーションに対応していたりする。




負荷分散装置がメールサーバに対して、L7レベルでヘルスチェックをする場合、 SMTPコマンドを送って、メールサーバから200番台の正常応答が返ってきたら、正常と判断するようになっている。




L7レベルのヘルスチェックの方がいいよね?だって、L4レベルのヘルスチェックの場合、 サーバのポートは応答を返していても、もし、アプリケーションレベルで障害になっていて、実際はアプリケーションのエラー応答が クライアントに返るってことはないの?




その通りだ。L4で正常でも、アプリケーションがエラーを返すことはある。 L7の方がよい。あとは負荷分散装置が対象サーバのアプリケーションのL7ヘルスチェックに対応しているかどうかだ。 HTTPなどはL7で実装できる。独自のプロトコルでアプリケーションを作っている場合は対応できないこともあるだろう。




あと、L3レベルのヘルスチェックだと、ネットワークは疎通性があるってことは分かるけど、 ポートがダウンしているってこともあるから、あまり利用されないってことね。




では、今日はここまで。




は~い



今回のまとめ

1.ヘルスチェックは定期的に負荷分散対象のサーバを監視

2.ヘルスチェックはチェックに失敗したらそのサーバへ通信を振らなくなる

3.ヘルスチェックはサーバがヘルスチェックに応答するようになったら、再度負荷分散対象に戻す



 次の章へ