RSS 2.0
Category: Tech
サーバーの技術的なこと

サーバーの技術的なこと

 ここでは、サーバーの細かい仕様とかについてだらだら書いてます。
普通にサーバーを使う分にはきっと必要ない情報です。

・まずはスペック羅列
CPU:AMD AthlonII X4 605e
RAM:PC2-6400 2GBx4(CFD Elixir W2U800CQ-2GL5J)
M/B:ASUS M3A78-EM
HDD:500GB SATA2x2 RAID1(WD5000AAKS)
NIC:Intel PRO/1000 PT Server Adapter
OS:CentOS5.3 64bit
Case:Antec miniP180

・ハードウェアについて
 M/BはASUSのM3A78-EMを利用しています
AMD系のM/Bは電源フェーズ数がないがしろにされることが多いので、5フェーズ確保されているコレで
同じような回路構成でnVidiaチップのものもあるのですが、nVidiaはLinuxへの対応が遅いのでAMDチップにしています
正直DisplayPortもHDMIも、さらに言うとDVIも使わないのです
が、マトモな回路構成でmicroATXで、というとこのくらいかなーと
いつも通りオンボードLANを殺して別につけています

CPUが超無駄にクアッドコアです
一応TDP45Wのものを使って消費電力に気を使ってるつもり
かつて9950BEを使っていたときその発熱に死にそうになったので、もう高TDPのCPUは使いません
いつものように忍者で冷却

HDDは今まで別用途で使っていたWD5000AAKSを
製造時期は違いますが、何故か同じHDDが2台あったのでRAID1に
RAID1にするとインストール時のフォーマットで2時間くらいかかりますが、まぁそれはいいとして

NICにはIntel PRO/1000 PTを使ってます
今までは玄人志向のGbE-PCIeを使ってましたが、搭載チップの88E8053は熱暴走しまくるチップなのでした
CentOSのデフォルトで入るドライバがバグ持ち、というのもありおとなしくIntelに交換・・・
ですが、最初はGigabit CTでした
元々メインPCで使ってたのを引っこ抜いて流用、メインPCはオンボードのRealtekという没落っぷり
あんまりにあんまりだったのでCTをもう1枚買おうとしてたのですが、気づけばPRO/1000 PTを買ってました
ちょうど買おうとした日に店に入ってるんですもの

そんな紆余曲折
・・・やっぱりNW機器はケチるとよくないね!

・回線について
 今使っている回線の環境がかなりいいので、速度を殺さない工夫をしています
というかうちのネットワークの一番の肝です
光ネクストのハイスピードタイプなので、公称200Mbpsですがマルチセッション環境下では350Mbps程度出ます
上りも最大で150Mbpsくらい出る感じ
物理的にセッションが分かれてるので、ONUからSWまではカテゴリ7で配線
そこからルーター、サーバーへは全てカテゴリ6eのケーブルを利用してます

物理的にセッションを分けるのは、各セッションでルーターに求める機能が全く違うからです
サーバー系は正直ルーティングだけちゃんとしてくれれば問題なし、ただしルーティングやポートフォワードはそれこそ正確にこなしてもらえないと困る
その他のネットワーク系はメッセンジャー等使う関係でUPnPが必須、さらにルーターの後ろでIP電話を導入してるので対応したものが欲しいわけです

メインルーターはNEC IX2015
設定はちょっち面倒ですが、ちゃんと設定したときの安定性は特筆モノです
このルーターの醍醐味はEtherIPだとは思うのですが、使うときがありません
今まで使ってたRTX1000と比べると明らかに速くなってて大満足
NAPTテーブル数も増えてるので、高負荷時にも安定してるかと

・OSについて
 CentOS大好きっ子なので今回もCentOS5で
RHEL5のGPLクローンなので、RHEL5のdagが使えて便利です
というかRHEL5のdagにproftpdが入ってて狂喜乱舞しましたよ
今まではProFTPdだけ後から入れて、という感じにバージョン管理に難があったのですが、普通にyumで入れて普通に設定すれば動くので便利になりました
相変わらず負荷コントロールが下手だったり、メモリ大食いだったりしますが、アレですよ、できの悪い子ほど可愛い、とか言うじゃないですか(と、できの悪い子代表が言ってみる)
CPUとメモリの物量で何とかすれば、いいじゃないか、と
↑もちろん負荷軽減のための改良はしています

・ユーザーの扱いについて
 Webスペースの各ユーザーに付与しているのは、いわゆるLinuxのユーザーアカウントです。
もちろんグループ指定で権限を設定してあるのであまり突っ込んだことはできませんが、サーバー内の情報を細かく知ることくらいはできると思います。
ユーザーごとに、/とは別のパーティションにホームディレクトリを作成し、管理をしています。
Webスペースは、ホームディレクトリ内の「html」ディレクトリ内にあるファイルを公開をするようにしています。


・HTTPD(Apache)について
 Apacheには、CentOSアップデートの最新版を利用しています。
CentOS5からデフォルトが2.2系になってるので挙動がちょっち変わってるかな
モジュールはDSO形式を利用し、現在は利用しそうなモジュールはだいたい有効にしてあります。
mime_magicを有効にしないとMTが動かなかったのはナイショだ!

GZIP圧縮のパラメーターは細かく設定せず、テキストドキュメントを圧縮して転送するだけにとどめています。
Windowsの時期にCPU使用率のログと比較していたところ、大容量のファイルを圧縮しながら転送しようとしていた形跡があったので、MIMEタイプ指定のみでの制限をしています。
HTMLドキュメントなどのテキストファイルは圧縮し、ファイルサイズが大きくなりがちな画像、音楽、アーカイブデータなどはそのまま転送をしています

Webスペースはhttpd.confのみを利用し、バーチャルホストではディレクティブに各ホストの情報を書いています。
バーチャルホスト利用の場合は個別のログが取れるので、要相談ではありますがApacheログを利用した解析も可能です。

ディレクトリ方式では、管理の簡略化のために該当ディレクトリ(例えば/~hoge)を作成せず、該当利用者の「html」ディレクトリを仮想ディレクトリへAliasで飛ばしています。
ユーザーディレクトリ機能の実装としてはおかしいんですが、実際の階層とは2階層離れているのでチルダの使い方としては間違っていないはず。
また、直後のディレクティブにCGIの許可などの情報を格納しています。
標準ではIndexesを入れているのでご注意。


・スクリプトおよびデータベース(Perl、PHP、Ruby、MySQLなど)について
 スクリプト系は、利用できるモジュールはだいたいインストールしているので妙なことではない限り何でもできると思います。
ただ、SuEXECを無効にしてあるので、ファイルの処理はちょっと面倒かもです。
いや今SuEXECを有効にしても大丈夫でしょうけど。
ついでに、Linuxなので当然といえば当然(というかWindowsが甘すぎるだけ)なんですが、Perlまわりは、パーミッションが少しでもおかしいと問答無用で動きません。
PHPとかはすんなり動いてくれるので便利。構文キレイにするの面倒だけど
Rubyは私よく分かってません(ダメ管理者

データベースは、CentOS標準のMySQLなどを導入しています。MySQLの標準が4.0系じゃなくて良かった
<4.0と>4.1では日本語の扱いが違うらしいので・・・
MySQLを使う方が増えたので、懸案だったデータディレクトリのバックアップも実装しました
RAIDのほかに1日1回別HDDにバックアップしています


・FTPサーバー(ProFTPd)について
 標準的なLinux用FTPデーモンですが、多数のドメインが入っているわりにはバーチャルホストによる切り分けなどはしていません。
ホスト名はrim.zenno.infoで統一です。
FTPDのバーチャルホストは意外と管理が面倒なことが分かり、問題が起こったときの原因が分かりにくくなるので・・・
んで、Linuxのユーザーアカウント=FTPのユーザーアカウントなので、今のところ管理はすっごいラクです。
クライアントとはNATを超えて通信しているので、待ちうけ用のポートを設定してそのポートをルーター設定で開いています。

Webスペースの利用者の方々のアカウントでは、ホームディレクトリの構成ファイルは見えないようにしています。
.Emacsとか見えてもやることないですしね


・NTPサーバーについて
 ログをJST(日本標準時)で正確に取得するために、NTPサーバーと同期を取っています。
サーバーはネットワーク的に近くて、回線が信頼できるところ、ということで、
ntp.jst.mfeed.ad.jp(インターネットマルチフィード社、Stratum=2)
ntp.nict.jp(独立行政法人情報通信研究機構、Stratum=1)
maxpollは14なので、ポーリングが順調にいっていればだいたい4時間半に1回同期しているのでしょうか。

ということで、現状ではだいたいntp.nict.jpに同期しているようです。
Linuxではシステム時刻とBIOS時刻を別に持っているので、1日1回、システム時刻をBIOS時刻として書き込んでいます。

実はうちのNTPは外部に公開しています
NTPサーバーのアドレスにns.lowfreq.infoを指定するとちゃんとポーリングしてくれるかと

こんな感じの、わけが分からない資料です。
突っ込んだトコロの参考にしていただければ

では、お疲れ様でした

Information