【Project peko】2ch特化型サーバ・ロケーション構築作戦 Part16
レス数が950を超えています。1000を超えると書き込みができなくなります。
peko作戦について語るスレです。
サーバロケーションPIEに関する話題もこちらで。
<現在の主要なテーマ>
・read.cgiのmod_cgidso化によるパフォーマンスアップ
・bbs.cgiのSpeedyCGI化によるパフォーマンスアップ
・FreeBSD 5.3Rへのサーバ更新作業&さらなるチューニング
<関連板・スレッド>
また挑戦。@2ch掲示板
http://dso.2ch.net/myanmar/
また挑戦2。@2ch掲示板
http://dso.2ch.net/yangon/
bbs.cgi再開発プロジェクト4
http://qb5.2ch.net/test/read.cgi/operate/1101984763/
read.cgi再開発スレ
http://qb5.2ch.net/test/read.cgi/operate/1087199303/
<関連サイト>
レンタルサーバー maido3.com 2ちゃんねるの転送量: http://server.maido3.com/pie/
MRTGによる統計情報: http://mumumu.mu/mrtg/
2ちゃんねる/PINKちゃんねる 稼動中のサーバ一覧: http://mumumu.mu/serverlist.html
<前スレ>
【Project peko】2ch特化型サーバ・ロケーション構築作戦 Part15
http://qb5.2ch.net/test/read.cgi/operate/1093068260/ > 189 名前:ひろゆき@どうやら管理人 ★ [] 投稿日:05/01/22(土) 18:58:53 ID:d/yZXs4H ?##
> http://live14.2ch.net/argue/をqa.2ch.netに移転したかったりするのですが、
> 最近は、誰に頼めばいいんでしょうか?
質問・雑談スレ96@運用情報板
http://qb5.2ch.net/test/read.cgi/operate/1106316059/189 現状 @qb6,ex7
#広告かな?
my $NG_word = &IsKoukoku($GB);
if($NG_word eq ''){return 0;}
# それぞれの値を取り出したいときは、以下のようにデリファレンスすれば・・・
my @NG_word_status = @{$NG_word};
# このようにそれぞれに値が代入されます。
# $NG_word_status[0] には規制文字列 [Shift_JIS]
# $NG_word_status[1] には MD5 値
# $NG_word_status[2] には フラグ
# BBR へ送信(NGワード追跡装置?) @2005/01/22 by 未承諾広告※
# MD5-該当ワードに付けられたmd5値.さくらフラグ.投稿者のIPアドレス.サブスクライバ.スレッド番号.板名.鯖名.bbr.2ch.net.
# 返り値はいらないけれどもTimeOut処理が要りそうだからNet::DNSを使った方がよいかな?
my $AHOST = sprintf(qq|MD5-%s.%d.%s.%s.%d.%s.%s.bbr.2ch.net.|,
$NG_word_status[1], # MD5値
$NG_word_status[2] ? 1 : 0, # さくらフラグ。空っぽだとイヤンなので
$ENV{REMOTE_ADDR}, # IPアドレス(ひっくり返さなくてもいぃことにしよう♪)
$GB->{IDNOTANE} !~ /\./ ? $GB->{IDNOTANE} : '0', # サブスクライバじゃないみたいときには '0' にしておく。
$GB->{FORM}->{'key'}, # スレッド番号
$GB->{FORM}->{'bbs'}, # 板名(ディレクトリ名)
$ENV{SERVER_NAME} # 鯖名(FQDN)
);
# このときに・・・
if ($NG_word_status[2] == 1) # フラグが 1 のときは「いっぱつフラグ」なのでその時の処理。
{
&DispError2($GB,"ERROR!","さくらが咲いてますよ。");
}
if(!$FOX->{BBX}){return 0;}
my $SPAM = &foxDNSquery2($AHOST);
if($SPAM eq "127.0.0.2")
{
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime($GB->{NOWTIME});
$mon ++;
endhtml($GB);#&DispError2($GB,"ERROR!","ERROR:ロックは人生だ。");
}
if($SPAM eq "127.0.0.0")
{
$FOX->{BBX} = 0;
}
return 0;
>>862
えぇーっと、BBXとBBRは別物なので、別々に呼び出して欲しいですーm(_ _)m
でもって、
&foxDNSquery2(DNSクエリ);
っていうのが、新しいDNS問い合わせ屋さんなのでしょうか?
でしたら・・・
# BBR へ送信(NGワード追跡装置?) @2005/01/22 by 未承諾広告※
# MD5-該当ワードに付けられたmd5値.さくらフラグ.投稿者のIPアドレス.サブスクライバ.スレッド番号.板名.鯖名.bbr.2ch.net.
# 返り値はいらないけれどもTimeOut処理が要りそうだからNet::DNSを使った方がよいかな?
&foxDNSquery2(
sprintf qq|MD5-%s.%d.%s.%s.%d.%s.%s.bbr.2ch.net.|,
$NG_word_status[1], # MD5値
$NG_word_status[2] ? 1 : 0, # さくらフラグ。空っぽだとイヤンなので
$ENV{REMOTE_ADDR}, # IPアドレス(ひっくり返さなくてもいぃことにしよう♪)
$GB->{IDNOTANE} !~ /\./ ? $GB->{IDNOTANE} : '0', # サブスクライバじゃないみたいときには '0' にしておく。
$GB->{FORM}->{'key'}, # スレッド番号
$GB->{FORM}->{'bbs'}, # 板名(ディレクトリ名)
$ENV{SERVER_NAME}, # 鯖名(FQDN)
);
と、差し替えて頂ければm(_ _)m あ、
846 をそっくりそのまま書き換えた方が良さそうですよね。
ではちょとゴソゴソ。。。 答えいらない系は foxDNSquery なんでそっちにします my $NG_word = &IsKoukoku($GB);
if($NG_word eq ''){return 0;}
# それぞれの値を取り出したいときは、以下のようにデリファレンスすれば・・・
my @NG_word_status = @{$NG_word};
# このようにそれぞれに値が代入されます。
# $NG_word_status[0] には規制文字列 [Shift_JIS]
# $NG_word_status[1] には MD5 値
# $NG_word_status[2] には フラグ
# BBR へ送信(NGワード追跡装置?) @2005/01/22 by 未承諾広告※
# MD5-該当ワードに付けられたmd5値.さくらフラグ.投稿者のIPアドレス.サブスクライバ.スレッド番号.板名.鯖名.bbr.2ch.net.
# 返り値はいらないけれどもTimeOut処理が要りそうだからNet::DNSを使った方がよいかな?
&foxDNSquery(
sprintf qq|MD5-%s.%d.%s.%s.%d.%s.%s.bbr.2ch.net.|,
$NG_word_status[1], # MD5値
$NG_word_status[2] ? 1 : 0, # さくらフラグ。空っぽだとイヤンなので
$ENV{REMOTE_ADDR}, # IPアドレス(ひっくり返さなくてもいぃことにしよう♪)
$GB->{IDNOTANE} !~ /\./ ? $GB->{IDNOTANE} : '0', # サブスクライバじゃないみたいときには '0' にしておく。
$GB->{FORM}->{'key'}, # スレッド番号
$GB->{FORM}->{'bbs'}, # 板名(ディレクトリ名)
$ENV{SERVER_NAME}, # 鯖名(FQDN)
);
# このときに・・・
if ($NG_word_status[2] == 1) # フラグが 1 のときは「いっぱつフラグ」なのでその時の処理。
{
&DispError2($GB,"ERROR!","さくらが咲いてますよ。");
}
my $HHH = $ENV{REMOTE_ADDR};
$HHH =~ s/(\d+)\.(\d+)\.(\d+)\.(\d+)/$4.$3.$2.$1/;
my $AHOST = "$HHH.bbx.2ch.net.";
if(!$FOX->{BBX}){return 0;}
my $SPAM = &foxDNSquery2($AHOST);
if($SPAM eq "127.0.0.2")
{
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime($GB->{NOWTIME});
$mon ++;
endhtml($GB);#&DispError2($GB,"ERROR!","ERROR:ロックは人生だ。");
}
if($SPAM eq "127.0.0.0")
{
$FOX->{BBX} = 0;
}
return 0; こんな感じになるかとー
2) Rock54 サブルーチン
sub BBXcheck
{
my ($GB) = @_;
#以下の板はするー
if($GB->{FORM}->{'bbs'} eq "sec2chd"){return 0;}
if($GB->{FORM}->{'bbs'} eq "ad"){return 0;}
#★はスルー
if($GB->{FORM}->{'FROM'} =~ /★$/){return 0;}
#●はスルー
#if($GB->{MARU}){return 0;}
#広告かな?
my $NG_word = &IsKoukoku($GB);
if($NG_word eq ''){return 0;}
# それぞれの値を取り出したいときは、以下のようにデリファレンスすれば・・・
my @NG_word_status = @{$NG_word};
# このようにそれぞれに値が代入されます。
# $NG_word_status[0] には規制文字列 [Shift_JIS]
# $NG_word_status[1] には MD5 値
# $NG_word_status[2] には フラグ
※つづく(改行大杉(滂沱)) >>867
あ、(汗)
それで桶だと思うですー
あとはroot★さんのおかえりを待つだけですー >>871
おつですーm(_ _)m
BBRが動き出しましたら、
if(!$FOX->{BBX}){return 0;}
my $SPAM = &foxDNSquery2($AHOST);
を一旦、
if(!$FOX->{BBX}){return 0;}
my $SPAM = '127.0.0.0';
にして、
qb6だけに配布をおながいしますーm(_ _)m
(実験中の規制入りは心許ないかと思いまして(苦笑))
そこである程度だめ出しが出来たら、
変更部分を元に戻して全鯖へ配布がよいかと♪ bbr.2ch.net な DNS サーバは、 206.223.147.41 で立ち上げる予定です。
「答え要らない系」なので、このIPアドレスを指定した上で query 出すようにしてください。
2ch側のDNSサーバの設定変更が必要ですが、
DNS設定変更の前にbbs.cgiを変更できます。
(直接queryを投げているので)
query出す準備ができたら、ここでお知らせします。 if(!$FOX->{BBX}){return 0;}
#my $SPAM = &foxDNSquery2($AHOST);
my $SPAM = '127.0.0.0';
にしました @qb6 >>873
実は全鯖に配布済みの悪寒です(汗)@bbs.cgi >>876
あわわ、これは失礼しましたm(_ _)m BBRのところは配布したんじゃないの
BBXを聞かなくしたのはqb6のみ >>874 は qb6 のみ
他のサーバのは先祖がえりの予感、、
どっかと作業かぶった? banana238側の設定中、、、。
これって、rock54のオーナーで動かないとだめなのかな。
ファイル作ってるみたいなんで。 パーミッション的には、そうでなくても大丈夫なのかな。
ちょっと確認してみるです。 >>881
Rock54側で消せるように、chmod 0666に設定してあるですー ということで、>>867 の bbr のところの &foxDNSquery の第2引数は、
"206.223.147.41"を指定してくださいです。
bbxのところは従来どおりでいいはず。(変更してないので) >>882
了解です。
であれば、準備完了のはず。 再確認ですが、bbr.2ch.net にはどういうフォーマットでquery飛ぶんだっけか。 &foxDNSquery(
sprintf qq|MD5-%s.%d.%s.%s.%d.%s.%s.bbr.2ch.net.|,
$NG_word_status[1], # MD5値
$NG_word_status[2] ? 1 : 0, # さくらフラグ。空っぽだとイヤンなので
$ENV{REMOTE_ADDR}, # IPアドレス(ひっくり返さなくてもいぃことにしよう♪)
$GB->{IDNOTANE} !~ /\./ ? $GB->{IDNOTANE} : '0', # サブスクライバじゃないみたいときには '0' にしておく。
$GB->{FORM}->{'key'}, # スレッド番号
$GB->{FORM}->{'bbs'}, # 板名(ディレクトリ名)
$ENV{SERVER_NAME}, # 鯖名(FQDN)
"206.223.147.41"
);
どうやって書いたらいいのかな?
これじゃ まずそうだし、 で、こいつ(BBR)にも同じ「止まっています」チェックを入れる必要があるのかなと。 >>886
ううむ、sprintfが中に入ってるですか。
$FOX->{BBR} と ${CHOST} を作って、
${CHOST} に sprintf の中身でやってることをいれて、
BBSやBBYと同じようにするのが、よいと思います。 ようは、「広告投稿」をトリガにした、BBYみたいなのがもう一つ増えるだけなんで、
プログラム側もそのように組むのが、よろしいかと。 &foxDNSquery(
sprintf(qq|MD5-%s.%d.%s.%s.%d.%s.%s.bbr.2ch.net.|,
$NG_word_status[1], # MD5値
$NG_word_status[2] ? 1 : 0, # さくらフラグ。空っぽだとイヤンなので
$ENV{REMOTE_ADDR}, # IPアドレス(ひっくり返さなくてもいぃことにしよう♪)
$GB->{IDNOTANE} !~ /\./ ? $GB->{IDNOTANE} : '0', # サブスクライバじゃないみたいときには '0' にしておく。
$GB->{FORM}->{'key'}, # スレッド番号
$GB->{FORM}->{'bbs'}, # 板名(ディレクトリ名)
$ENV{SERVER_NAME}, # 鯖名(FQDN)
),
"206.223.147.41"
);
ですー♪
第2引数があるのですね(汗) >>891
えっと、他のと合わせたほうがよいので、
${CHOST} ってのを my して、そこにその第一引数を代入して、
呼ぶようにするサンプルをつくってあげてくださいです。
こんなかんじで。
my $CHOST = (ここにsprintfなんちゃら);
if($FOX->{BBR}) {$FOX->{BBR} = &foxDNSquery($CHOST,"206.223.147.41") ; はいー♪
my $CHOST =
sprintf qq|MD5-%s.%d.%s.%s.%d.%s.%s.bbr.2ch.net.|,
$NG_word_status[1], # MD5値
$NG_word_status[2] ? 1 : 0, # さくらフラグ。空っぽだとイヤンなので
$ENV{REMOTE_ADDR}, # IPアドレス(ひっくり返さなくてもいぃことにしよう♪)
$GB->{IDNOTANE} !~ /\./ ? $GB->{IDNOTANE} : '0', # サブスクライバじゃないみたいときには '0' にしておく。
$GB->{FORM}->{'key'}, # スレッド番号
$GB->{FORM}->{'bbs'}, # 板名(ディレクトリ名)
$ENV{SERVER_NAME}, # 鯖名(FQDN)
;
if($FOX->{BBR}) { $FOX->{BBR} = &foxDNSquery($CHOST, "206.223.147.41") } >>896
どもです。これでよいはず。
こんなかんじのがDNSにとぶですか。
MD5-2029c3d6fe6b6924113b938852f77bf5.1.1.2.3.4.05001234567890-mb.1102087698.operate.qb5.2ch.net.bbr.2ch.net >>897
しむら、キーがとなりとなりー。
あとは、動作確認かしら。 dnsq コマンドで ex7 から手で DNS query してみた。
DNS(器)側は問題ないみたい。
%dnsq a MD5-2029c3d6fe6b6924113b938852f77bf5.1.1.2.3.4.05001234567890-mb.1102087698.operate.qb5.2ch.net.bbr.2ch.net 206.223.147.411 md5-2029c3d6fe6b6924113b938852f77bf5.1.1.2.3.4.05001234567890-mb.1102087698.operate.qb5.2ch.net.bbr.2ch.net:
170 bytes, 1+0+1+0 records, response, authoritative, nxdomain
query: 1 md5-2029c3d6fe6b6924113b938852f77bf5.1.1.2.3.4.05001234567890-mb.1102087698.operate.qb5.2ch.net.bbr.2ch.net
authority: bbr.2ch.net 2560 SOA a.ns.bbr.2ch.net 2ch.2ch.net 1106406759 16384 2048 1048576 0 >>898
そですー
でもって、
data
には、
+*.bbr.2ch.net:127.0.0.2:
の1行だけで桶かと。 >>902
お、データ見てるですか。
いれときます。 >>902 入れました。
「直接投げ」なのでキャッシュ効かないから、TTLはみないはず。
今はデフォルト(86400)。 >>901
う、小文字になっちゃうでぃすかー(汗)
ちょとゴニョゴニョしますm(_ _)m >>905
DNSに届くところまでは文字種は保存されている、はずですが、
安全を見るなら、大文字で来ても小文字で来ても大丈夫なように、
組んでおくとよいです。 bbrfilter.pl を書き換えたので、~/bbr/ から cp をおながいしますm(_ _)m ちとしくっていたので、>>907 やりなおし & done. >>906
承知しましたー
あと、tai64形式のタイムスタンプも先頭にくっついているのでしょうか? >>910
multilogする前にくべてるから、
BBX同様、それはないはず。 う、bbrfilter.pl が機能していないいよかん、、、
ちょと調査してみるですm(_ _)m >>912
ん、query まだ来てないみたいですけど。 DNSの器のほうはOK(ブロックしないはず)なので、>>912 の調整ができれば、
入れてOKなんではないかしら。
広告投入しようとすると、BBXに加えてBBRも追加で呼ぶようになる、ってことすよね。ようは。 MD5が同じのやつは、同じ広告を投入しようとしてはじかれた、ってことなのかな。 あ、溜まってきたいよかん♪
でも何でだろう、、、(汗)
とりあえず、BBR_gatherさんを動かします。 そういえば、妙なバッファリングが起こったので、
bbxgatherの時は私が微妙にいじった記憶があるです。
今見ると、bbxgatherにはこんなコメントが。
# selectはwhileの前でやらないとうまく出力されない模様なので、
# 以下の行を前に持ってきた。
# 0.
# multilog へパイプをパイプパイプパイプ
# 本稼働の時にコメントアウトしてみりる。
# pipe to multilog
my $oldfh = select MULTILOG;
$| = 1;
select $oldfh; 今の時間でこのぐらいの問い合わせ数なら、システムの負荷的には問題ないですね。
誤差の範囲かと。 で、bbr.2ch.netの2ch.netのDNSサーバへの登録は、このスレで別途依頼します。
Net::DNSを使って直接queryする方法を導入したので親ドメインへのDNS登録は
必ずしも必要ではなくなりましたが、
運用上の覚え書きとして、登録をしておきたいなと。 えっと、DNSに _ のままで query が飛んできてるみたいです。
0700(ふせふせ)_me っていうのを今見ました。 BBMのほうは _ => - に変換してから DNS 呼んでいるので、
こっちも、そのようにしたほうがよいのではないかと。 う、、、(汗)
my $SubNo = $GB->{IDNOTANE}; # _ → - 変換しなきゃかもなので。
$SUBNO =~ tr/_/-/;
my $CHOST =
sprintf qq|MD5-%s.%d.%s.%s.%d.%s.%s.bbr.2ch.net.|,
$NG_word_status[1], # MD5値
$NG_word_status[2] ? 1 : 0, # さくらフラグ。空っぽだとイヤンなので
$ENV{REMOTE_ADDR}, # IPアドレス(ひっくり返さなくてもいぃことにしよう♪)
$SubNo !~ /\./ ? $SubNo : '0', # サブスクライバじゃないみたいときには '0' にしておく。
$GB->{FORM}->{'key'}, # スレッド番号
$GB->{FORM}->{'bbs'}, # 板名(ディレクトリ名)
$ENV{SERVER_NAME}, # 鯖名(FQDN)
;
if($FOX->{BBR}) { $FOX->{BBR} = &foxDNSquery($CHOST, "206.223.147.41") }
これで桶かな? >>928
$SUBNO =~ tr/_/-/; ×
$SubNo =~ tr/_/-/; ○
でしたm(_ _)m
危うくSambaされるところだった(苦笑) BBMのところは、こうやってるみたい。
$idnotane =~ s/\_/\-/g; >>930
んーエスケープする必要がないのと、trの方が高効率って事で(苦笑) ありがとうございましたですーm(_ _)m深謝
ちょと風邪の悪寒がしてきたので床に就くですですm(_ _)m おつでした。
あとはDNS登録ですね。(>>925)
別途ここに申請内容を書きます。 2ch.net側のDNSの設定依頼です。
月曜にでも、よろしくお願いします。
(新規追加)
&bbr.2ch.net:206.223.147.41:a 朝の4時過ぎあたりから、BBRへのリクエストが来ていない模様。
DNS側は問題なさげ。bbs.cgiかしら。 BBR が止まっています ってほとんどの板のTOPにでてますねぇ。 ざっと該当部分を読んでみたけど、よくわからないなぁ。
手でquery投げるとちゃんと答えは戻ってくるので、
DNS側は動いているみたい。
(ex7で実行)
%dig -t a +norec +short a.b.c.d.bbr.2ch.net @206.223.147.41
127.0.0.2
(DNS側)
@4000000041f3270b0247bf74 cedf966e:e6aa:703f + 0001 a.b.c.d.bbr.2ch.net BBSと同じように動作してるかをチェックしているので、
BBSと同じように「その名前はないよ」を返すようにしてみた。
つまり、>>902 をはずしてみた。 qb6で試験。なおったもより。
initFOXに$FOX->{BBR} = 1の初期化を追加しましたと、FOXさんにお伝えくださいです。 配布しました。
query来はじめました。
徐々に復活するかと。 >>947
なるほど、、、
対応ありがとうございましたですですーm(_ _)m へんだなぁ・・・・
まっ いいか、
気のせい 気のせい cobra2245の器側の設定が概ね終了しました。
明日以降、oyster243から機能を移していきます。
で、その後にoyster243にもRAIDカードを入れていただいて、
BBQ/dnscacheを2台体制にしようとの目論見。 これから出勤なので、まずは備忘メモ。
【 MACKEREL HAS BEEN DOWN 】リブート部隊連絡所 -- Count 01
http://qb5.2ch.net/test/read.cgi/operate/1089118995/134-135
134 名前:root▲ ★[sage] 投稿日:05/01/26 23:01:50 ID:???0
>>133
5.2.1R時代(ずっと安定していた)と比べて変えているのは、
メモリディスクを他のサーバよりもかなり大きくとって、
そこにBBQとdnscache関連のDNSデータとログを入れるようにしたことですね。
それ以外は変えていないので、そこに原因があるのはほぼ間違いなさげです。
cobra2245への切り替え作業を急ぎます。
135 名前:root▲ ★[sage] 投稿日:05/01/26 23:03:18 ID:???0
banaa272は、dnscacheの向きを変えていないのかも。とここにメモ。 BBQ落ちていた間書き込みが恒常的に難しくなったのは、
banana398 = live15
banana272 = aa5/off3
の2つかしら。
今見てみましたが、上記2つは現在もoyster243を向いているのを確認しました。
これらのサーバの/etc/resolv.confを変更しないと、
oyster243にRAID 1カードを入れる手術ができないので、
他にあったかどうかを教えていただけるとたすかります。 レス数が950を超えています。1000を超えると書き込みができなくなります。