負荷分散について
負荷分散とは
複数台のサーバに処理を分散させてシステム全体のとしてのスケーラビリティを向上させることを言います。
(スケーラビリティとは拡張可能性のことです。)
負荷分散を考えておけば後々処理が追いつかない状態に陥った場合でもサーバの追加で対応が可能になります。
さらには前回の冗長化の記事でできたホットスタンバイを用いている場合は負荷分散をすることでサーバの有効活用ができます。
負荷分散の方法
負荷分散にはいろいろ方法がありますがこの記事は以下の2通りの方法についてまとめます。
DNSラウンドロビンとは
DNSを利用して複数のサーバで処理を分散させる方法のことです。
(ちなみにDNS(Domain name system)とはドメイン名とIPアドレスの対応を管理するシステムのことです。DNSについての記事はこちら→今後更新予定)
複数の人がDNSにIPアドレスの問い合わせをした場合、それぞれ異なったIPアドレスを返すことで処理の分散を行います。
DNSラウンドロビンのメリット
DNSでの問い合わせのたびに異なるIPを返すだけなので実装が単純である
DNSラウンドロビンのデメリット
- サーバの数だけIPアドレスが必要になる
- 均等に分散できるとは限らない
プロキシサーバ経由でDNSへのアクセスがあった場合、一度IPアドレスの問い合わせ後一定時間キャッシュに保存されるので、1つのIPアドレスに集中してしまう可能性がある。 - サーバがダウンしていてもアクセスがいってしまう
DNS自体はサーバの状態に関係なく負荷分散をおこなってしまうため。
ロードバランサとは
ロードバランサではDNSラウンドロビンとは異なり1つのIPアドレスに対するリクエストを複数のサーバへ分散することができます。
具体的にはロードバランサ自体がサービス用のグローバルアドレスを持った仮想的なサーバとして動作する。
ロードバランサにきたリクエストを本物のWebサーバへ中継することによりロードバランサ自体がWebサーバであるかのように振る舞う。
ロードバランサのメリット
- グローバルIPアドレスの節約ができる
- ダウンしているサーバにアクセスがいかない
ロードバランサはサーバに対してヘルスチェック(サーバがダウンしていないかの確認)してからサーバの選択を行う。
ロードバランサのデメリット
終わりに
今回の記事では負荷分散に関する内容をまとめてみました。
実際の環境でDNSラウンドロビン・ロードバランサについてそれぞれの仕組み・メリット・デメリットを比較しどれを使うか判断しましょう。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
この記事はほぼサーバなどを触ったことがない人物が学んだことを整理するために書いていますので間違いなどが多々あると思います。間違いなどありましたら是非コメントなどで教えていただけると幸いです。