負荷分散に keepalived を使う前に知っておくこと(3)

keepalived を使う前に知っておくことについて説明しています。既におおまかな keepalived の概要について説明しました。今回はそもそも keepalived でインフラ負荷分散を構築する上で注意しておくことについて触れます。

keepalived を使う前の注意事項

keepalived は非常に便利なミドルウェアですが、(OSI 参照モデルで言う)Layer 4 のレベルで処理するミドルウェアになります。つまり IP パケットのレベルまでしか見れずそのパケットの中身については特に意識しないということになります。

keepalived が意識する Layer は L7 まで

このことはメリットにもなりデメリットにも成り得ます。IP パケットの中身を見ないということはそれだけ気を使う必要がなくなり処理が高速になります。一方で HTTP レベルの処理は行いません。

通常負荷分散する際にクライアントーサーバ間でセッションを貼るような処理(ユーザログインが必要なページを見る等)を行う場合、毎回クライアントが接続するサーバが異なってしまうとその都度サーバ側はユーザにログインを要求してしまうかもしれません。

多くの負荷分散ミドルウェア(BIG-IP等)では例えばパケットにCookie を自動的に埋め込んでクライアントーサーバ間で毎回同じサーバへ割り振るように実装されています。

このような処理は HTTP ヘッダを解釈する必要がある為、Layer 4 の keepalived(LVS)では行うことができません。

クライアントーサーバ間で同じセッションを実現する為に keepalived(LVS) では IP アドレスによって毎回同じサーバへクライアントを割り振ることが可能です。

ただ、この方法ではクライアントは常に同じサーバへ行く可能性がある(また NAT を使っている場合、そのネットワークのユーザは全員同じサーバへ行く可能性がある)為、負荷分散が偏る可能性があります。

ソースIPベースの分散アルゴリズム

このようなデメリットを持つ keepalived ですが、処理の速度が高速だったり、インストール・管理が簡単だったりとメリットも十分あります。一度試して実感してみるといいでしょう。
 

【お勧め】負荷分散関連の記事

No Comments - Leave a comment

Leave a Reply

Your email address will not be published. Required fields are marked *

*