なんかてきとうに

わりと個人的な忘備録的ですよ。

お勉強

ロードバランサ

LinuxのロードバランサにはLVS(Linux Virtual Server)というのがある。

シンプルなつくりになっていて、バーチャルIPアドレス:ポートを用意して、

そのアドレス:ポートに対してアクセスがあれば実際のサーバに転送するというもの。

転送の仕方にはNAT、DirectRouting、Tunnelingがある。セキュリティ的なことも考えるとNATが良いと書いてあったりします。

LVS自体はip_vs.koというカーネルモジュールとして実装されています。

LVSの設定を手動で行う場合は、ipvsadm というコマンドがあります。設定ファイルを書いて自動的に構成するサービスとしてldirectordとkeepalivedがあります。

ipvsadm

ipvsadm コマンドでは、LVSに対して、手動というかipvsadmコマンドを通してバーチャルサーバの設定、バーチャルサーバへの実際のサーバの登録を行います。

サブコマンドとして

  • -A バーチャルサーバの追加

  • -E バーチャルサーバの編集

  • -D バーチャルサーバの削除

  • -C すべてのバーチャルサーバの削除(LVSの初期化?)

  • -a 実サーバのバーチャルサーバへの追加

  • -e 実サーバのバーチャルサーバに対する変更

  • -d 実サーバのバーチャルサーバからの削除

があります。

サブコマンドへのオプションとして

  • -t TCP

  • -u UDP

  • -r 実際のサーバ

  • -w ウェイト

  • -s ロードバランスの方法

  • -m NAT

  • -g DirectRouting

  • -i Tunneling

があります。

ロードバランスの方法は

  • rr RoundRobin

  • wrr Weighted RoundRobin

  • lc LeastConnection

  • wlc Weighted LeastConnection

  • lblc Locality Based LeastConnection

  • lblcr Locality Based LeastConnection with Replication

  • sed Shortest Excepted Delay

  • nq No Queue

  • dh Destination Hash

  • sh Source Hash

があります。

LVSを手動で設定して使っていると、仮に実サーバの1つが停止していても、かまわずそこに通信を振り分けようとしてしまいます。

そこで、サーバが停止したら自動で切り離すことができるのが keepalivedやldirectordです。

keepalivedやldirectordが実サーバに対して定期的に状態を確認し、異常があれば ウェイトを0にしたりしてロードバランスの対象としなくなります。