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/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

ううむ。
418root▲ ★
垢版 |
NGNG
BETA4 か。
今月中には、出ないっぽいかも。
http://www.freebsd.org/releases/6.1R/schedule.html
2006/03/12(日) 23:37:20ID:iiVdso7J0
一瞬今年中にみえますたw
2006/03/13(月) 17:46:47ID:u14MvpfC0
特化型サーバスレのこともたまには思い出してあげてください
NGNG
http://search.cpan.org/~ingy/orz-0.10/lib/orz.pm
422root▲ ★
垢版 |
NGNG
>>421
↓が最新みたいですが、これはいったい、、、。

http://search.cpan.org/~ingy/orz-0.11/lib/orz.pm
2006/03/13(月) 22:45:24ID:7HbL/XCO0
>>422
"use orz"から"no orz"までソースをコメントするAcme::的なモジュールです
0.10から0.11の変更点は"orz !!!"を"orz..."に変更しています

Module::Compileのお遊び的な使い方としてのモジュールでしょうね
424root▲ ★
垢版 |
2006/03/14(火) 00:05:54ID:???0
>>423
なるほど、そういうものですか。

しかしなぜorz、、、。
NGNG
今からでも間に合うかも!?
ttp://tokyo.yapcasia.org/blog/ja/sessions.html
426root▲ ★
垢版 |
2006/03/14(火) 10:25:25ID:???0
>>425
おー、これは。

しかし、超いそがしい時期かも。
427ピロリ
垢版 |
NGNG
>>414
done
428root▲ ★
垢版 |
NGNG
>>427
正しく変わったのを確認しました。
特に問題は観察されていません。

これで、雪だるまシステムは「形として」、描いたとおりのものになりました。
構想から1年以上ですか。

あとは、より磨いていくことになります。

とりあえず、虫を踏まないようになってほしいとか、
フロントやバックを増やすにはもうちょっと作業が必要とか、
過去ログ関係とかをもっとスマートにやりたいなとかありますが、
このあたりは、例によってぼちぼちすすめていこうかなと。
429root▲ ★
垢版 |
NGNG
で、本気モードでパケットが来た時に、matd がどうなるかということですね。

あとで matd.stats を外から見られるようにしておくか。
430root▲ ★
垢版 |
NGNG
とりあえず、今の状態(matd.stats)。

[matd statistics] Tue, 14 Mar 2006 15:41:47.105 (JST)
user CPU time = 0:02:24.583, system CPU time = 0:20:11.934
elapsed time = 95:34:27.758, CPU load = 0.39%

minor page faults = 231, major page faults = 0, swaps = 0
block inputs = 0, block outputs = 0
messages sent = 2, messages received = 0
signals = 2, vol ctx switches = 32584418, invol ctx switches = 2811721

forwarded packets:
00:30:48:53:ec:20 = 47641159
00:30:48:83:ab:30 = 47656010
00:30:48:83:a6:2a = 47658945
elapsed time (configuration age) = 95:34:26.741
431root▲ ★
垢版 |
NGNG
1:1 スレッド (-lthr) にしてから明らかに負荷が下がって、パフォーマンスが上がりました。

LA
http://mumumu.mu/mrtgc/mrtg-rrd.cgi/load/blackgoat4load.html
プライベート側のトラフィック(c-xxxxからの要求を処理できるようになった)
http://mumumu.mu/mrtgc/mrtg-rrd.cgi/traffic/blackgoat4-privatetraf.html

さて、どこまで延命できるのか。< BG3/4
2006/03/14(火) 20:18:39ID:WjY6I8pQ0
>>428
ということは雪だるま作戦プロジェクトはリリース版稼動開始ってことでよろしいのでしょうか。
433root▲ ★
垢版 |
NGNG
>>432
実験はずっと続きますが、
ネットワークの形というか各サーバの論理構成(≠台数)としては、
メンバーがそろったという認識です。

・ロードバランサ(受付嬢: ユーザからの接続要求を各フロントに振り分ける)
・フロントエンド(ユーザからの要求の処理: bbs.cgi、read.cgi、削除系の呪文(未対応…)が動作)
・バックエンド(フロントエンドからの要求の処理: フロントにdat提供、実際の書き込み処理)
434root▲ ★
垢版 |
NGNG
超簡便な図を描くと、今の構成こんなかんじ。


クライアントたち Webブラウザとか専用ブラウザとかBG3/4とか
│     ↑
↓     │
b1⇔b2  │   ポイント: 帰りのトラフィックはb1(b2)を経由せず、x1〜x3から直接届く
├┬┐  │   b1が落ちるとb2に自動切換え、x1〜x3が落ちると自動切り離し(未実装)
↓↓↓  │
x1 x2 x3─┘  各種cgiはここで動く
│││      dat/index.html/subject.txt/subback.htmlはlive22から必要に応じてすぐもらう
│││      SETTING.TXTやdat落ちした過去ログはlive22から定期的にゆっくりもらう
↓↓↓
live22       実際の書き込み処理を受けつける
           ここではcgiは動かない(今はまだ削除系cgiとかが動いている)
           x1〜x3にdat/index.html/subject.txt/subback.htmlを提供する

Samba24やtimecount/timecloseのための規制系データは、
live22x1が上記のlive22の位置にいて、そこで一元管理
もし仮にlive22x1が落ちてもこれらの規制がスキップになるだけで、動作は継続
435root▲ ★
垢版 |
NGNG
今の構成はlive22が落ちると全滅。

live22のところの冗長化・強化手段の例とか。

↓         ↑
B1⇔B2     │
├─┬─┐   │   B1が落ちるとB2に自動切換え、SV1〜SVnが落ちると自動切り離し
↓  ↓  ↓   │
SV1 SV2 ... SVn┘
│  │  │
外部HDD         FC-AL等でSV1〜SVnが外部HDDを共有
               HDDはRAID 5構成
436root▲ ★
垢版 |
NGNG
昔やったおまじないを思い出したので、
banana403/banana404 の matd 起動スクリプトを nice してみた。
とりあえず WCPU がちょっぴり増えたので、それなりに動いているかなと。

苦しくなったら、BG3/4 の squid もやろうかと。

#!/bin/sh
exec 2>&1
exec env - TZ=JST-9 PATH="/usr/sbin:/usr/bin:/bin:/usr/local/bin" \
/usr/bin/nice -n -20 /usr/local/sbin/matd -F \
-f /usr/local/etc/matd.cf \
-s /var/log/matd.stats
2006/03/14(火) 22:03:07ID:WjY6I8pQ0
>>435
問題は冗長化通信部分の実装ですね
NFSがいまいちって前におっしゃってましたけど、クラサバどちらとも?それとも片方でしょかね?
438root▲ ★
垢版 |
NGNG
>>437
同じ外部ストレージの中身を(FC-ALとかで)共有する路線かなと。

そうしておいて SV1 〜 SVn を並列で稼動できれば、
HDDのI/Oキャパが板一枚でいっぱいになるか(2chではありえないと思う)、
帰り側のネットワークがいっぱいになるまでは、スケールするんじゃないかなと。
2006/03/14(火) 22:22:23ID:WjY6I8pQ0
>>438
そうなるとSumaみたいなのが必要になってくるわけですな・・・
440root▲ ★
垢版 |
NGNG
>>439
そういうことになるですね。
2006/03/15(水) 00:04:21ID:zGV61Xb10
>>440
前からきになっていたのですが、SumaってFCにつながっている
複数のサーバから同一ファイルをアクセスできるのですか?
箱物のみ共有で、ファイルの共有はできないと思っていたのですが。
(AppleのXsanみたいなソフトがサーバ側に必要と思っていました。)
442root▲ ★
垢版 |
2006/03/15(水) 01:31:12ID:???0
>>441
なるほど、SV1でmountしたファイルシステムを
SV2からも普通にmountしようとすると、EBUSYとかになったりするのかしら。
2006/03/15(水) 02:06:07ID:wQ/ASUE00
>>442
普通は排他処理が働いて書き込みできないかと

リードオンリーならNFSマウントみたいな形で十分対処できますがね・・・
書き込みありだから何か工夫がいると思います

今までにrootさんがお守り修行で培ってきた経験が生かせるか、それとも新しい修行が必要かはわかりませんがね
2006/03/15(水) 02:11:11ID:wQ/ASUE00
>>443
+ 普通のマウント方法だと排他処理が働いてマウントできないかもですね
- 普通は排他処理が働いて書き込みできないかと
445root▲ ★
垢版 |
NGNG
質問・雑談スレ218@運用情報板
http://qb5.2ch.net/test/read.cgi/operate/1142144559/347

うーむ、またこのエラーが。
Apache 2.2 + 64bit 版のみなのかなぁ。

>>443-444
ro で複数ホストから mount できるなら、読ませるほうを分担させることは可能かもですね。
書き込みは(とりあえず)1箇所でやることにして、読み出しを別のやつらに分業させるとか。
2006/03/15(水) 11:16:11ID:Ol5pRU490
とうとう matd 本格稼働ですか.とりあえず今のところ異常なしで一安心ですかね.

>>429
>で、本気モードでパケットが来た時に、matd がどうなるかということですね。

というのは確認しておきたいところですが.


で,>>435 >>438 というのはバック側をフェイルオーバだけじゃなく
ロードバランスするって意味ですか? そうなると......bbsd では
subject データなどをオンメモリ管理してるので,remote shared memory
とか使わないとつじつまが合わなくなってしまいますね.単一鯖の shared memory
でも処理が煩雑になるので,それを避けるためマルチプロセスでなく
シングルプロセスにしてるんですが.というか,単一鯖での bbsd の限界が来る前に
ユーザが追随できなくなりそうな気もしますが......今のところ最速 1000 は
4秒ですが,1スレを数秒で使い切るようなレス速度になれば,現実的には
次スレを探すのにある程度時間がかかるとか,一方みんながスレを立てようとすれば
スレ立て制限に引っかかるとか,そういう部分で必然的にブレーキがかかりそうな気もします.

ということで,bbsd についてはフェイルオーバだけ考えればいいのではないかと思います.
httpd の方は,フロント側で mod_cache を使ってもなお不足であればロードバランスも
考えた方がいいのかも知れませんけど.


pthread_cond_wait() が実行されるべきところで pthread_cond_destroy() が
実行されてしまうとか(>>416),dlopen() or dlsym() が失敗してるらしいとか(>>445),
このあたりは不可解ですね...... OS の虫なのか libapr が腐ってるのか......
447root▲ ★
垢版 |
NGNG
>>446
> とうとう matd 本格稼働ですか.とりあえず今のところ異常なしで一安心ですかね.

ですね。
今実況が盛り上がっていますが、問題なく動作しています。

> ということで,bbsd についてはフェイルオーバだけ考えればいいのではないかと思います.

そですね。
そのほうが(= 書く人は一人にする)いろんな意味でよさそうなかんじ。

最終段落は、確かにってかんじかなと、、、。

ex14 (64bit) も Apache 2.0.55 ではこの現象は発生しなかったので、
apr 問題なのかもしれないですね。
448root▲ ★
垢版 |
NGNG
【実況】 live22x Part13
http://qb5.2ch.net/test/read.cgi/operate/1141564207/414

32bit でも発生。つまり、32bitか64bitかは無関係と。
Apache 2.0系では発生したことがないので、それ系か。

…Apache 2.2系でmod_cgidsoを作る時ですが、

gcc -c read.c -I`apxs -q INCLUDEDIR` `apr-1-config --includes` -O2 -Wall -funsigned-char -fPIC -o read.o
gcc -shared read.o `apr-1-config --link-ld` `apxs -q LIBS` -Wl,-S,-soname,read.so -o read.so

とやっていますが、これではだめとか、
あるいはApacheのほうで、

#if defined(AP_SERVER_MINORVERSION_NUMBER) && AP_SERVER_MINORVERSION_NUMBER >= 2
ap_filter_rec_t frec = {"READDAT", {rdat_filter}, NULL, AP_FTYPE_RESOURCE, NULL, NULL, 0, 0};
#else
ap_filter_rec_t frec = {"READDAT", {rdat_filter}, NULL, AP_FTYPE_RESOURCE, NULL};
#endif

に類似するような変更が、実は他にも存在しているのかとか。

# でもそれだと、途中からおかしくなる理屈が、、、。
449root▲ ★
垢版 |
NGNG
今見たらex14でも再発していた。(httpd restart)
ううむ。
450root▲ ★
垢版 |
NGNG
あとひょっとすると、libthr なコンディションの時だけ発生するのかな。
ex14で設定変えて試してみるか。
451root▲ ★
垢版 |
NGNG
>>450 done.
452root▲ ★
垢版 |
NGNG
libmap.conf を mv して、Apache をリスタートした。

今の ex14 の状況下なら、
数日この状況が再現しなかったら、libthr がらみな予感。
2006/03/16(木) 16:03:12ID:2f/Avl4f0
>>448 そのあたりの理由だと,

># でもそれだと、途中からおかしくなる理屈が、、、。

ということで最初からおかしくなると思うんですよね......
となると,>>450 ですかね......
2006/03/16(木) 17:29:59ID:gi0mOC860
libpthreadを使うんならこのスレッドにSTABLE向けだけどpatchあり。
http://lists.freebsd.org/pipermail/freebsd-threads/2006-March/003411.html
2006/03/17(金) 00:45:16ID:HYFBpOjN0
eAccelerator 0.9.5-beta1 来ましたね。
456root▲ ★
垢版 |
NGNG
>>454
さっき外から読んでました。
前に当てたパッチの延長線上のやつっぽいですね。
帰宅後に適用へと。

>>455
ふむふむ。
457root▲ ★
垢版 |
2006/03/17(金) 03:24:25ID:???0
すみませんが今日はもう電池切れなので、
>>456 やepg のシングルスレッド(prefork MPM)化などは、あとで。
2006/03/17(金) 10:11:31ID:pvQ2ZSVI0
FreeBSDのdlopen() & dlclose()は完全にはスレッドセーフではないので、
mod_cgidsoはworkerだとうまく動かないと思います。。。
libthrよりlibpthreadの方が問題が起こり難いのは確かですが、
それでも問題が起こることは変わらず。
459root▲ ★
垢版 |
NGNG
>>458
うーむ、、、。

で。メモメモ。

p2.2ch.net不具合報告スレ Part10
http://qb5.2ch.net/test/read.cgi/operate/1141521195/214
460root▲ ★
垢版 |
NGNG
ずれたので、再度メモ。

p2.2ch.net不具合報告スレ Part10
http://qb5.2ch.net/test/read.cgi/operate/1141521195/209
2006/03/17(金) 13:36:06ID:l682KYnz0
>>458 なるほど.Solaris 流に MT-Safe かと思ってましたが......
こんなのを httpd 起動時に LD_PRELOAD とかすれば何とかなるのかなぁ......?

#include <dlfcn.h>
#include <pthread.h>

static pthread_mutex_t dlmutex = PTHREAD_MUTEX_INITIALIZER;

void *dlopen(const char *pathname, int mode)
{
    static union {
        void *v;
        dlfunc_t d;
        void *(*f)(const char *, int);
    } o_dlopen;
    void *rv;

    pthread_mutex_lock(&dlmutex);
    if (!o_dlopen.v)
        o_dlopen.d = dlfunc(RTLD_NEXT, "dlopen");
    rv = o_dlopen.f(pathname, mode);
    pthread_mutex_unlock(&dlmutex);
    return rv;
}

int dlclose(void *handle)
{
    static union {
        void *v;
        dlfunc_t d;
        int (*f)(void *);
    } o_dlclose;
    int rv;

    pthread_mutex_lock(&dlmutex);
    if (!o_dlclose.v)
        o_dlclose.d = dlfunc(RTLD_NEXT, "dlclose");
    rv = o_dlclose.f(handle);
    pthread_mutex_unlock(&dlmutex);
    return rv;
}

void *dlsym(void *handle, const char *name)
{
    static union {
        void *v;
        dlfunc_t d;
        void *(*f)(void *, const char *);
    } o_dlsym;
    void *rv;

    pthread_mutex_lock(&dlmutex);
    if (!o_dlsym.v)
        o_dlsym.d = dlfunc(RTLD_NEXT, "dlsym");
    rv = o_dlsym.f(handle, name);
    pthread_mutex_unlock(&dlmutex);
    return rv;
}
462root▲ ★
垢版 |
2006/03/17(金) 13:52:35ID:???0
http://people.freebsd.org/~bsd/prstats/topN_r_np_idx7

Problem Report threads/89262 : [kernel] [patch] multi-threaded process hangs in kernel in fork()
http://www.freebsd.org/cgi/query-pr.cgi?pr=89262
463root▲ ★
垢版 |
2006/03/17(金) 14:02:09ID:???0
うーむうーむ。特にkern_fork.c.patch
http://people.freebsd.org/~davidxu/patch/?M=D
http://people.freebsd.org/~davidxu/patch/kern_fork.patch
http://people.freebsd.org/~davidxu/patch/calcru.patch
http://people.freebsd.org/~davidxu/patch/atfork.patch
464root▲ ★
垢版 |
NGNG
ある携帯用アプリを作っている業者の担当さんから、
個人宛のメールで問い合わせが来ました。
以下は私からの返事の内容。

本件をすすめる件、およびその内容については管理人のOK済み。

--- cut ---

現在の2ちゃんねるでは、携帯端末から書き込み時に2ちゃんねるに送信される
固有情報により掲示板の荒らし対策、広告貼り付け対策等を実施しております
ので、これを送信いただくことは、このような場合における必須条件の一つです。

また、このような場合に最低限必要な情報/条件として、

1) 2ちゃんねるへの書き込みが行われる御社サーバのIPアドレス
(固定IPアドレスであることが必須: 複数個存在する場合それらのIPアドレス
全部)を、事前にお知らせいただき、かつ変更の都度お知らせいただくこと

なおこの情報は、2ch運用情報板 (http://qb5.2ch.net/operate/) への
御社ご担当様からの書き込みにより、公開の場でお伝えいただけると助かり
ます。
(例えば、技術情報そのものは御社Web上に別途準備いただき、
URLリンクや更新情報のみを都度書き込むといった形でも問題ありません)

上記情報を書き込むスレッドですが、

2ch特化型サーバ・ロケーション構築作戦 Part20
http://qb5.2ch.net/test/read.cgi/operate/1140540754/

をご使用いただけますと助かります。

2) 書き込みの際に、該当する携帯側のIPアドレス(携帯側から御社サーバに
書き込みリクエストがあった際の携帯側のIPアドレス)を、
一定の方法で2ちゃんねるにそのまま送信いただくこと

これにより2ちゃんねるは、どの会社の携帯電話からの書き込みであるか
を、携帯電話から直接書き込んだ場合と同様の方法で判定できることになり
ます。

なお、上記はIPアドレスの逆引き名ではなく、
IPアドレスそのものを送信いただけると助かります。

携帯電話の固有番号はキャリアごとに仕様・フォーマットが異なっているた
め、この情報が必要となります。

3) 書き込みの際に、該当する携帯の端末固有情報を
一定の方法で2ちゃんねるに送信いただくこと

理由は上記の通りとなります。

なお、上記 2) 3) につきましては、御社側において User-Agent: ヘッダに
挿入する方式(フォーマット)を明確に決めていただき、
この技術情報を 1) と同様、事前にお知らせいただけると助かります。

以上になります。よろしくお願いいたします。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況