お勉強
ロードバランサ
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 実サーバのバーチャルサーバからの削除
があります。
サブコマンドへのオプションとして
があります。
ロードバランスの方法は
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にしたりしてロードバランスの対象としなくなります。