御茶義理の人のにっき

御茶義理の人が1998年からつらつらと書き連ねているポルトガルなどの新着情報

サーバダウン

世界の動画サイトからアニメやお笑いを一気に検索して全話見られる Ribbon Douga Network( rdn.jp )
2004/04/05
 02:30 頃 mrtg から snmpd のデータが取得できないというエラーがメールにバンバン届き、サーバに接続しても ping も通らないので AT-Link に連絡。
 その間にりぼんさんのトップに報告。
 10 分ほどで AT-Link から連絡があり、再起動手続きにはいるとのこと。でも待てど暮らせど立ち上がらない、10000 回打っている ping はずーっと Request time out. の文字が羅列される。30 分ほどしてメール着信と同時に電話がかかってくる。夜中の 3 時。起きているけど電話対応する物なのでしょうか?まあ、私は部屋に電話があるからいいけど、個人契約のサーバは少し考慮した方がいいと思います。しかし、電話で伝える必要がある緊急性ではありました。すなわち、一台のハードディスクがクラッシュして、立ち上げ時にカーネルパニックで立ち上がらないとのこと。多分、ソフトウエア RAID なのでその領域に不整合が出て立ち上がらないので、/dev/md0 のマウントを /dev/hdb2 などに変えてくれたら、立ち上がると思うけどどうせ不安定なまま立ち上げるなら OS をクリーンインストールしてくれると言ってくれているので、お願いすることにしました。6.2 から 7.3 になり、HDD が 20GB から 40GB になりました。ただ納得いかないのは後でステータスを見ると SEAGATE 製のドライブだったことですね。今までは両方とも QUANTUM すなわち MAXTOR だったのですけど。個人的に何度も書いていますが、QUANTUM 派ですから。
 実は私が一番気になっていたのが、DB のことで私は posgresql の data をバックアプすれば他のサーバで動くと思っていたのですが、同じバージョンの同じインストールをした postgres に入れても、全文認識されず昔作られた物しか認識されませんでした。どうやら pg_dump でダンプを撮らないとダメなんですね。ものすごい経験になりましたが、DB は復活できるのか必死になって考えていました。てか、冷や汗だらだらで体臭がきつかったです。いくら頑張って色々コマンドを試しても、DB に接続できる物のデータを吸い取ってくれません。本気でバイナリーを直接読み出すプログラムを書こうと思っていました。この時点で頭の中は、DB が壊れていないか、新しいサーバで読み出せるかでいっぱいでした。
 OS 再インストールと、/home など指定した位置のデータ吸い上げは全て AT-LINK が無償でやってくれるって事なので、お願いして寝るとする。この次点で 06:00 を少し回っていました。だいたい 2,3 時間で終わると言うことなので、08:20 に一旦死にながら起きあがり会社に電話して休み、そしてもう一度 11 時まで爆睡。歳のせいか本当に徹夜が出来なくなりました。寝ている間にメールが 10 通ほど届いており、まだ出来ませんというお詫びのメールでした。結構律儀。
 結局引き渡されたのは昼少し前で、それから必死にインストール作業。どうやら最新の rpm は全て当ててくれてあったので、だいたい次のようなのをインストール。基本的にソースから。
openssl		http://www.openssl.org/source/openssl-0.9.7d.tar.gz
automake	http://ftp.gnu.org/gnu/automake/automake-1.8.3.tar.gz
autoconf	http://ftp.gnu.org/gnu/autoconf/autoconf-2.59.tar.gz
lynx	http://lynx.isc.org/release/lynx2.8.5.tar.gz
wget	http://ftp.gnu.org/pub/gnu/wget/wget-1.8.2.tar.gz
cvs	http://ccvs.cvshome.org/servlets/ProjectDownloadList?action=download&dlID=351
libtool	http://ftp.gnu.org/gnu/libtool/libtool-1.5.2.tar.gz
less http://ftp.gnu.org/gnu/less/less-382.tar.gz
rsync ftp://ftp.samba.org/pub/rsync/rsync-2.6.0.tar.gz
make http://ftp.gnu.org/gnu/make/make-3.80.tar.gz
glibc http://ftp.gnu.org/gnu/glibc/
bzip2	ftp://sources.redhat.com/pub/bzip2/v102/bzip2-1.0.2.tar.gz
nmap	http://download.insecure.org/nmap/dist/nmap-3.50.tgz
tcpdump http://www.tcpdump.org/release/tcpdump-3.8.3.tar.gz
libpcap http://www.tcpdump.org/release/libpcap-0.8.3.tar.gz
openssh
wget ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/rpm/RH73/openssh-3.5p1-1.i386.rpm
wget ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/rpm/RH73/openssh-askpass-3.5p1-1.i386.rpm
wget ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/rpm/RH73/openssh-askpass-gnome-3.5p1-1.i386.rpm
wget ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/rpm/RH73/openssh-clients-3.5p1-1.i386.rpm
wget ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/rpm/RH73/openssh-server-3.5p1-1.i386.rpm
gc	http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc6.2.tar.gz
w3m	http://prdownloads.sourceforge.net/w3m/w3m-0.5.tar.gz?download
libpng	http://prdownloads.sourceforge.net/png-mng/libpng-1.2.5.tar.gz?use_mirror=keihanna
gd	http://www.boutell.com/gd/http/gd-1.8.4.tar.gz

wget http://updates.redhat.com/7.3/en/os/i386/glibc-2.2.5-44.i386.rpm
wget http://updates.redhat.com/7.3/en/os/i386/glibc-common-2.2.5-44.i386.rpm
wget http://updates.redhat.com/7.3/en/os/i386/glibc-devel-2.2.5-44.i386.rpm
wget http://updates.redhat.com/7.3/en/os/i386/glibc-profile-2.2.5-44.i386.rpm
wget http://updates.redhat.com/7.3/en/os/i386/glibc-utils-2.2.5-44.i386.rpm
wget http://updates.redhat.com/7.3/en/os/i386/nscd-2.2.5-44.i386.rpm
wget http://updates.redhat.com/7.3/en/os/i386/xinetd-2.3.11-1.7x.i386.rpm
wget http://updates.redhat.com/7.3/en/os/i386/wget-1.8.2-4.73.i386.rpm
wget http://updates.redhat.com/7.3/en/os/i386/wu-ftpd-2.6.2-11.73.1.i386.rpm
wget http://updates.redhat.com/7.3/en/os/i386/zlib-1.1.4-8.7x.i386.rpm
wget http://updates.redhat.com/7.3/en/os/i386/zlib-devel-1.1.4-8.7x.i386.rpm
wget http://updates.redhat.com/7.3/en/os/i386/up2date-2.8.40-3.7.3.i386.rpm
wget http://updates.redhat.com/7.3/en/os/i386/tar-1.13.25-4.7.1.i386.rpm

wget http://updates.redhat.com/7.3/en/os/i386/gcc-2.96-113.i386.rpm
wget http://updates.redhat.com/7.3/en/os/i386/gcc-c++-2.96-113.i386.rpm
wget http://updates.redhat.com/7.3/en/os/i386/gcc-chill-2.96-113.i386.rpm
wget http://updates.redhat.com/7.3/en/os/i386/gcc-g77-2.96-113.i386.rpm
wget http://updates.redhat.com/7.3/en/os/i386/gcc-java-2.96-113.i386.rpm
wget http://updates.redhat.com/7.3/en/os/i386/gcc-objc-2.96-113.i386.rpm
wget http://updates.redhat.com/7.3/en/os/i386/gdb-5.2-2.i386.rpm
wget http://updates.redhat.com/7.3/en/os/i386/gdm-2.2.3.1-23.i386.rpm
wget http://updates.redhat.com/7.3/en/os/i386/file-3.39-8.7x.i386.rpm
wget http://updates.redhat.com/7.3/en/os/i386/cpp-2.96-113.i386.rpm
wget http://updates.redhat.com/7.3/en/os/i386/ark-3.0.5a-0.73.0.i386.rpm
wget http://updates.redhat.com/7.3/en/os/i386/arpwatch-2.1a11-17.7.3.2.i386.rpm
 それから xntpd と BIND と snmpd をインスコ。言語系は ruby 。あとは pear と CPAN で php と perl のモジュールを引っ張って来ました。pear や CPAN は基本的に最後の最後。というのも、入っていないと入らないモジュールが多いためで、データベース系などはインストールされていないと弾かれますからね。
HTTP::Date
Bundle::CPAN
HTML::TokeParser
HTML::Template
XML::Parser
XML::RSS
Digest::MD5
CPAN
DBI
DBD
export PGLIB=/usr/local/pgsql/lib
export PGUSER=postgres
DBD::Pg
DBD::JDBC
DBD::SQLite
CGI
CGI::Carp
Net::HTTP
Net::SMTP
LWP
pear はちなみに
pear install Archive_Tar
pear install PHPUnit
pear install bz2
pear install MP3_ID
pear install Crypt_RC4
pear install Net_IPv4
pear install Net_URL
pear install SQLite
pear install HTML_Crypt
pear install HTML_Form
pear install HTML_Javascript
pear install HTML_Template_PHPLIB
pear install HTML_TreeMenu
pear install HTTP_Request
pear install XML_HTMLSax
pear install XML_Transformer
pear install XML_Parser
pear install XML_Tree
pear install XML_Util
pear install XML_RPC
pear install XML_CSSML
pear install XML_RSS
pear install XML_SVG
これぐらい。メール系は無料サーバなので入れていません。
それから apache + php をいれて、mod_gzip を入れて、proftpd を入れてって感じで、大きなアプリケーションのインストール。
 あとは、cron の設定。で、ここらへんまでは自分の中でマニュアルを持っているので 2,3 時間で終わり。主にコンパイル時間かな。呪文だけでインストールが出来るのは自動で全部やるスクリプトを書いてありますから、あっという間ですわ。
 それから古いデータベースを祈るように稼働させると、なんとか読み出せた。なので早速新しいサーバへ移動させるためにデータをダンプ、コマンドは pg_dump -d DBNAME > output.sql。これを ftp で渡して新しいサーバで psql -d NEWDB -f output.sql ってやって読み込み。が、エラー。**** のデータは壊れているよ〜って出て読み込まれない。出来たデータを見ても、確かに 4 件ぐらい。ギャー。本気で死ぬかと思いました。
 でもここで諦めてはいけません。データベースをバックアップできないようなデータベースシステムはないはずですから、pg_dump のオプションを調べると、-D という明示的に INSERT 文を作って出力するってのがありました。それで出力すると、EUC で保存された部分は \222\232 などエスケープコードとして表示されて、全文テキストで出力されますのでエラーもわかりやすくなります。
 そして、気を取り直してインサート。出るわでるわ、エラーが。20000 件ほどユーザがいるわけですが、 60 件ほどエラーが出ました。これは初めの頃 EUC の変換を完璧にしていなかったのが原因なのと、あとは半角カナ及び機種依存文字、絵文字が書かれている場合に NON EUC として弾かれました。バージョンが上がって、チェックが厳しくなっているようですね。試しに旧サーバで使っていた CGI をそのまま使って、依存文字で書くと DB に弾かれました。だいぶんバージョンアップしているんだ。そんなわけで、サインアップ関連の CGI にて EUC の確からしさを正しく判断するようにしました。これで、次回の統合時にはエラーが出なくなるはずです。エラーが出たデータは、その部分を切り取って、変更しました。
 あと、なぜか quota が動いていなかったので、設定して再起動。quota なんてのは絶対に必要な物なんだから、デフォで入れておいてほしい物です。さすがに最近のカーネルはデフォで入っているのでカーネル再コンパイルなんてことは必要なく、/etc/fstab を書き換えて quota.user を作って再起動で済みますが、再起動はリモートでは極力やりたくありませんからね。
 ここで一旦 www サーバの再起動。
 これから各種設定のチューニングを行いました。一旦先に www だけ復活させたのは、あまりにも落ちているのはダメだと思ったからですわ。ftp はセキュリティの確保を確かめきるまでは開けられませんしね。
 そんなのをして 27 時に FTP サーバの allow host を開放。
 なんとか最低限復活しました。
 本日の気分:blue さんが変:0 時間( 計 0 時間 ),明日のラッキーアイテム:サーバダウン

コメント

お名前
コメント

連絡先 skypeID( GochaGiri-の人 )のを no へ、人を hito に変換 | ©1998-2008 Yuumi