見出し画像

負荷分散には気を使うことがたくさん!?負荷分散装置の知られざる機能

「仕事を振り分けるのも、いろいろ気を使うものですね…」

はい、こんにちは!松井真也です。シリーズ「私ばかりに仕事が振られる…をなくす技術!?サーバ負荷分散SLBの話」第2回でございます!

前回は、サーバ負荷分散(SLB)の基本的な考え方についてご紹介しました。SLBによって高い拡張性と可用性が確保できるのでしたね。私はどうしても負荷分散装置が仕事を分配する管理職に見えてしまうのですがw。

さて、今回は、SLBの基本機能について深掘りしましょう。大きく分けて3つありますよ。単に仕事を右に左に振り分けではなさそうですよ!

一体、負荷分散装置は何をやっているのでしょうか?早速見ていきましょう!

どうサーバに振り分けるのか?

負荷分散装置(ロードバランサ)は、クライアントから届く様々な要求を複数のサーバ間で効率良く分配する役割を持っているのでしたね。

この最も重要な機能が、「サーバへの振り分け」です。ロードバランサは、クライアントからのリクエストがあるたびに、どのサーバにそのリクエストを割り当てるかを決定する必要があります。でも、何を基準にどのように割り当てるのか疑問が湧いてきますね?

この決定プロセスでは、サーバの現在の負荷やリソース使用状況を考慮することが一般的です。

振り分ける方式には、例えば、DNSラウンドロビン法や最小コネクション法やなどがあります。

最小コネクション法は、最も少ない接続数を持つサーバを選択する方法で、サーバ間の負荷を均等に分散させる効果があります。

一方、DNSラウンドロビン法では、すべてのサーバに対してリクエストを順番に割り振ることで、負荷を分散します。サーバが均等に負荷を受け持つことを目指し、システム全体の効率と耐久性を向上させるのです。

これらの方法は、次々回に詳しく取り扱いましょう。

セッション維持の仕組み

肝心の振り分け以外には一体何をやっているのでしょう。その一つが「セッションの維持」です。

特定のクライアントを同じサーバに継続して接続させることです。クライアントとサーバ間の安定して、その接続を維持できないと困ったことになります。

例えば、オンラインショッピングサイトで買い物かごに商品を追加しているユーザーが、同じサーバに接続され続けることで、買い物かごの情報が失われないようにできます。

セッション維持を実現するためには、クライアントを識別し続ける仕組みが必要ですよね。これには、クッキーやセッションIDの利用することが多いです。これらの情報を通じてクライアントとサーバの接続を一貫して保持します。

また、サーバがダウンした場合でも、他のサーバがそのセッションを引き継げるように、セッション情報を共有データベースに保存することもあるらしいです。

なるほど、セッション維持は大事ですね。

ヘルスチェックの実施方法

負荷分散装置の役割は、こんなものでしょうか。いえいえ、まだまだあります。

稼働していないサーバに仕事を振ってはいけませんよね?ならば、サーバの状態を常に監視しないといけません。このように、問題が発生した際には迅速に対処できるようにすることも、負荷分散装置の重要な機能です。

これを「ヘルスチェック」と呼びます。健康診断みたいな感じですね!

ヘルスチェックは、定期的に各サーバに信号(キープアライブパケット)を送信し、その応答を監視することで、サーバの健全性をチェックします。サーバからの応答がない場合、ロードバランサはそのサーバをダウン状態と判断し、トラフィックを他の健全なサーバに自動的に切り替えます。

実際には、レイヤー単位で健全性をチェックします。

L3レベルは、IPアドレスレベルですから、ICMPパケットでチェックします。L4レベルでは、SYNパケットを送って応答するか確認します。

さらに、L7レベル(アプリケーションレベル)でもチェックが行われることがあります。例えば、HTTPであれば、リクエストとレスポンス(200 OK)を交わすことで、死活を知ることができます。

ただし、L7はICMPなどと異なり、サーバやトラフィックへの負荷が大きいので要注意です。

このようなヘルスチェック機能により、サーバの障害が発生しても、システム全体としては引き続きサービスを提供することが可能になります。


はい、本日はここまで。今回は、負荷分散装置の基本機能として、振り分け機能だけでなく、セッション維持機能やヘルスチェック機能を見てきました。管理職は、裏側っでいろいろ配慮してるのですねw。「同じ仕事はいつもの担当にやってもらおう」とか、「倒れていないだろうか?」とかね。

さて、次回は、さらに負荷分散装置の応用的機能を見ていくことにしましょう。管理職はやることいっぱいなのだ!

では!

いいなと思ったら応援しよう!