BusyBox(ESXの下)を実行している2つのVMがあります。これらのマシンは、ロードバランサーとしてのみ機能します。
ペンを使用して、正常に動作している各マシンで負荷分散を行っています。しかし、vrrpdを起動すると、pingは機能しますが、他には何も機能しません。
各ロードバランサーには3つのインターフェイスがあります。管理IPはeth0にあり、eth1は2番目のロードバランサーセットアップ用です。
LBCO102A
10.3.16.96 - (eth0) Management IP
10.3.16.84 - (eth2) IP that pen uses
LBCO102B
10.3.16.94 - (eth0) Management IP
10.3.16.85 - (eth2) IP that pen uses
vrrpdは10.3.16.58を使用します
LBCO102Aでは、vrrpdを起動するために以下を使用しています。
vrrpd -i eth2 -v 58 -p 100 10.3.16.58
LBCO102Bでは、vrrpdを起動するために以下を使用しています。
vrrpd -i eth2 -v 58 -p 50 10.3.16.58
ポート80で問題なくIP10.3.16.84および10.3.16.85に接続できます。管理IP10.3.16.94および10.3.16.96に問題なく接続できます。 10.3.16.58に接続すると、タイムアウトになります。/var/run/messagesファイルには、一方がマスターでもう一方がマスターでないことを除いて、何も表示されません。
Vrrpdがping以外のトラフィックをプッシュしない理由について誰かが何か考えを持っていますか?私はこれらのセットアップのうちの3つを持っています。 1つはpop3に、もう1つはsmtpに、もう1つはhttpにあります。それらのどれもping以外には機能しません。
これがnetstatです-LBCO102Aのan
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 10.3.16.107:110 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:9999 0.0.0.0:* LISTEN
tcp 0 0 10.3.16.84:80 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8888 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8889 0.0.0.0:* LISTEN
tcp 0 0 10.3.16.107:110 10.3.17.30:53960 TIME_WAIT
tcp 0 0 10.3.16.96:22 10.3.30.154:1224 ESTABLISHED
tcp 0 0 10.3.16.107:110 10.3.17.30:54000 TIME_WAIT
tcp 0 0 10.3.16.107:110 10.3.17.30:54102 TIME_WAIT
tcp 0 0 10.3.16.107:110 10.3.17.30:54038 TIME_WAIT
tcp 0 0 10.3.16.107:110 10.3.17.30:53959 TIME_WAIT
tcp 0 0 10.3.16.107:110 10.3.17.30:54001 TIME_WAIT
tcp 0 0 10.3.16.107:110 10.3.17.30:54101 TIME_WAIT
tcp 0 0 10.3.16.96:22 10.3.30.154:1097 ESTABLISHED
tcp 0 0 10.3.16.107:110 10.3.17.30:54037 TIME_WAIT
raw 0 0 0.0.0.0:112 0.0.0.0:* 0
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 7 [ ] DGRAM 983 /tmp/log
unix 2 [ ] DGRAM 1156708
unix 2 [ ] DGRAM 1156657
unix 2 [ ] DGRAM 1156524
unix 2 [ ] DGRAM 192729
unix 2 [ ] DGRAM 994
これがnetstatです-LBCO102Bのan
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:9999 0.0.0.0:* LISTEN
tcp 0 0 10.3.16.85:80 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8888 0.0.0.0:* LISTEN
tcp 0 0 10.3.16.94:22 10.3.30.154:1118 ESTABLISHED
raw 0 0 0.0.0.0:112 0.0.0.0:* 0
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 6 [ ] DGRAM 981 /tmp/log
unix 2 [ ] DGRAM 188253
unix 2 [ ] DGRAM 179316
unix 2 [ ] DGRAM 179306
unix 2 [ ] DGRAM 988
これが私の起動スクリプトにあるものです。 (開始/停止/再起動をチェックするスクリプトにはさらに多くのものがあります)LBCO103A
echo -n "Starting eth2: "
ifconfig eth2 10.3.16.84 netmask 255.255.255.0 up
echo "OK"
echo -n "Starting vrrp-ascossrs101: "
vrrpd -i eth2 -v 58 -p 100 10.3.16.58
echo "OK"
echo -n "Starting pen-ascossrs101: "
/bin/pen -C 8888 -X -l /var/log/ascossrs101.log -p /var/log/ascossrs101.pid 10.3.16.84:80 10.3.16.56:80 10.3.16.57:80
echo "OK"
LBCO102B
echo -n "Starting eth2: "
ifconfig eth2 10.3.16.85 netmask 255.255.255.0 up
echo "OK"
echo -n "Starting vrrp-ascossrs101: "
vrrpd -i eth2 -v 58 -p 100 10.3.16.58
echo "OK"
echo -n "Starting pen-ascossrs101: "
/bin/pen -C 8888 -X -l /var/log/ascossrs101.log -p /var/log/ascossrs101.pid 10.3.16.85:80 10.3.16.56:80 10.3.16.57:80
echo "OK"
私はペンを使ったことがないので、どのように機能するのかよくわかりませんが、役立つかもしれません。
Netstat -anを実行して、出力を提供できますか?私の推測では、ペンはeth2 IPにバインドされており、ボックス上のすべてのアドレスではありません。ボックスが所有するすべてのアドレスを取得するように0.0.0.0に構成する必要があります。または、vrrpdマスタースクリプトを実行して、ペンをVIPにバインドする必要があります。発生する可能性があるのは、masterscriptが、vipがeth2インターフェイスにバインドされることを期待するように構成済みのペン自体を起動する必要があることです。
Netstat出力で今すぐ編集:Okだからここに問題があります:LBCO102A tcp 0 0 10.3.16.84:80 0.0.0.0:*聞く
10.3.16.84:80は、ポート80で10.3.16.84にのみバインドされていることを意味します。したがって、サーバーにVIPがある場合でも、10.3.16.58ポート80をリッスンしていません。
繰り返しますが、私はペンにそれほど精通していませんが、渡される最初のIPアドレスがバインドであると仮定します:/ bin/pen -C 8888 -X -l /var/log/ascossrs101.log -p/var/log/ascossrs101 .pid 10.3.16.84:80 10.3.16.56:80 10.3.16.57:80は、/ bin/pen -C 8888 -X -l /var/log/ascossrs101.log -p /var/log/ascossrs101.pid0.0になります。 0.0:80 10.3.16.56:80 10.3.16.57:80
0.0.0.0:80は、ボックス上のすべてのアドレスとすべてのインターフェイスにバインドすることを意味します。
他の代替手段は、次を使用することです。/bin/pen -C 8888 -X -l /var/log/ascossrs101.log -p /var/log/ascossrs101.pid 10.3.16.58:80 10.3.16.56:80 10.3.16.57 :80
ただし、プログラムの起動時にVMにはそのIPアドレスがないため、ペンが明示的にバインドできないため、これがそのまま機能するかどうかは疑問です。試してみました。 vrrpdのドキュメントを見ると、これができるかどうかはわかりませんが、freevrrpにはmasterscriptオプションがあり、VIPを引き継ぐときに基本的にスクリプトを実行します。したがって、起動するコマンドを追加するだけです。マスタースクリプトの一部としてペンを使用するため、ボックスがVIPの所有権を取得すると、ペンが起動され、VIP IPアドレスにバインドされます。
わかりました、私は今すべてが機能していると思います。これは、@ Kevinから入手したものと、ネットで見つけたものの組み合わせでした(vrrpdについてはほとんどありません)。
Vrrpd firesがサーバーにIPをリッスンするように指示しているように見えるので、IPとのインターフェースを開始したくありません。インターフェイスには、vrrpが使用するIPではなく、IPが必要です。
次の問題は、vrrpdが使用していたIPとは異なるIPでペンを使用していたことでした。最終的に、すべてのIPのポート80のすべての接続にペンがリストされました。これを行わないと、ペンが起動し、マシンがマスターロードバランサーでない場合、探しているIPが存在しないため、ペンは停止します。
別のIPアドレスでペンをリッスンしてセットアップし、vrrpdがその前にある別のロードバランサーであると想定しました。 vrrpdはIPを起動して閉じるだけであることがわかりました。
だから私がこれで終わったことを要約すると。
LBCO102A
10.3.16.96 - eth0 (Management IP)
10.3.16.148 - eth1
LBCO102B
10.3.16.94 - eth0 (Management IP)
10.3.16.149 - eth1
次に、両方のマシンのvrrpdが10.3.16.58アドレスで構成され、両方のマシンのペンが0.0.0.0で構成されます。
まだまだテストが必要ですが、ペンをデバッグモードで実行し、/ var/run/messagesファイルを監視しています。アクティブノードでvrrpdを再起動すると、パッシブになり、新しいアクティブノードにトラフィックが表示され始めます。 。時間はわかりますが、それは有望に見えます。
ここで推測してください。同じサブネット上に2つのインターフェースがあることと混同している可能性があります。管理ネットワーク用に別のサブネットを作成してみてください。