X



2ch特化型サーバ・ロケーション構築作戦 Part20

■ このスレッドは過去ログ倉庫に格納されています
1root▲ ★
垢版 |
NGNG
2ch特化型サーバ・ロケーション構築作戦のスレッドです。

・2ちゃんねるのサーバロケーション、PIEに関する関連作業・調整事項
・DNS登録・変更まわりの関連作業・調整事項
・2ちゃんねるのサーバで採用しているOS、FreeBSDに関する情報・調整事項
・各種作戦・プロジェクトとの連携、プロジェクト間の連携

等を取り扱います。

現在、複数サーバによる連携により、
サーバ能力のさらなるスケールアップをめざすための「雪だるま作戦」が進行中です。

また、次世代の携帯アクセス環境をめざした「べっかんこ作戦」も稼動しはじめました。
「2ちゃんねる証券取引所」や、「Be」の機能強化等、
2ちゃんねるは今日も変化し続けています。

前スレ:
2ch特化型サーバ・ロケーション構築作戦 Part19
http://qb5.2ch.net/test/read.cgi/operate/1121886018/
2006/03/06(月) 01:01:10ID:TRDAxHBs0
ううむ、スクリプトの保守性の観点からは、そっちの修正は避けたいような。
NGNG
やっぱそうですよねえ。
phpのバイナリをDocumentRoot以下に置いてmod_actionsを使えば
#!/usr/bin/phpを加えないことも出来るらしいですけど
よくわからなかったです
2006/03/06(月) 01:35:14ID:h99sgkTx0
あと、考えられるのは、
実は読ませるだけでバックエンドがおなかいっぱい、という線か。
これは、ABあたりで負荷実験すればわかるのかもなと。
2006/03/06(月) 07:19:20ID:KQ9ghXhB0
同一鯖上でポート番号変えて PHP 専用 httpd を立ち上げて,
mod_proxy でそっちに渡すって方法もありますけどね.

今は単に話が出てるだけというレベルですが,将来的には静的コンテンツはマルチスレッドプロセス,
PHP や mod_perl のような動的コンテンツはシングルスレッドプロセス,にそれぞれ
振り分けて処理するような MPM も作ったらどうか,みたいな話もあるようで.
321root▲ ★
垢版 |
2006/03/06(月) 11:23:54ID:???0
フロントエンドでも、これ出まくりでした。

Mar 5 06:19:27 <0.2> tiger2523 kernel: calcru: runtime went backwards from 2895751 usec to 2895627 usec for pid 34379 (httpd)
Mar 5 06:19:27 <0.2> tiger2523 kernel: calcru: runtime went backwards from 2870536 usec to 2870519 usec for pid 34349 (httpd)
Mar 5 06:19:27 <0.2> tiger2523 kernel: calcru: runtime went backwards from 10355073 usec to 10354983 usec for pid 68917 (httpd)
Mar 5 06:19:27 <0.2> tiger2523 kernel: calcru: runtime went backwards from 2671023 usec to 2670785 usec for pid 35714 (httpd)
Mar 5 06:19:27 <0.2> tiger2523 kernel: calcru: runtime went backwards from 2803103 usec to 2801908 usec for pid 35711 (httpd)
Mar 5 06:19:27 <0.2> tiger2523 kernel: calcru: runtime went backwards from 2758074 usec to 2758009 usec for pid 35468 (httpd)
Mar 5 06:19:27 <0.2> tiger2523 kernel: calcru: runtime went backwards from 2895751 usec to 2895627 usec for pid 34379 (httpd)
Mar 5 06:19:27 <0.2> tiger2523 kernel: calcru: runtime went backwards from 2870536 usec to 2870519 usec for pid 34349 (httpd)
Mar 5 06:19:27 <0.2> tiger2523 kernel: calcru: runtime went backwards from 10355073 usec to 10354983 usec for pid 68917 (httpd)

パッチ当てていないので、当然といえば当然かなと。
つまり、フロントでも初めて負荷が問題になった形。

で、これが出ると暴走状態になるという線は、ありうるのかもなと。
322root▲ ★
垢版 |
2006/03/06(月) 11:25:49ID:???0
>>320
なるほど、ここの過去ログでもどこかで話した、
コンテンツの種別ごとの分業を図る路線ですか。
323root▲ ★
垢版 |
NGNG
live22の虫再現試験の最中ですが、
banana403 / banana404 のリブートテストいきます。

これをクリアしたら、live22x も matd 環境へと。
324root▲ ★
垢版 |
NGNG
同じ状態に陥ったですね(うまく落ちない)。

リブート要請いきます。
325root▲ ★
垢版 |
NGNG
リブート依頼出しました。

matd が上がっていると、だめなのかな。
326root▲ ★
垢版 |
NGNG
リブートいただきました。

もう1回テストしてみるです。
こんどは先に、matd を切ってから。
327root▲ ★
垢版 |
NGNG
heartbeat を切って、切り替わったのを確認してから
reboot コマンドを入れました。

が、状況は同じ模様。ううむ。

再度、リブート要請。。。
328root▲ ★
垢版 |
NGNG
リモートコンソールを見ると、rebooted by だれだれ は出ていて、
プロセスは切れているみたいですが、その先にいかない模様。

つまり、ファイルシステムのsync等のシャットダウンプロセスにいかない状態。
(なので強制リブート時にはfsckが動く)

ううむなぜだ。
NGNG
今は、6.0-RELEASE-p5まで上がってますけど
banana403も同じですか?
330root▲ ★
垢版 |
NGNG
元に戻ったのを確認して、banana404 (待機側)でテスト。

まずは heartbeat を切ってから。
ちゃんとリブートかかった。
331root▲ ★
垢版 |
NGNG
>>329
ちょっと古いですね。
そのへんに虫がいるとかですかね。
332root▲ ★
垢版 |
NGNG
%uname -a
FreeBSD banana403.maido3.com 6.0-RELEASE-p4 FreeBSD 6.0-RELEASE-p4 #2: Mon Feb 20 23:46:08 PST 2006 root@banana403.maido3.com:/var/src/sys/i386/compile/I386_BANANA_60_FXP i386
333root▲ ★
垢版 |
NGNG
今度は、heartbeat を切らないでリブートテスト。< 404
334root▲ ★
垢版 |
NGNG
切れませんね。< 404
syslog の exit メッセージもないので、プロセスを切るところでしくっていると推測。

heartbeatが悪さをしているのか。
しばらく待ってだめなら、再度、要請へと。
NGNG
>>331
まぁ、最新版にしてどうなるかって感じだけですけど。
336root▲ ★
垢版 |
NGNG
要請しました。

上がったことを確認したら、
しばらく本業するので、実験はいったん中断で。
337root▲ ★
垢版 |
NGNG
とりあえず、このへんか。

%ps axww | grep heart
567 ?? Ss 0:00.52 heartbeat: heartbeat: master control process (heartbeat)
573 ?? I 0:00.00 heartbeat: heartbeat: FIFO reader (heartbeat)
574 ?? S 0:00.04 heartbeat: heartbeat: write: ucast vr0 (heartbeat)
575 ?? I 0:00.01 heartbeat: heartbeat: read: ucast vr0 (heartbeat)
576 ?? S 0:00.09 heartbeat: heartbeat: write: ping 206.223.150.1 (heartbeat)
577 ?? S 0:00.05 heartbeat: heartbeat: read: ping 206.223.150.1 (heartbeat)
669 ?? I 0:00.01 sh -c /usr/local/lib/heartbeat/ipfail
672 ?? S 0:00.10 /usr/local/lib/heartbeat/ipfail

matd ということも考えられなくないけど(こっちは別途検証で)。
338root▲ ★
垢版 |
NGNG
上がりました。< banana404

元に戻ったはず。< www2

いったん、実験終了で。
339root▲ ★
垢版 |
NGNG
> + fixed a shutdown hang problem

ふうむ。こんなことが書いてあるあたり、、、。

# しばらく本業モード。
340root▲ ★
垢版 |
NGNG
heartbeat捨てて、BSD流にしてみるとか。
http://www.countersiege.com/doc/pfsync-carp/

ぼちぼちってかんじで。
341root▲ ★
垢版 |
NGNG
リブートの中の人がオンラインな間に、>>340 の準備だけしておこう。
カーネル入れ替えとリブート必要につき。
342root▲ ★
垢版 |
NGNG
banana404 準備工事完了。
banana403 とりかかり中。
343root▲ ★
垢版 |
NGNG
heartbeat を切って、
banana404 に切り替わったことを外から確認して、
banana403 をリブート中。

やはりheartbeatがいなければ、正しくリブートする模様。
344root▲ ★
垢版 |
NGNG
リブート完了。

数分のうちに、再度切り替わりが起こる予定。
345root▲ ★
垢版 |
NGNG
切り替わりを確認。

matd の立ち上げなおしのタイミングが問題なのか。
これは、あとで調整しよう。
346root▲ ★
垢版 |
NGNG
# CARP and PFSYNC
device carp
device pf
device pflog
device pfsync

このへんを追加してカーネルを作り直して、リブート。< 403/404
バージョンも更新。

%uname -a
FreeBSD banana403.maido3.com 6.0-RELEASE-p5 FreeBSD 6.0-RELEASE-p5 #1: Sun Mar 5 23:07:35 PST 2006 root@banana403.maido3.com:/var/src/sys/i386/compile/I386_BANANA_60_FXP_CARP_PFSYNC i386
347root▲ ★
垢版 |
NGNG
FreeBSD でも 5.4R ぐらいから使えると。

ここが本家か。

PF: Firewall Redundancy with CARP and pfsync
http://www.openbsd.org/faq/pf/carp.html

これ読めと。
348root▲ ★
垢版 |
2006/03/07(火) 04:57:18ID:???0
Apache 2.0.55 + 1:1 スレッドでも初めて暴走を観測。

top で見ると、ucond という状態だった。
これは、例の虫を踏んだ時に(1:1スレッドで)出るものと同じ。

gdbでトレースすると、こんな感じだった。

(gdb) where
#0 0x283b04d3 in _umtx_op () from /lib/libc.so.6
#1 0x2836d066 in _thread_bp_death () from /usr/lib/libthr.so.2
#2 0x2836c5bd in pthread_cond_destroy () from /usr/lib/libthr.so.2
#3 0x28329a2d in apr_thread_cond_wait ()
from /usr/local/lib/apache2/libapr-0.so.9
#4 0x080688b7 in ap_queue_info_wait_for_idler ()
#5 0x080666bd in listener_thread ()
#6 0x283277e8 in dummy_worker () from /usr/local/lib/apache2/libapr-0.so.9
#7 0x2836c05d in pthread_create () from /usr/lib/libthr.so.2
#8 0x00000000 in ?? ()
(gdb)
2006/03/07(火) 07:02:02ID:q93JOKKF0
>>348
>#2 0x2836c5bd in pthread_cond_destroy () from /usr/lib/libthr.so.2
>#3 0x28329a2d in apr_thread_cond_wait ()

これが不可解ですね.
----[thread_cond.c]---------------------------------------------------
APR_DECLARE(apr_status_t) apr_thread_cond_wait(apr_thread_cond_t *cond,
                                               apr_thread_mutex_t *mutex)
{
    apr_status_t rv;

    rv = pthread_cond_wait(&cond->cond, &mutex->mutex);
#ifdef PTHREAD_SETS_ERRNO
    if (rv) {
        rv = errno;
    }
#endif
    return rv;
}
----------------------------------------------------------------------
なぜ apr_thread_cond_wait() 中で pthread_cond_destroy() されるのか......
350root▲ ★
垢版 |
NGNG
pingかかるまではできたけど、matdは応答せず。
ANY で listen している ssh には 206.223.150.96 で繋がったので、
matd の問題、、、なのか。(一応matdのリスタートはしてみました)

何か、設定間違った or 足りないのかなと。

fxp0: 外向けI/F
vr0: 直結I/F

あらかじめbanana403とbanana404で、/etc/pf.confに、
# for MAT/CARP/PFSYNC
pass quick on vr0 proto pfsync
pass on fxp0 proto carp keep state

と書いておく。そのうえで、とりあえず以下を手で実行。

banana403 as master:
# sysctl -w net.inet.carp.preempt=1
# ifconfig pfsync0 syncdev vr0
# ifconfig pfsync0 up
# ifconfig carp1 create
# ifconfig carp1 vhid 1 pass mugyu 206.223.150.96 255.255.255.0

banana404 as standby:
# sysctl -w net.inet.carp.preempt=1
# ifconfig pfsync0 syncdev vr0
# ifconfig pfsync0 up
# ifconfig carp1 create
# ifconfig carp1 vhid 1 pass mugyu advskew 128 206.223.150.96 255.255.255.0
351root▲ ★
垢版 |
NGNG
carp1 はいわゆる cloned interface だったりするので、
そのへんの問題、、、。かも。

例えば pcap で捕捉がうまくできてないとか。
352root▲ ★
垢版 |
NGNG
net/ip_carp.c を見ると、BPFには対応しているっぽいですね。

fxp0 と carp1 の所属するネットワークがまったく同じだと、
carp1 にアタッチしたくても、fxp0 になってしまうとか、、、。なのかな。

いずれにせよ、落ち着いて見てみる感じで。
353root▲ ★
垢版 |
NGNG
あ、、、ipf.rules で、

block in quick proto tcp from any to 206.223.150.96 port = 80

って書いてあるのが原因かも、かも。

今は時間とれないので、あとでこれを解除してから。
2006/03/07(火) 15:54:25ID:dFav5BAk0
>>353 carp1 に行く前に fxp0 段階で block されてしまってるってことかな.

block in quick on carp1 proto tcp from any to 206.223.150.96 port
2006/03/07(火) 15:59:52ID:dFav5BAk0
>>354 ミス......

block in quick on carp1 proto tcp from any to 206.223.150.96 port = 80

とかにすればいいんですかね.carp1 に対して ipf が機能するのかどうかはわかりませんが......
356root▲ ★
垢版 |
2006/03/07(火) 19:33:19ID:???0
>>355
なるほど。

あとで、やってみるです。
357root▲ ★
垢版 |
2006/03/07(火) 19:34:32ID:???0
で、なんか素の状態で、

net.inet.carp.arpbalance Balance local traffic using ARP. Disabled by default.

って書いてあったりします。

…バラ色の未来?
2006/03/07(火) 19:53:04ID:q93JOKKF0
>>357 それは......前 LVS で苦しんで代替手段を探してた時にもあったと思いますが,
carp でのロードバランスが有効なのは同一セグメント内だけですね.

http://www.freebsd.org/cgi/man.cgi?query=carp
  Note: ARP balancing only works on the local network segment. It cannot
  balance traffic that crosses a router, because the router itself will
  always be balanced to the same virtual host.
359root▲ ★
垢版 |
2006/03/07(火) 20:05:08ID:???0
>>358
いや、banana403 と banana404 を両方稼動させられるんじゃないかなって。
360root▲ ★
垢版 |
2006/03/07(火) 20:06:03ID:???0
…いや、甘いかな。

いずれにせよ、まずはベーシックな状態が動かないと。
2006/03/07(火) 20:10:13ID:q93JOKKF0
>>359 あぁ,上の方で言ってた Active + Active ってやつですか.
362root▲ ★
垢版 |
NGNG
>>361
ですね。

いずれにせよ、>>360 かなと。

# 本業的にはいよいよ「地獄の3月(前からわかっていたけど)」だったりしますが、、、。
2006/03/07(火) 22:48:05ID:UDmnREK70
>>353
pfとipfって共存できるすかね。
今回はセッションの同期はないので、pfsyncは必要ないと
思うのですがどうなんでしょ。

>>355
>>347 のURLの下の方にあるRuleset Tipsに"Filter the physical interface"と
あるので、sampleをもとにするとpfでは、
pass in on fxp0 inet proto tcp from any to carp0 port 80
なんでしょうかね。

きりわけのため、filterは全部とっぱらってやるのがよいのでは。
2006/03/07(火) 22:58:32ID:UDmnREK70
>>357
arpbalanceっていうのがどういうものかわかりませんが、
たぶん、以下URLのGLBP相当ではないかと。

http://www.cisco.com/japanese/warp/public/3/jp/product/hs/switches/cat6500/prodlit/pdf/Campus_Design.pdf

フロー毎にルータがarp requestを投げてくれるのなら、
load balanceできそうですが、普通はそんなことないと思うので、
1台しかルータがつながっていないのならできないと思います。

365363
垢版 |
2006/03/07(火) 23:38:41ID:UDmnREK70
すみません、matdではpcapでパケットを取り出しているから、
パケットを捨てるために、passでなくblockなんですね。
# なんか、まだ勘違いしていそう。
366root▲ ★
垢版 |
2006/03/08(水) 00:44:05ID:???0
>>363
なるほど、carp だけでいけるということですか。

>>364
ふむむ。
まずは、やってみるです。

>>365
そういうことですね。
2006/03/08(水) 00:49:29ID:HXtyBT9H0
6.1には間に合いそうにないからそれ以降に入ってくるかな


標準Cライブラリの最新版「glibc 2.4」リリース
ttp://pcweb.mycom.co.jp/news/2006/03/07/342.html
368root▲ ★
垢版 |
2006/03/08(水) 01:14:31ID:???0
ふうむ、

carp1に、普通にbind()することはできる。
でも、tcpdump -i carp1 とやっても、何も出ない。
つまり、bpf (つまりlibpcap)ではcarp1は捕捉できないらしい、、、。
369root▲ ★
垢版 |
2006/03/08(水) 01:20:16ID:???0
なるほど、、、。206.223.150.96 宛てのパケットは、fxp0 に到着するのか。
ううむ。
370root▲ ★
垢版 |
2006/03/08(水) 01:21:08ID:???0
input_if=fxp0

なんて、matd.cf に書けると、うれしかったりするのかな。
2006/03/08(水) 01:28:21ID:noNce3Mj0
>>367
glibcを搭載したFreeBSDというと、Debian GNU/kFreeBSDですか?
http://www.debian.org/ports/kfreebsd-gnu/
372root▲ ★
垢版 |
2006/03/08(水) 01:45:11ID:???0
…しかし、>>370 なんてできるんだろうか。

それはとりあえず、おいておいて。
状況をダンプ。

まず、pfsync は確かに必要ありませんでした。
CARP だけで、ちゃんと VRRP のパケット出して通信できているっぽい。

で、CARP でサービス用IPアドレスを carp1 とかにつけると、
こういう状態になる。

fxp0: 206.223.150.95
carp1: 206.223.150.96

しかし、この状態において 206.223.150.96 宛てのIPパケットは、
carp1 ではなく、fxp0 I/F に到着する。

つまり、206.223.150.96 宛てのパケットは、
tcpdump -i carp1 では何一つ拾うことはできなくて、
tcpdump -i fxp0 としなければならない。

ということで、pcap でパケットを拾う場合も、
carp1 からではなくて、fxp0 から拾わなければならない。

しかしどうも、matd は carp1 からパケットを拾おうとしているらしく(自然な動作ですが)、
何一つ拾い上げてくれないので、当然 matd は今のままでは動かない。
373root▲ ★
垢版 |
2006/03/08(水) 01:49:10ID:???0
ふうむ、内部的には lo0 みたいな扱いみたいですね。< carpのI/F

%tcpdump -i carp1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on carp1, link-type NULL (BSD loopback), capture size 96 bytes

とか、言ってきます。

で、実際のパケットはcarp1には来なくて、fxp0(物理I/F)にやってくるのか。

ということで、
ifconfig fxp0 alias 206.223.150.96 というのと同じようにふるまうけど、
I/F の名前は carp1 になるってかんじなんですね。

まぁ、だからサービス用の(shared)IPアドレスを作る、
みたいな芸当ができるんでしょうけど。

ということで、本日のところはこれで。
374root▲ ★
垢版 |
2006/03/08(水) 01:52:26ID:???0
なんか、matd で飛ばした後のパケットみたい。

lo0 についているIPアドレス宛てのパケットなんだけど、
やってくるI/Fはem0からみたいな。

本日はこれで、おやすみなさい。
2006/03/08(水) 07:18:03ID:g3dN2pfL0
う〜む......

>>370
>input_if=fxp0
>なんて、matd.cf に書けると、うれしかったりするのかな。

そうできるように修正することは可能だとは思いますが,そうなると別の問題が......
carp1 なら待機中はちゃんとお休みしてくれるのでしょうけど,一方 fxp0 で
パケットキャプチャすると,待機中つまりパケットの転送をしてはならない時まで
パケットを拾って転送してしまうことになるかも知れないですね.その I/F に
対して付されていない IP アドレス宛のパケットをキャプチャするとなると
promiscuous モードにすることになりますが,そうなると全部拾っちゃいますからね.
2006/03/08(水) 07:29:08ID:svlzFNIW0
load balancingしたいなら、これでいけるのでは?
IncomingとOutgoing両方できるみたいだし。

Address Pools and Load Balancing
http://www.openbsd.org/faq/pf/pools.html


2006/03/08(水) 07:31:17ID:f67uB7NwO
ファイヤーウォールってパケットの行き先設定出来なかったっけ?
2006/03/08(水) 10:53:16ID:Lic7Z5nK0
>>376 それは NAT では?


要は carp を使った場合の問題というのは,fxp0 とは別に carp1 などの別 I/F を
用いることになる,しかもそちらではパケットキャプチャが機能しないってことなんですよね.
別 I/F を用いず fxp0 自体でフェイルオーバできればよさそうなんですけど.
で,こういうものもあるようですが......

http://www.freshports.org/net/freevrrpd/
freevrrpd is a VRRP (Virtual Router Redundancy Protocol) implementation
daemon under FreeBSD, NetBSD and OpenBSD.
379root▲ ★
垢版 |
2006/03/08(水) 11:06:00ID:???0
>>375 >>378
ふむふむ。

VRRPの実装はいくつかあるようですので、
そのへんをあたってみるです。

ようは、
> 別 I/F を用いず fxp0 自体でフェイルオーバできればよさそうなんですけど.

を満たすうまい仕組みがあるとよいということですか。

今のheartbeatも悪くなさげなんですが、gracefulにシャットダウンできないというのは、
いざ事故が起きた時の動作が問題になりそうなので、フェイルオーバーの意味がちと、、、。
2006/03/08(水) 11:30:29ID:93a4Fhsb0
freevrrpdは本家のMLにたまに話が出てきますが、
もうメンテされてないというようなレスがつくのがオチだった気がします。
最近だと
ttp://lists.freebsd.org/pipermail/freebsd-net/2006-February/009899.html
とか。
2006/03/08(水) 20:24:39ID:g3dN2pfL0
>>380 う〜む......

>>379 2.0.4 が出たばかりのようですが,これはどうなんでしょう......
http://linux-ha.org/download/index.html#2.0.4
Stable release 2.0.4 (Mon Feb 27 10:09:15 MST 2006)
2006/03/08(水) 21:42:12ID:/mw5TJE20
>>375
ユーザトラフィックのパケットは仮想MACあてなので、
スイッチを使っていれば、Master側のI/Fにしか届かない
はずなので、両方で転送することはないんじゃないかと思います。

# 仮想MACはユニキャストアドレスでした。

あと、>>79 のようにできればよいのかなと思うのですが、
CARPでもできるかは知らないです。
383root▲ ★
垢版 |
2006/03/09(木) 00:22:40ID:???0
>>381
ports にあるやつそのままだったりするですね。
1.2.3 かな。

2.x はまだ試していないです。
384root▲ ★
垢版 |
2006/03/09(木) 00:50:15ID:???0
で、>>375 を改めてじっくり読んでみると、
もしcarp環境でも、promiscにしないでfxp0から拾えれば問題ないようにも思えたり。
2006/03/09(木) 07:08:50ID:8Notc15N0
>>382
>ユーザトラフィックのパケットは仮想MACあてなので、
>スイッチを使っていれば、Master側のI/Fにしか届かない
>はずなので、両方で転送することはないんじゃないかと思います。

>>384
>もしcarp環境でも、promiscにしないでfxp0から拾えれば問題ないようにも思えたり。

non-promiscuous モードで tcpdump 使って carp1 宛のパケットを fxp0 で拾える,
そして standby 状態では拾わない,ということならそれで Ok でしょうね.
386root▲ ★
垢版 |
2006/03/09(木) 12:11:51ID:???0
>>350
> banana403 as master:
> # sysctl -w net.inet.carp.preempt=1
> # ifconfig pfsync0 syncdev vr0
> # ifconfig pfsync0 up
> # ifconfig carp1 create
> # ifconfig carp1 vhid 1 pass mugyu 206.223.150.96 255.255.255.0

これの動作ですが、

> # ifconfig carp1 vhid 1 pass mugyu 206.223.150.96 255.255.255.0

の時点で、自動的に fxp0 が promiscuous mode になるようです。
そういう実装なのか。

で、
fxp0: promiscuous mode enabled
arp_rtrequest: bad gateway 206.223.150.97 (!AF_LINK)

というシステムメッセージが出ます。(2行目がやや気になる)

手でオフにする際には、

ifconfig carp1 down
ifconfig carp1 destroy

という手順になりますが、これの destroy の時点で、

fxp0: promiscuous mode disabled

と出て、promiscuous mode ではなくなりました。

ううむ。
2006/03/09(木) 13:11:29ID:EPmwRgxW0
>>386 なるほど......いったん carp1 が動き始めると destroy するまでは
promiscuous モードになってしまうと.そうなると standby 状態でもってことですね.

で,スイッチによって active 側にしか転送されないだろう (>>382) ということだそうですが,
これは実際確認した方が良さそうですね.
388root▲ ★
垢版 |
2006/03/09(木) 14:16:07ID:???0
http://www.ucarp.org/

よさげかも。
2006/03/09(木) 15:13:39ID:EPmwRgxW0
>>388 以前 LVS の代替品を探してた時にもちょっと出てたやつですね.
カーネルデバイス版の carp と比べると

・ 既存の I/F に対する alias としてアドレスを付す.
・ I/F を promiscuous モードにしない.

という点では扱いやすそうですね.
390root▲ ★
垢版 |
NGNG
ucarp を試し中。

結構、うまく動く予感。
391root▲ ★
垢版 |
NGNG
テストはうまくいきました。
現在、banana403/banana404 は ucarp で冗長化して動いています。
ping がとぎれることなく切り替わったのには、結構感動しました。

これで、live22x を 受付嬢環境で動かす準備が整いました。
つまり、雪だるまサーバ環境は、形としてようやくフルスペックにできることになります。
392root▲ ★
垢版 |
NGNG
あと、課題は、フロントエンドが落ちたのを検知して、
matd の仲間から自動的に切り離す部分ですね。

これは、httping とかを使って別途スクリプトを書こうかと。
393root▲ ★
垢版 |
NGNG
…って書いてたら、ping がかからなくなりました。
ucarp を起動しなおしたら直った。ううむ、バグかな。

しばらく、観察と調整をば。
394root▲ ★
垢版 |
NGNG
で、しばらく動かして安定なのを確認してから、live22x をのっけることにしようかと。
395root▲ ★
垢版 |
NGNG
○ ucarp の設定

daemontools 経由で利用することにする。

(banana403: /var/service/ucarp)
#!/bin/sh
exec 2>&1
exec env - TZ=JST-9 PATH="/usr/sbin:/sbin:/usr/bin:/bin:/usr/local/bin:/usr/local/sbin" \
ucarp --preempt --interface=fxp0 \
--srcip=206.223.150.95 \
--vhid=1 --pass=むぎゅむぎゅ \
--addr=206.223.150.96 \
--upscript=/usr/local/etc/zzz-matd-up.sh \
--downscript=/usr/local/etc/zzz-matd-down.sh \
--shutdown

(banana404: /var/service/ucarp)
#!/bin/sh
exec 2>&1
exec env - TZ=JST-9 PATH="/usr/sbin:/sbin:/usr/bin:/bin:/usr/local/bin:/usr/local/sbin" \
ucarp --preempt --interface=fxp0 \
--srcip=206.223.150.140 \
--advskew=128 \
--vhid=1 --pass=むぎゅむぎゅ \
--addr=206.223.150.96 \
--upscript=/usr/local/etc/zzz-matd-up.sh \
--downscript=/usr/local/etc/zzz-matd-down.sh \
--shutdown
396root▲ ★
垢版 |
NGNG
(zzz-matd-up.sh)
#!/bin/sh

_LIP="127.0.0.1"
_VIP="206.223.150.96"
_CFFILE="/usr/local/etc/matd.cf"
_CFFILE_SKEL="/usr/local/etc/matd.cf.skel"

ifconfig fxp0 $_VIP netmask 255.255.255.255 alias
sed -e "s/%%IPADDR%%/${_VIP}/" < $_CFFILE_SKEL > $_CFFILE
svc -h /var/service/matd

(zzz-matd-down.sh)
#!/bin/sh

_LIP="127.0.0.1"
_VIP="206.223.150.96"
_CFFILE="/usr/local/etc/matd.cf"
_CFFILE_SKEL="/usr/local/etc/matd.cf.skel"

sed -e "s/%%IPADDR%%/${_LIP}/" < $_CFFILE_SKEL > $_CFFILE
svc -h /var/service/matd
ifconfig fxp0 $_VIP delete
397root▲ ★
垢版 |
NGNG
観察中、、、。
問題なさげなので、これでしばらく動かしてみるです。
2006/03/10(金) 02:28:23ID:PuC6Jsyv0
>>391 乙でした。

http://www.freebsd.org/releases/6.1R/todo.html
みると、とても3月中にリリースされるとは思えない状態ですね。

次は、mod_cacheですかね。
399root▲ ★
垢版 |
NGNG
>>398
どもです。
ちょっと某所で聞いてみたんですが、どうも10日ぐらいはかかるっぽいみたいな。
でもとても出そうもない状態、というのもまぁ、いつものことっぽいらしいので、
見切り発車で出るのかもしんないですね。

うまく matd に乗せ換えられれば、フロントのメンテやバージョンアップも楽になります。
例えば mod_cache を入れた個体と入れない個体を準備しておくとかすれば、
テストもやりやすいのかなと。
2006/03/10(金) 10:26:54ID:+1/ACLRc0
>>390-399 乙です.ucarp の README 見ると,

And last, but not least, you can use a script that will connect to your switches
and flush their ARP cache. Some users reported that transitions were way faster
when also switching MAC addresses.

ってことも書いてありますね.
401root▲ ★
垢版 |
2006/03/10(金) 11:12:55ID:???0
>>400
なるほど、これは確かheartbeatでも使われているテクですね。

あと、VRRPで話すのに専用チャンネル(直結のところ)を使うとよさげなので、
おいおい、それにも挑戦してみるです。
402root▲ ★
垢版 |
NGNG
信頼性を上げるため、相手方のチェックを直結I/Fに変更。

(banana403:/var/service/ucarp/run)
#!/bin/sh
exec 2>&1
exec env - TZ=JST-9 PATH="/usr/sbin:/sbin:/usr/bin:/bin:/usr/local/bin:/usr/local/sbin" \
ucarp --preempt --interface=vr0 \
--srcip=10.0.0.1 \
--vhid=1 --pass=むぎゅ \
--addr=206.223.150.96 \
--upscript=/usr/local/etc/zzz-matd-up.sh \
--downscript=/usr/local/etc/zzz-matd-down.sh \
--shutdown

(banana404:/var/service/ucarp/run)
#!/bin/sh
exec 2>&1
exec env - TZ=JST-9 PATH="/usr/sbin:/sbin:/usr/bin:/bin:/usr/local/bin:/usr/local/sbin" \
ucarp --preempt --interface=vr0 \
--srcip=10.0.0.2 \
--advskew=128 \
--vhid=1 --pass=むぎゅ \
--addr=206.223.150.96 \
--upscript=/usr/local/etc/zzz-matd-up.sh \
--downscript=/usr/local/etc/zzz-matd-down.sh \
--shutdown
403root▲ ★
垢版 |
NGNG
>>395>>402 に変更。
リブートテスト良好。

これで、ほぼ理想的な姿になりました。< banana403/404
同時に働くことはできませんが、当初の目的は十分果たせたなと。

ここで思案のしどころですが、

1) 今 live22x も受付嬢に収容して実験する
2) 今日はこれで動かしてピークを越えられることを確認し、明日じっくりと

さて、どっち。↓
NGNG
>>403
いきなり実験も2ch的で面白いですけど,rootさんのこと
考えると2の方がいいと思います……
405root▲ ★
垢版 |
2006/03/10(金) 19:10:22ID:???0
バーチャルIPアドレスを変えて(例えば206.223.150.97)もう一組、
matd+ucarpのペアを動かして、
そっちはbanana404スタメン・banana403ピンチヒッターに設定して
動かすってのはどうだろうか。
406root▲ ★
垢版 |
NGNG
>>405 は直感的にはよさげだけど、
いろんなことを考えると、一長一短かもしんないですね。

今の段階ではフォワーディング能力的には十分余裕なので、
そこまでする必要もなさそうですし。
NGNG
>>403
(1)
408root▲ ★
垢版 |
NGNG
BG3/BG4、live22系と同じように /etc/libmap.conf を設定した。

マルチスレッドで動いている squid の効率が、少しでもよくなれば。

%cat /etc/libmap.conf
libpthread.so.2 libthr.so.2
409root▲ ★
垢版 |
NGNG
とりあえずメモ

マスター側のリブートでは、まったく問題なし。
しかしバックアップ側をリブートすると、微妙なことが起こった。< ucarp

一瞬マスターモードになり、すぐにバックアップモードに。
で、その影響でちょっとの間マスターが2匹になり、www2がつながらなく。

バックアップ側は、--preempt をやめればいいのかな。
410root▲ ★
垢版 |
NGNG
ついに掲示板サーバで(プライベート側だから圧縮なしだけど)、
1サーバの転送量だけで、トラフィックの32ビットカウンターがあふれる日がやってきた。

【ひなあられ】負荷監視所_20060301
http://live14.2ch.net/test/read.cgi/liveplus/1141207819/383

後で、雪だるま系のMRTGは別系統にする予定。
411root▲ ★
垢版 |
NGNG
live22
httpd が signal 10 でダウン。

pid 41367 (httpd), uid 2001: exited on signal 10
pid 25496 (httpd), uid 2001: exited on signal 10
pid 25531 (httpd), uid 2001: exited on signal 10
pid 25484 (httpd), uid 2001: exited on signal 10
pid 25523 (httpd), uid 2001: exited on signal 10
pid 25488 (httpd), uid 2001: exited on signal 10
pid 25476 (httpd), uid 2001: exited on signal 10
pid 25475 (httpd), uid 2001: exited on signal 10
pid 25541 (httpd), uid 2001: exited on signal 10
pid 25520 (httpd), uid 2001: exited on signal 10
pid 25495 (httpd), uid 2001: exited on signal 10
pid 25527 (httpd), uid 2001: exited on signal 10
pid 25562 (httpd), uid 2001: exited on signal 10
pid 25535 (httpd), uid 2001: exited on signal 10
pid 25506 (httpd), uid 2001: exited on signal 10
pid 25533 (httpd), uid 2001: exited on signal 10
412root▲ ★
垢版 |
NGNG
>>411 は、例の虫を踏んだ時ですね
libmap.conf 設定。

パッチあてて以降は、calcru: .. のメッセージは出なくなりました。
413root▲ ★
垢版 |
2006/03/11(土) 04:37:10ID:???0
>>410
ということでlive22系のトラフィックだけ、別にとることにした。
http://mumumu.mu/mrtgs/mrtg-rrd.cgi/traffic/
414root▲ ★
垢版 |
NGNG
live22x.2ch.net を matd (受付嬢)環境に移行します。

以下のDNSサーバの設定変更をよろしくお願いします。

(現在)
Clive22x.2ch.net:live22y.2ch.net:300

(変更後)
+live22x.2ch.net:206.223.150.96:300
2006/03/11(土) 21:17:29ID:7pu7OHBU0
>>414 いよいよですか.

>>405 各仮想アドレスには DNS RR で割り振って,それぞれを ucarp で冗長化するって感じですか.
今後受付1台だけでは手に余るようになったら,その方向でってところですかね.
416root▲ ★
垢版 |
2006/03/12(日) 13:33:56ID:???0
【実況】 live22x Part13
http://qb5.2ch.net/test/read.cgi/operate/1141564207/397

(gdb) where
#0 0x283b04d3 in _umtx_op () from /lib/libc.so.6
#1 0x2836d066 in _thread_bp_death () from /usr/lib/libthr.so.2
#2 0x2836c5bd in pthread_cond_destroy () from /usr/lib/libthr.so.2
#3 0x28329a2d in apr_thread_cond_wait ()
from /usr/local/lib/apache2/libapr-0.so.9
#4 0x080688b7 in ap_queue_info_wait_for_idler ()
#5 0x080666bd in listener_thread ()
#6 0x283277e8 in dummy_worker () from /usr/local/lib/apache2/libapr-0.so.9
#7 0x2836c05d in pthread_create () from /usr/lib/libthr.so.2
#8 0x00000000 in ?? ()
(gdb)

前のと同じか。
417root▲ ★
垢版 |
2006/03/12(日) 13:49:06ID:???0
サーバダウン(鯖落ち)情報 part95
http://qb5.2ch.net/test/read.cgi/operate/1141569018/918-924

ううむ。
■ このスレッドは過去ログ倉庫に格納されています