こいつはシンプルかつ軽量であることが身上のようですが、わりと堅牢なので重宝しています。
で、最近こいつを動的に操作する必要があったので、Perlからコントロールできるように、Net::Balanceというモジュールをこさえてみました。Net-Balance-0.001002.tar.gz [DL]
単純にHTTPをバランシングする場合、
use Net::Balance;
my $balance = Net::Balance->new( listen_port => 80 );
$balance->balance_member( [qw[ 10.0.0.1 10.0.0.2:8080 ] ] );
$balance->run;
とかすればOK。
で、死活監視と組み合わせて、
use LWP::UserAgent;
my $agent = LWP::UserAgent->new;
my @target =
for ( 0 .. $#target ) {
my $node = $target[ $_ ];
my $res = $agent->get( "http://$node/" );
if ( $res->is_success ) {
# 生きてればチャネル有効
$balance->group( 0 )->channel( $_ )->enable;
}
else {
# 死んでればチャネル無効
$balance->group( 0 )->channel( $_ )->disable;
}
}
とかできます。でも、そもそもbalanceにhttpバランシングとかさせると、アクセス元IPが上書きされるのでお勧めできないです。せいぜいミドルウェアサーバやらキャッシュサーバの冗長化に使うくらいのものでしょうか。
0 件のコメント:
コメントを投稿