2011年12月22日木曜日

LSI CacheCadeつくり太郎

LSIのCache Cadeの設定方法だー

事前に下記のサイトで登録して、Activate keyを手に入れる。
http://softwarelicense.lsi.com/

ストレージとかエンクロージャに事前にSSDさしとく

・Megaraid Storage Managerで対象サーバに接続して、MegaRaid Advanced Software Optionsの
"Manage MegaRAID Advanced Software Options"をクリックー。


・Activateボタンおすー


・Activate keyいれろっていわれるから、事前に手に入れたActivate key入力もしくは、fileで読み込ませる


・Actionsから Create CacheCadeをクリック


・つかうSSDを選んでADDする


・ADDしたらCreate Cache Cadeをクリック


・Nextぼたんおすー


・Createボタンおすー


・できあがるからnext


・Finishでー



パフォーマンスはいま検証中なので。あとであげます

2011年12月21日水曜日

Software Design太郎

このたび、機会を頂き
Software Design 2012/01月号に『自作インフラのススメ アメーバを支えるストレージサーバの構築』ということで記事を執筆させていただきました。
よかったらみてみてください。

2011年12月20日火曜日

lighttpd バージョン隠す太郎

lighttpdでバージョン隠すぽ


#vim /usr/local/lighttpd/conf/lighttpd.conf
#↓追加するだけ
server.tag = ""

#追加したら再起動
/etc/init.d/lighttpd restart

2011年11月15日火曜日

Megacli太郎 2

MegaCliのコマンド少しまとめる
RAIDカードはLSI Megaraid9260i16


#helpの表示
/opt/MegaRAID/MegaCli/MegaCli64 -help

#Virtual disk groupの表示
/opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -L0 -a0

Adapter 0 -- Virtual Drive Information:
Virtual Drive: 0 (Target Id: 0)
Name :
RAID Level : Primary-1, Secondary-0, RAID Level Qualifier-0
Size : 1.818 TB
State : Degraded
Strip Size : 512 KB
Number Of Drives : 2
Span Depth : 1
Default Cache Policy: WriteBack, ReadAhead, Cached, Write Cache OK if Bad BBU
Current Cache Policy: WriteBack, ReadAhead, Cached, Write Cache OK if Bad BBU
Access Policy : Read/Write
Disk Cache Policy : Enabled
Encryption Type : None
Default Power Savings Policy: Controller Defined
Current Power Savings Policy: None
Can spin up in 1 minute: Yes
LD has drives that support T10 power conditions: No
LD's IO profile supports MAX power savings with cached writes: No

#physical diskの表示
#長いので、結果は一部省略
/opt/MegaRAID/MegaCli/MegaCli64 -PDList -a0

Adapter #0

Enclosure Device ID: 17
Slot Number: 0
Enclosure position: 0
Device Id: 39
Sequence Number: 1
Media Error Count: 0
Other Error Count: 0
Predictive Failure Count: 0
Last Predictive Failure Event Seq Number: 0
PD Type: SATA
Raw Size: 1.819 TB [0xe8e088b0 Sectors]
Non Coerced Size: 1.818 TB [0xe8d088b0 Sectors]
Coerced Size: 1.818 TB [0xe8d00000 Sectors]
Firmware state: Unconfigured(good), Spun down
SAS Address(0): 0x500304800099b8cc
Connected Port Number: 0(path0)
Inquiry Data: MN1220F31GS06DHitachi HDS723020BLA642 MN6OA5C0
FDE Capable: Not Capable
FDE Enable: Disable
Secured: Unsecured
Locked: Unlocked
Needs EKM Attention: No
Foreign State: None
Device Speed: 6.0Gb/s
Link Speed: 6.0Gb/s
Media Type: Hard Disk Device
Drive: Not Certified
Drive Temperature :31C (87.80 F)

#virtual、physicalまとめて表示
/opt/MegaRAID/MegaCli/MegaCli64 -LDPDinfo -a0 | less

#virtual、physicalまとめて表示(もすこし細かく)
/opt/MegaRAID/MegaCli/MegaCli64 -CfgDsply -aALL
==============================================================================
Adapter: 0
Product Name: LSI MegaRAID SAS 9260-16i
Memory: 512MB
BBU: Absent
Serial No: XXXXXXXXX
==============================================================================
Number of DISK GROUPS: 2

DISK GROUP: 0
Number of Spans: 1
SPAN: 0
Span Reference: 0x00
Number of PDs: 2
Number of VDs: 1
Number of dedicated Hotspares: 0
Virtual Drive Information:
Virtual Drive: 0 (Target Id: 0)
Name :
RAID Level : Primary-1, Secondary-0, RAID Level Qualifier-0
Size : 1.818 TB
State : Degraded
Strip Size : 512 KB
Number Of Drives : 2
Span Depth : 1
Default Cache Policy: WriteBack, ReadAhead, Cached, Write Cache OK if Bad BBU
Current Cache Policy: WriteBack, ReadAhead, Cached, Write Cache OK if Bad BBU
Access Policy : Read/Write
Disk Cache Policy : Enabled
Encryption Type : None
Default Power Savings Policy: Controller Defined
Current Power Savings Policy: None
Can spin up in 1 minute: Yes
LD has drives that support T10 power conditions: No
LD's IO profile supports MAX power savings with cached writes: No
Physical Disk Information:
Physical Disk: 0

#physdrv[17:0]の番号は、PDlListのEnclosure Device IDとSlot Number
#HDD(エンクロージャーの保守ランプ点滅させる)
/opt/MegaRAID/MegaCli/MegaCli64 -Pdlocate start physdrv[17:0] -a0

#HDD(エンクロージャーの保守ランプ点滅やめる)
/opt/MegaRAID/MegaCli/MegaCli64 -Pdlocate stop physdrv[17:0] -a0

#HDDのonline
/opt/MegaRAID/MegaCli/MegaCli64 -PDOnline -PhysDrv[17:0] -a0

#HDDのoffline
/opt/MegaRAID/MegaCli/MegaCli64 -PDOffline -PhysDrv[17:0] -a0

#HDDのステータスをunconfigure badからgoodに替える
/opt/MegaRAID/MegaCli/MegaCli64 -PDMakeGood -PhysDrv[17:0] -a0

#ディスクのrebuild 実行(うまくいかなかった)
/opt/MegaRAID/MegaCli/MegaCli64 -PDRbld -Start -PhysDrv [17:0] -a0

#ディスクのrebuild 停止(うまくいかなかった)
/opt/MegaRAID/MegaCli/MegaCli64 -PDRbld -Stop -PhysDrv [17:0] -a0

#ディスクの進行状況表示
/opt/MegaRAID/MegaCli/MegaCli64 -PDRBLD -showprog -physdrv [17:0] -a0

#enclosureの情報表示
#ながいけど
/opt/MegaRAID/MegaCli/MegaCli64 -EncInfo -a0

Number of enclosures on adapter 0 -- 4

Enclosure 0:
Device ID : 16
Number of Slots : 24
Number of Power Supplies : 2
Number of Fans : 5
Number of Temperature Sensors : 1
Number of Alarms : 1
Number of SIM Modules : 0
Number of Physical Drives : 0
Status : Normal
Position : 1
Connector Name : Ports 4-7
Connected in Multipath : Yes(connected in Multipath mode with Enclosure device id: 17. Both the ESMs represent the same enclosure)

Inquiry data :
Vendor Identification : LSI CORP
Product Identification : SAS2X36
Product Revision Level : 0417
Vendor Specific : x36-55.4.23.0

Number of Voltage Sensors :2

Voltage Sensor :0
Voltage Sensor Status :OK
Voltage Value :5020 milli volts

Voltage Sensor :1
Voltage Sensor :Crit Over
Voltage Sensor Status :Critical
Voltage Value :20440 milli volts

Enclosure 1:
Device ID : 17
Number of Slots : 24
Number of Power Supplies : 2
Number of Fans : 5
Number of Temperature Sensors : 1
Number of Alarms : 1
Number of SIM Modules : 0
Number of Physical Drives : 24
Status : Normal
Position : 1
Connector Name : Ports 0-3
Connected in Multipath : Yes(connected in Multipath mode with Enclosure device id: 16. Both the ESMs represent the same enclosure)

Inquiry data :
Vendor Identification : LSI CORP
Product Identification : SAS2X36
Product Revision Level : 0417
Vendor Specific : x36-55.4.23.0

Number of Voltage Sensors :2

Voltage Sensor :0
Voltage Sensor Status :OK
Voltage Value :5020 milli volts

Voltage Sensor :1
Voltage Sensor :Crit Over
Voltage Sensor Status :Critical
Voltage Value :20430 milli volts

Enclosure 2:
Device ID : 43
Number of Slots : 12
Number of Power Supplies : 2
Number of Fans : 3
Number of Temperature Sensors : 1
Number of Alarms : 1
Number of SIM Modules : 0
Number of Physical Drives : 12
Status : Normal
Position : 1
Connector Name : Ports 12-15
Connected in Multipath : No

Inquiry data :
Vendor Identification : LSI CORP
Product Identification : SAS2X28
Product Revision Level : 0417
Vendor Specific : x36-55.4.23.0

Number of Voltage Sensors :2

Voltage Sensor :0
Voltage Sensor Status :OK
Voltage Value :5010 milli volts

Voltage Sensor :1
Voltage Sensor Status :OK
Voltage Value :12210 milli volts

Enclosure 3:
Device ID : 245
Number of Slots : 24
Number of Power Supplies : 0
Number of Fans : 1
Number of Temperature Sensors : 3
Number of Alarms : 0
Number of SIM Modules : 0
Number of Physical Drives : 0
Status : Normal
Position : 1
Connector Name : Unavailable
Connected in Multipath : No

Inquiry data :
Vendor Identification : LSI CORP
Product Identification : Bobcat
Product Revision Level : 0504
Vendor Specific : x36-25.5.4.0


Exit Code: 0x00

bonnieで負荷かけ太郎

bonnieで書き込みまくるおー


#サーバの搭載メモリは、2G
#-x で繰り返す回数
#使用してるSSDは、Intel W300G310です
/usr/sbin/bonnie++ -d /data -u root -r 4096 -x 1500


あとで、どれくらい劣化するかまとめる

2011年11月14日月曜日

Oracle Orion太郎

IOの測定ツール探してたら、みつけたのでとりあえずやってみた
RAWデバイスもいけるお



#http://www.oracle.com/technetwork/indexes/downloads/index.htmlから、
#oracle orionをダウンロード会員登録しないと落とせないお

#orion展開 実行権限つける
gunzip orion_linux_x86-64.gz
chmod 755 orion_linux_x86-64

#orionがあるディレクトリにlunファイルをつくる
#ファイルの中にはテスト対象のデバイスをかく
vim yattarou.lun
/dev/sda1

#テスト実行
#simple 8K 単位の Random Read (Small I/O)
#1M 単位の Random Read (Large I/O)を段階的に実行
#yattarou lunファイルの.より前
#num_disks 物理ディスクの本数
./orion_linux_x86-64 -run simple -testname yattarou -num_disks 1

#実行するとこうなる
#使用したSSDは、Intel W300G310
./orion_linux_x86-64 -run simple -testname yattarou -num_disks 1
ORION: ORacle IO Numbers -- Version 11.1.0.7.0
yattarou_20111114_2047
Test will take approximately 9 minutes
Larger caches may take longer

#結果を確認 グラフにしやすいようにcsvとかができる
#なかなかのIOPSがでてるみたい
cat yattarou_20111114_2047_summary.txt
ORION VERSION 11.1.0.7.0

Commandline:
-run simple -testname yattarou -num_disks 1

This maps to this test:
Test: yattarou
Small IO size: 8 KB
Large IO size: 1024 KB
IO Types: Small Random IOs, Large Random IOs
Simulated Array Type: CONCAT
Write: 0%
Cache Size: Not Entered
Duration for each Data Point: 60 seconds
Small Columns:, 0
Large Columns:, 0, 1, 2
Total Data Points: 8

Name: /dev/sda1 Size: 300069018112
1 FILEs found.

Maximum Large MBPS=274.69 @ Small=0 and Large=2
Maximum Small IOPS=30649 @ Small=5 and Large=0
Minimum Small Latency=0.08 @ Small=1 and Large=0


こんな感じで、簡単にできるんだなー。
オプションも結構あって、いろんな測定ができるみたいなので
もすこし調べたら、またかきます太郎

2011年8月23日火曜日

omreport太郎

DELLが提供してるomreportコマンドつかたからかく。


#HWの状況確認
#この場合、memoryがくさい太郎

/opt/dell/srvadmin/bin/omreport chassis
Health

Main System Chassis

SEVERITY : COMPONENT
Ok : Fans
Ok : Intrusion
Critical : Memory
Unknown : Power Management
Ok : Processors
Ok : Temperatures
Ok : Voltages
Ok : Hardware Log
Ok : Batteries

For further help, type the command followed by -?

#memoryの状態をみてみる
#DIMM_A5が不調のようだー
/opt/dell/srvadmin/bin/omreport chassis Memory
Memory Information

Health : Critical

Attributes of Memory Array(s)
Attributes : Location
Memory Array 1 : System Board or Motherboard

Attributes : Use
Memory Array 1 : System Memory

Attributes : Installed Capacity
Memory Array 1 : 24576 MB

Attributes : Maximum Capacity
Memory Array 1 : 32768 MB

Attributes : Slots Available
Memory Array 1 : 6

Attributes : Slots Used
Memory Array 1 : 6

Attributes : ECC Type
Memory Array 1 : Multibit ECC

Total of Memory Array(s)
Attributes : Total Installed Capacity
Value : 24576 MB

Attributes : Total Installed Capacity Available to the OS
Value : 24097 MB

Attributes : Total Maximum Capacity
Value : 32768 MB

Details of Memory Array 1
Index : 0
Status : Ok
Connector Name : DIMM_A1
Type : DDR3 - Synchronous Registered (Buffered)
Size : 4096 MB

Index : 1
Status : Ok
Connector Name : DIMM_A2
Type : DDR3 - Synchronous Registered (Buffered)
Size : 4096 MB

Index : 2
Status : Ok
Connector Name : DIMM_A3
Type : DDR3 - Synchronous Registered (Buffered)
Size : 4096 MB

Index : 3
Status : Ok
Connector Name : DIMM_A4
Type : DDR3 - Synchronous Registered (Buffered)
Size : 4096 MB

Index : 4
Status : Critical
Connector Name : DIMM_A5
Type : DDR3 - Synchronous Registered (Buffered)
Size : 4096 MB

Index : 5
Status : Ok
Connector Name : DIMM_A6
Type : DDR3 - Synchronous Registered (Buffered)
Size : 4096 MB



2011年8月2日火曜日

SYN ACKが返ってこない太郎

すげ、こまったお。

LBの配下に、WEBサーバ(apache)を複数台置いて画像を配信してたら
MAC(OS X10.8.6)、ubuntu(11.04)で画像が見れたり、見れなかったり。

状況kwsk
・LBの振分ルールはラウンドロビン。
・LBからWEBサーバに対しては、SNATしてる。
・WEBサーバは常時2000コネクションくらい張っているんだけど
接続がまったくない状態でも同じ現象が発生する。
・逆にWEBサーバが1台やら2台だと再現しない。
・上記端末から、画像取得ができない(WindowsXP、Vista、7)はさくさくいける。
・ブラウザ依存じゃなかった(Firefox、Opera、Safari、Choromeでもだめ)
・IPV6はONでもOFFでもでる。
・Wiresharkでキャプチャしたら、SYN+ACKが返ってこない・SYNのリトライたくさん。

原因は・・・

・サーバ側で、net.ipv4.tcp_tw_recycleが有効になってて
・クライアント側のnet.ipv4.tcp_timestampsが有効になってて
・NATしてる環境だとSYNパケットを落とす?ようだ。

なんでかと考えたら。

クライアント側が持ってるTCPのタイムスタンプとサーバ側で保持してるタイムスタンプに
相違がでてうまく通信できないのか・・・サーバ側が、net.ipv4.tcp_tw_recycleを
有効にしてる=すぐ再利用しようとする→タイムスタンプがすれる?ってことかな・・

うーン
説明難しい太郎

WEBサーバ側で↓の設定いれたらとりあえず解決した。

#今の設定確認
/sbin/sysctl -a | grep tw_recycle
net.ipv4.tcp_tw_recycle = 1

#sysctl.confをバックアップ・編集
cp -rp /etc/sysctl.conf /etc/sysctl.conf.back

vim /etc/sysctl.conf

#追記
net.ipv4.tcp_tw_recycle = 0

#差分確認
vimdiff /etc/sysctl.conf /etc/sysctl.conf.back

#反映
/sbin/sysctl -p

#確認
/sbin/sysctl -a | grep tw_recycle
net.ipv4.tcp_tw_recycle = 0



ただ、無効にするとTIME_WAITの数が多くなるので
socket使い果たさないようにきをつけお

nginx bot弾く太郎

nginxでbotを弾くお。
かんたん。


vim /usr/local/nginx/conf/nginx.conf

#下記を追加して、yattabot(大文字小文字関係なし)にはじく
#今回は、user_agentに偽装してるやつがいたので$http_user_agentで弾いた

if ($http_user_agent ~* Yattabot) {
return 404;
}

#nginxのconf読み込み
/etc/init.d/nginx reload



FirefoxのUser Agent Switcherで確認すればはじけることわかる

2011年7月19日火曜日

lighttpd mod_status太郎


#server.modulesのmod_statusのコメント解除
server.modules = (
"mod_status",

#configに追記
$HTTP["remoteip"] == "127.0.0.1/32" {
status.status-url = "/server-status"
}

#lighttpd再起動
/etc/init.d/lighttpd restart

#ブラウザから確認
http://192.168.11.1/server-status



取れる情報は、下記がとれるお
・uptime
・起動開始時間
・Request数
・Traffic
・開始時間からの平均request・Trafiic
・5分間のの平均request・Trafiic
・connection数
・connectionの内容(client ipとかreadなのかwriteなのかとか)

ただ・・・

トラフィックが90M程度なのに、statusに表示されてるTrafficが20Gとか
なってたからたぶん信用はできない太郎。

2011年7月16日土曜日

lighttpd mod_compress太郎

lighttpdでできるmod_compress。

これ使うことで、jsとかcssとかhtmlを圧縮(gzip)して配信できるので
トラフィックの削減になる太郎。

ピーク時に90Mくらいだったのが、20Mへった。


#lighttpd 1.4.19のインストール済み環境で下準備
#作成するディレクトリは、root_documentの配下に。
mkdir -p /usr/local/yattarou/http/lighttpd_compress

#ioに不安があったのでtmpfsでマウント
mount -t tmpfs -o size=400m /dev/shm /usr/local/yattarou/http/lighttpd_compress

#lighttpdで書き込み権限のあるユーザに変更
chown yata_web: /usr/local/yattarou/http/lighttpd_compress

#lighttpdの設定ファイル編集
cp -rp /usr/local/lighttpd/conf/lighttpd.conf /usr/local/lighttpd/conf/lighttpd.conf.yymmdd

vim /usr/local/lighttpd/conf/lighttpd.conf

#server.modules欄のmod_compressのコメント解除
server.modules = (

"mod_compress",

#virtual hostの設定欄に追加
$HTTP["host"] == "yattarou.jp" {
server.document-root = "/usr/local/yattarou/http"
server.errorlog = "//usr/local/yattarou/logs/lighttpd.error_yattarou.log"

#下を追加
#圧縮したファイルをおくディレクトリを指定
compress.cache-dir = "/usr/local/yattarou/http/lighttpd_compress"

#圧縮するファイルを指定
compress.filetype = ("text/plain", "text/html", "text/javascript", "text/css")

#lighttpd再起動
/etc/init.d/lighttpd restart



再起動後、compres.cache-dirにしたとこをlsすると、ファイルが圧縮されてるのがわかるお。
あとは、対象のコンテンツをfirebugとかでみると、ファイルサイズが結構小さくなってるのがわかるぽ。

2011年6月30日木曜日

StoreUrlRewrite太郎

squid2.7で使える機能だお。

squidが画像をcacheするとき、同じ画像なんだけどドメインがちがう場合
同じcacheとしては扱ってくれないみたい。
(URLで一意で認識してるぽい・・ソース読んでないからわかんね)

なので、squid側でリライトして、同じ画像としてcacheできるように仕込んでみたお。
yattarou.jpでアクセスがきた画像をyattarou01の画像としてリライト。


#squid.confに下記を追加
acl store_rewrite_list dstdomain yattarou.jp origin.yattarou01.jp
storeurl_access allow store_rewrite_list
storeurl_rewrite_program /usr/local/sbin/yatta_rewite.pl
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY

refresh_pattern -i (/cgi-bin/|\?) 0 0% 0

#スクリプト作成
vim /usr/local/sbin/yatta_rewite.pl
#!/usr/bin/perl

$| = 1;
while (<>) {
chomp;

@X = split;
$x = $X[0];
$_ = $X[1];

# print STDERR $_ . "\n";
if (m/yattarou\.jp(.*?)\/(.*?) /) {
print "http://yattarou01.jp" . $2 . ".SQUIDINTERNAL/" . $3 . "\n";
} else {
print $_ . "\n";
}
}

#squid再起動
/etc/init.d/squid stop
/etc/init.d/squid start

tmpfs太郎




mkdir -p /tmpfs/proxy_temp

#tmpfsを200Mで作成
mount -t tmpfs -o size=200m /dev/shm /tmpfs/proxy_temp

#nginx停止
/etc/init.d/nginx stop

mv /usr/local/nginx_LB/proxy_temp /usr/local/nginx_LB/proxy_temp.bak
ln -s /tmpfs/proxy_temp /usr/local/nginx_LB/proxy_temp
chown nobody:root /tmpfs/proxy_temp /usr/local/nginx_LB/proxy_temp
ls -l /usr/local/nginx_LB/
ls -ld /tmpfs/proxy_temp

#nginx起動
/etc/init.d/nginx start

DRBD太郎

#まずprimary、secondaryのサーバでパーティションきっておく(ファイルシステムはまだ)


cd /usr/local/src
wget http://oss.linbit.com/drbd/8.3/drbd-8.3.8.1.tar.gz
tar xvf drbd-8.3.8.1.tar.gz
cd drbd-8.3.8.1
./configure --with-km --prefix=/usr/local/drbd-8.3.8.1
make
make install

#drbdのモジュールを読み込むので再起動
/sbin/init 6

vim /etc/drbd.conf
#protocol Cはデータを自分と相手のディスクに送った時点で完了
#rate は同期の転送速度
#on-io-errot detach は、障害時、ディスクレスモードで動作(推奨らしい)

global {
usage-count no;
}

common {
syncer { rate 10M; }
}

resource yatta {
protocol C;

startup {
wfc-timeout 0;
degr-wfc-timeout 120;
become-primary-on yatta01;
}
disk {
on-io-error detach;
}
net {
timeout 60; # 6s
connect-int 10; # 10s
ping-int 10; # 10s
ping-timeout 5; # 500ms
max-buffers 2048; # 2048PAGE_SIZE
max-epoch-size 2048; # max data block size
}
syncer { rate 10M; # sync when r0 and r1 are finished syncing.
}

on yatta01 {
device /dev/drbd0;
disk /dev/sda4;
address XXX.XXX.XXX.XXX:7789;
meta-disk internal;
}
on yatta02 {
device /dev/drbd0;
disk /dev/sda4;
address XXX.XXX>XXX.XXX:7789;
meta-disk internal;
}
}

メタデータの作成(プライマリ・セカンダリで)
/sbin/drbdadm create-md yatta01
You want me to create a v08 style flexible-size internal meta data block.
There appears to be a v08 flexible-size internal meta data block
already in place on /dev/sda4 at byte offset 225216385024
Do you really want to overwrite the existing v08 meta-data?
[need to type 'yes' to confirm] yes

Writing meta data...
initializing activity log
NOT initialized bitmap
New drbd meta data block successfully created.

#起動(プライマリ)
/etc/init.d/drbd start
Starting DRBD resources: [
yatta
Found valid meta data in the expected location, 225216385024 bytes into /dev/sda4.
d(yatta) s(yatta) n(yatta) ]..........
***************************************************************
DRBD's startup script waits for the peer node(s) to appear.
- In case this node was already a degraded cluster before the
reboot the timeout is 120 seconds. [degr-wfc-timeout]
- If the peer was available before the reboot the timeout will
expire after 0 seconds. [wfc-timeout]
(These values are for resource 'yatta'; 0 sec -> wait forever)
To abort waiting enter 'yes' [ 35]:
0: State change failed: (-2) Need access to UpToDate data
Command '/sbin/drbdsetup 0 primary' terminated with exit code 17
0: State change failed: (-2) Need access to UpToDate data
Command '/sbin/drbdsetup 0 primary' terminated with exit code 17
0: State change failed: (-2) Need access to UpToDate data
Command '/sbin/drbdsetup 0 primary' terminated with exit code 17
0: State change failed: (-2) Need access to UpToDate data
Command '/sbin/drbdsetup 0 primary' terminated with exit code 17
0: State change failed: (-2) Need access to UpToDate data
Command '/sbin/drbdsetup 0 primary' terminated with exit code 17

#statusを見てみる
/etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.3.8.1 (api:88/proto:86-94)
GIT-hash: 0d8589fcc32c874df57c930ca1691399b55ec893 build by root@yatta, 2011-06-23 21:26:45
m:res cs ro ds p mounted fstype
0:??not-found?? Connected Secondary/Secondary Inconsistent/Inconsistent C

#起動(セカンダリ プライマリを起動してから120秒以内にやること)
/etc/init.d/drbd start

#プライマリ側から同期開始
/sbin/drbdadm -- --overwrite-data-of-peer primary yatta

#statusを見てみる(プライマリ)
/etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.3.8.1 (api:88/proto:86-94)
GIT-hash: 0d8589fcc32c874df57c930ca1691399b55ec893 build by root@yatta01, 2011-06-23 21:26:45
m:res cs ro ds p mounted fstype
0:??not-found?? SyncSource Primary/Secondary UpToDate/Inconsistent C
... sync'ed: 0.1% (214576/214776)M

cat /proc/drbd
version: 8.3.8.1 (api:88/proto:86-94)
GIT-hash: 0d8589fcc32c874df57c930ca1691399b55ec893 build by root@yatta01, 2011-06-23 21:26:45
0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r----
ns:445440 nr:0 dw:0 dr:445440 al:0 bm:27 lo:0 pe:32 ua:0 ap:0 ep:1 wo:b oos:219486716
[>....................] sync'ed: 0.3% (214340/214776)M
finish: 5:30:33 speed: 11,048 (10,332) K/sec

#同期終わったらファイルシステム作成
/sbin/mkfs.ext3 /dev/drbd0
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
27492352 inodes, 54982783 blocks
2749139 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
1678 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 22 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

#テストしてみる
#マウント(プライマリ)
mount /dev/drbd0 /opt/yattarou

#ファイル作る
umount /opt/yattarou

#プライマリをセカンダリに
/sbin/drbdadm secondary yatta

cat /proc/drbd
version: 8.3.8.1 (api:88/proto:86-94)
GIT-hash: 0d8589fcc32c874df57c930ca1691399b55ec893 build by root@yatta01, 2011-06-23 21:26:45
0: cs:Connected ro:Secondary/Secondary ds:UpToDate/UpToDate C r----
ns:223517604 nr:0 dw:3586472 dr:219931361 al:1730 bm:13548 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0

#セカンダリ昇格
/sbin/drbdadm primary yatta
version: 8.3.8.1 (api:88/proto:86-94)
GIT-hash: 0d8589fcc32c874df57c930ca1691399b55ec893 build by root@yatta02, 2011-06-23 21:31:01
0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r----
ns:0 nr:223517604 dw:223517604 dr:0 al:0 bm:13424 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0

2011年6月3日金曜日

sshログインしますか太郎

sshで初回ログインしたときに、下のメッセージを出させないようにするお。


#ホームディレクトリにて(ユーザはyattarou)
cd

#sshディレクトリ作成
mkdir .ssh
chown yattarou: .ssh
chmod 700 .ssh

#config作成
cd .ssh
vim config
StrictHostKeyChecking=no
GSSAPIAuthentication no
User yattarou

2011年6月2日木曜日

MegaRAID SAS 9285-8eのドライバインストール太郎

MegaRAID SAS 9285-8eのドライバインストールめもだお。
OSは、CentOS5.4
サーバはDELL PowerEdgeR310。



#http://www.lsi.com/channel/products/raid_controllers/megaraid_9285-8e/index.html
から対象OSのドライバをwgetする

#ドライバ解凍
unzip 5.30_RHEL_Linux_Drivers.zip

#インストール
rpm -ihv dkms-2.0.22.0-1.noarch.rpm megaraid_sas-v00.00.05.30-1.noarch.rpm

#リブート
/sbin/init 6

MYISAM&SSDのパフォーマンスを引き出す太郎

MYIASM且つSSDでデータ領域を使っている場合
このパラメータで、IOが抜群によくなる


cat /sys/block/デバイス/queue/nr_requests
#デフォいくつなんだろ
128
#I/Oの帯域制限の設定をあげる(つまり、たくさんリクエストをうけれるってことっすね)
echo 512 > /sys/block/デバイス/queue/nr_requests


ただ、あげすぎると逆にパフォーマンスが落ちるので
見極めが大事。

kyototycoonとmemcache比較太郎その1

kyototycoonとmemcacheでパフォーマンスがどんだけ違うか
気になったので、小手調べに。

kyototycoonはmemcacheのライブラリを使用。
データ領域はCrucialSSD C300 256GB。

mixiさんのブログを参考に、memstormっていうので
やってみたお。

やった内容は
10000回、10240バイトのデータを64バイトのKeyでSETしてレコードを同じ回数だけGETするつうもん。


#kyototycoonの場合(SSD)
./memstorm -s localhost:22222 -n 10000 -k 64 -l 10240
........................................ (1000)
........................................ (2000)
........................................ (3000)
........................................ (4000)
........................................ (5000)
........................................ (6000)
........................................ (7000)
........................................ (8000)
........................................ (9000)
........................................ (10000)

----
Num of Records : 10000
Non-Blocking IO : 0
TCP No-Delay : 0

Successful [SET] : 10000
Failed [SET] : 0
Total Time [SET] : 401.89057s
Average Time [SET] : 0.04019s

Successful [GET] : 10000
Failed [GET] : 0
Total Time [GET] : 1.83100s
Average Time [GET] : 0.00018s
----

#kyototycoon非同期モード
./memstorm -s localhost:22222 -n 10000 -k 64 -l 10240 -b
........................................ (1000)
........................................ (2000)
........................................ (3000)
........................................ (4000)
........................................ (5000)
........................................ (6000)
........................................ (7000)
........................................ (8000)
........................................ (9000)
........................................ (10000)

----
Num of Records : 10000
Non-Blocking IO : 1
TCP No-Delay : 0

Successful [SET] : 10000
Failed [SET] : 0
Total Time [SET] : 1.04116s
Average Time [SET] : 0.00010s

Successful [GET] : 10000
Failed [GET] : 0
Total Time [GET] : 394.99975s
Average Time [GET] : 0.03950s

#memcacheの場合
./memstorm -s localhost:11211 -n 10000 -k 64 -l 10240
........................................ (1000)
........................................ (2000)
........................................ (3000)
........................................ (4000)
........................................ (5000)
........................................ (6000)
........................................ (7000)
........................................ (8000)
........................................ (9000)
........................................ (10000)

----
Num of Records : 10000
Non-Blocking IO : 0
TCP No-Delay : 0

Successful [SET] : 10000
Failed [SET] : 0
Total Time [SET] : 394.82144s
Average Time [SET] : 0.03948s

Successful [GET] : 10000
Failed [GET] : 0
Total Time [GET] : 1.83289s
Average Time [GET] : 0.00018s
----

#非同期モード
./memstorm -s localhost:11211 -n 10000 -k 64 -l 10240 -b
........................................ (1000)
........................................ (2000)
........................................ (3000)
........................................ (4000)
........................................ (5000)
........................................ (6000)
........................................ (7000)
........................................ (8000)
........................................ (9000)
........................................ (10000)

----
Num of Records : 10000
Non-Blocking IO : 1
TCP No-Delay : 0

Successful [SET] : 10000
Failed [SET] : 0
Total Time [SET] : 1.03816s
Average Time [SET] : 0.00010s

Successful [GET] : 10000
Failed [GET] : 0
Total Time [GET] : 394.95381s
Average Time [GET] : 0.03950s
----


ちょっとどういう仕組みでツールが動いているかは不明だけど・・・
非同期モードだと、GETのパフォーマンスが落ちるね。

memcacheのほうが当然早いのだけれど、tycoonも悪くない。
が、もっと差がでると思ってたので、テストミスった太郎かこれ。

引き続きやるおー。

2011年6月1日水曜日

nginx スラッシュ重複不可太郎

nginxを使ったwebサーバでURLにスラッシュが重複して
書かれた場合にアクセスを弾くお。



server {
listen 80;
server_name hogehoge..jp;

if ($request_uri ~* ^(.*)//(.*)$) {
return 404;

}

2011年5月19日木曜日

nginx rewite太郎2

あれ。別の環境でnginxでrewriteできぬ。
nginx 0.8.48でのbugfixされているの。

http://nginx.org/en/CHANGES

2011年5月17日火曜日

kyototycoon memcachelib太郎

kyototycoonでmemcacheのライブラリつかう。


/usr/local/kyototycoon/bin/ktserver -port 11111 -tout 10 \
-log /usr/local/kyototycoon/logs/ktserver.log -ls \
-dmn -pid /usr/local/kyototycoon/data/ktserver.pid \
-plsv /usr/local/kyototycoon/libexec/ktplugservmemc.so -plex 'port=22222#opsts=f' \
'/usr/local/kyototycoon/data/casket.kch#opts=l#bnum=20000000#msiz=8g#dfunit=8'

#casket.kshはディスクベースのhashdb?
#bnumはバゲットサイズ
#msizはmmapでIO効率化に使うメモリサイズ
#dfunitはでフラグメンテーションの解消処理を走らせる閾値的な。


これでmemcacheとおしゃべりできる。

flare太郎


#準備
yum install zlib.x86_64 zlib-devel.x86_64 bzip2.x86_64 bzip2-devel.x86_64 bzip2-libs.x86_64 boost.x86_64 boost-devel.x86_64

#tokyocabinet
wget http://1978th.net/tokyocabinet/tokyocabinet-1.4.47.tar.gz
tar zxvf tokyocabinet-1.4.47.tar.gz
./configure --prefix=/usr/local/tokyocabinet
make
make install

#flare
wget http://labs.gree.jp/data/source/flare-1.0.12.tgz
./configure --with-boost=/usr/lib64 --with-tokyocabinet=/usr/local/tokyocabinet --prefix=/usr/local/flare
make
make install

#flare設定
#インデックスサーバの場合
vim /etc/flarei.conf

# データディレクトリ
data-dir = /date/flare
# syslogファシリティ名
log-facility = local0
# 最大接続数
max-connection = 1024
# ノードダウン閾値
monitor-threshold = 3
# ノード監視間隔(秒)
monitor-interval = 1
# インデックスサーバ名
server-name = XXX.XXX.XXX.XXX
# インデックスサーバポート
server-port = 12120
# スレッドプール最大数
thread-pool-size = 8

#データノードの場合
vim /etc/flared.conf
# データディレクトリ
data-dir = /date/flare
# インデックスサーバ名(flarei.confのserver-nameに揃えます)
index-server-name = XXX.XXX.XXX.XXX
# インデックスサーバポート(flarei.confのserver-portに揃えます)
index-server-port = 12120
# syslogファシリティ
log-facility = local0
# 最大接続数
max-connection = 1024
# ストレージロックスロット数
mutex-slot = 64
# プロキシ並列数
proxy-concurrency = 2
# ノードサーバ名
server-name = XXX.XXX.XXX.XXX
# ノードサーバポート
server-port = 12121
# スレッドスタックサイズ(KB)
stack-size = 128
# ストレージオプション
storage-ap = 4
storage-bucket-size = 16777216
# storage-compress =
# storage-large = true
# ストレージタイプ(1.0.0ではtchのみサポート)
storage-type = tch
# スレッドプール最大数
thread-pool-size = 16


#syslog設定
※いればやる
vim /etc/syslog.conf

#flare.syslog
local0.* /var/log/flare.log

/etc/init.d/syslog restart

#ライブラリ読み込み
vim /etc/ld.so.conf

/usr/local/lib/
/usr/local/tokyocabinet/lib/

/sbin/ldconfig -v

#flare起動
/usr/local/flare/bin/flarei -f /etc/flarei.conf --daemonize
/usr/local/flare/bin/flared -f /etc/flared.conf --daemonize

#確認

telnet localhost 12120
stats nodes
STAT XXX.XXX.XXX.XXX:12121:role proxy
STAT XXX.XXX.XXX.XXX:12121:state active
STAT XXX.XXX.XXX.XXX:12121:partition -1
STAT XXX.XXX.XXX.XXX:12121:balance 0
STAT XXX.XXX.XXX.XXX:12121:thread_type 16
END

#nodeの状態をproxyからmasterにする。
node role XXX.XXX.XXX.XXX 12121 master 1 0
OK

stats nodes
STAT XXX.XXX.XXX.XXX:12121:role master
STAT XXX.XXX.XXX.XXX:12121:state active
STAT XXX.XXX.XXX.XXX:12121:partition 0
STAT XXX.XXX.XXX.XXX:12121:balance 1
STAT XXX.XXX.XXX.XXX:12121:thread_type 16
END

telnet localhost 12121

Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
set key1 0 0 4
test
STORED
get key1
VALUE key1 0 4
test
END
quit

2011年4月1日金曜日

kyoto tycoonレプリ太郎

kyototycoonで、レプリケーションはるお。

master-slave構成で。


#Master側
#ulogはmysqlのbinlog的なもののよう。
#sidは、uniqueとしなきゃいかん
./ktserver -port 1978 -ulog /usr/local/kyototycoon/logs/kyoto_master -sid 1

#slave側
#-mhost はMasterのIP -mportはMasterのポート
./ktserver -port 1979 -ulog /usr/local/kyototycoon/logs/kyoto_slave -sid 2 \
-mhost XXX.XXX.XXX.XXX -mport 1978 -rts /usr/local/kyototycoon/logs/0002.rts

#データいれてみる(Master側で)
./ktremotemgr set -host localhost -port 1978 three third

#データみてみる(Master)
./ktremotemgr list -host localhost -port 1978 -pv
three third

#データみてみる(Slave)
./ktremotemgr list -host localhost -port 1979 -pv
three third

2011年3月24日木曜日

ethデバイスsnmp太郎

etcのデバイス番号snmpでとるお


snmpwalk -v 1 -c hogehogegrp localhost ifDescr
IF-MIB::ifDescr.1 = STRING: lo
IF-MIB::ifDescr.2 = STRING: eth0
IF-MIB::ifDescr.3 = STRING: eth1
IF-MIB::ifDescr.4 = STRING: sit0

2011年3月21日月曜日

upstream_hash太郎

nginxで、upstream_hash_moduleとか入れてみる。

環境
・CentOS 5.4(kernel-2.6.18-164.el5)


#必要なもの入れる
yum install xorg-x11-Mesa-libGL xorg-x11-libs gd-devel gd pcre pcre-devel
wget https://download.github.com/cep21-healthcheck_nginx_upstreams-5fa4bff.tar.gz
wget https://download.github.com/cep21-nginx_upstream_hash-8243c81.tar.gz
wget http://nginx.org/download/nginx-0.8.53.tar.gz

tar zxvf cep21-nginx_upstream_hash-8243c81.tar.gz
tar zxvf cep21-healthcheck_nginx_upstreams-5fa4bff.tar.gz
tar zxvf nginx-0.8.53.tar.gz

mv cep21-nginx_upstream_hash-8243c81 nginx-0.8.53
mv cep21-healthcheck_nginx_upstreams-5fa4bff nginx-0.8.53
cd nginx-0.8.53
vi cep21-nginx_upstream_hash-8243c81/nginx.patch
#構造体がなくてエラーになっちゃうみたい。8行目、12行目を削除


patch -p1 < cep21-healthcheck_nginx_upstreams-5fa4bff/nginx.patch
patch -p0 < cep21-nginx_upstream_hash-8243c81/nginx.patch

./configure --prefix=/opt/nginx_LB-0.8.53 --with-http_image_filter_module --with-http_stub_status_module --with-pcre --with-http_ssl_module --add-module=./cep21-healthcheck_nginx_upstreams-5fa4bff/ --add-module=./cep21-nginx_upstream_hash-8243c81/ --without-http_fastcgi_module
make
make install


これで、urlをhashして分散とか、healthcheckできる。
ただ、気をつけなくちゃいけないのは、connection数の部分。

たしか、upstreamのモジュール、通常のconnectionの4倍
使う気がした・・・

lighttpdインストール太郎

lighttpdインストールするお。


#必要なモジュール入れる
yum install pcre pcre-devel gamin gamin-devel zlib
wget http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.28.tar.gz
./configure --prefix=/opt/lighttpd --with-zlib --with-pcre --with-fam
make
make install

munin-run太郎

職場のnami氏に助けていただきましたのでメモです。

muninでグラフ化するのに必要な値が取れているかを
確認するコマンド。


#cpuのところは、設定しているmuninのプラグイン名
/usr/sbin/munin-run cpu
user.value 3530503
nice.value 468
system.value 804335
idle.value 1804942185
iowait.value 2598979
irq.value 210657
softirq.value 760998
steal.value 0

2011年3月8日火曜日

kyoto tycoon太郎

いれてみた。


yum install gcc44 gcc44-c++ zlib
wget http://fallabs.com/kyotocabinet/pkg/kyotocabinet-1.2.48.tar.gz
tar zxvf kyotocabinet-1.2.48.tar.gz
./configure
make
make install

wget http://fallabs.com/kyototycoon/pkg/kyototycoon-0.9.37.tar.gz
tar zxvf kyototycoon-0.9.37.tar.gz
./configure
make
make install

/usr/local/sbin/ktserver
./ktserver: error while loading shared libraries: libkyototycoon.so.2: cannot open shared object file: No such file or directory
# ldd ktserver
libkyototycoon.so.2 => not found
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00000036e4e00000)
libm.so.6 => /lib64/libm.so.6 (0x00000036e0200000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00000036e1a00000)
libc.so.6 => /lib64/libc.so.6 (0x00000036df600000)
/lib64/ld-linux-x86-64.so.2 (0x00000036df200000)
libkyotocabinet.so.9 => not found
#ぬ。はいらぬ。
vim /etc/ld.so.conf
/usr/local/lib
/sbin/ldconfig -v

# ldd ktserver
libkyototycoon.so.2 => /usr/local/lib/libkyototycoon.so.2 (0x00002b9543fd5000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00000036e4e00000)
libm.so.6 => /lib64/libm.so.6 (0x00000036e0200000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00000036e1a00000)
libc.so.6 => /lib64/libc.so.6 (0x00000036df600000)
libkyotocabinet.so.9 => /usr/local/lib/libkyotocabinet.so.9 (0x00002b95441ea000)
libdl.so.2 => /lib64/libdl.so.2 (0x00000036dfa00000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00000036dfe00000)
/lib64/ld-linux-x86-64.so.2 (0x00000036df200000)
libz.so.1 => /usr/lib64/libz.so.1 (0x00000036e0a00000)
#でけた

lighttpd referer拒否太郎

lighttpdで、refererの拒否設定するお。


$HTTP["referer"] == "http://hogehoe.co.jp" {
url.access-deny =("")
}

2011年3月3日木曜日

SMART太郎

SMART・・・

#smartctlに対応しているか確認する。
smartctl -i /dev/sda1

#smart情報を見る
smartctl -A /dev/sda1
smartctl version 5.38 [x86_64-unknown-linux-gnu] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x002f 100 100 000 Pre-fail Always - 0
5 Reallocated_Sector_Ct 0x0033 100 100 000 Pre-fail Always - 0
9 Power_On_Hours 0x0032 100 100 000 Old_age Always - 1710
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 2
170 Unknown_Attribute 0x0033 100 100 000 Pre-fail Always - 17668
171 Unknown_Attribute 0x0032 100 100 000 Old_age Always - 0
172 Unknown_Attribute 0x0032 100 100 000 Old_age Always - 0
173 Unknown_Attribute 0x0033 100 100 000 Pre-fail Always - 46
174 Unknown_Attribute 0x0032 100 100 000 Old_age Always - 0
181 Unknown_Attribute 0x0022 100 100 000 Old_age Always - 20976620278162
183 Unknown_Attribute 0x0032 100 100 000 Old_age Always - 0
184 Unknown_Attribute 0x0033 100 100 000 Pre-fail Always - 0
187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 0
188 Unknown_Attribute 0x0032 100 100 000 Old_age Always - 0
189 High_Fly_Writes 0x000e 100 100 000 Old_age Always - 486
195 Hardware_ECC_Recovered 0x003a 100 100 000 Old_age Always - 0
196 Reallocated_Event_Count 0x0032 100 100 000 Old_age Always - 0
197 Current_Pending_Sector 0x0032 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0030 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x0032 100 100 000 Old_age Always - 0
202 TA_Increase_Count 0x0018 100 100 000 Old_age Offline - 0
206 Flying_Height 0x000e 100 100 000 Old_age Always - 0


なんかうまーとれてないお。

libmysqlclient.so.14太郎(not found)

mysql4.1ソースからインストールしたお。
起動まででけたので、mysql -urootではいろとしたら



mysql -uroot
/usr/local/mysql/bin/mysql: error while loading shared libraries:
libmysqlclient.so.14: cannot open shared object file: No such file or directory
libncurses.so.5 => /usr/lib64/libncurses.so.5 (0x0000002a95565000)
libmysqlclient.so.14 => not found
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x0000003d20300000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x0000003d20900000)
libz.so.1 => /usr/lib64/libz.so.1 (0x0000003d1ff00000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x0000003d21c00000)
libm.so.6 => /lib64/tls/libm.so.6 (0x0000003d1fd00000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003d20f00000)
libc.so.6 => /lib64/tls/libc.so.6 (0x0000003d1f800000)
/lib64/ld-linux-x86-64.so.2 (0x0000003d1f600000)


なぬ!!
はいれぬ!!
どうやら、libmysqlclient.so.14が認識できぬようだ。


vim /etc/ld.so.conf
#追記
/usr/local/mysql/bin/mysql/lib
#読み込み
ldconfig


また同じのでるお。
むりくり。


cp -irp libmysqlclient.so.14 /usr/lib/.


うごいた...

2011年3月2日水曜日

nginx rewrite太郎

nginxで特定のURLからの、アクセスを別のURLに書き換える太郎。


server {
listen 81;
server_name hogehoge.jp;
#hogehoge.jp宛てのリクエストは、hugahuga.jpに書き換える。
rewrite ^(.*) http://hugahuga.jp$1 permanent;
root /var/wwww/http;

access_log logs/hogehoe.jp.access.log;
access_log off;
}

2011年2月22日火曜日

refresh pattern太郎(こじまよしお)

squidだお。
HTTPのヘッダーの中に、cacheを無視するとか、無視するとか・・・という
不届きものがいるので、そんなの関係ねー。cacheミロヤーとする方法。

squid.confの中に。


refresh_pattern -i \.gif 43200 100% 102400 ignore-no-cache override-lastmod ignore-private ignore-reload ignore-no-store

とぶち込んだれ。

おのおののパラメータは、google大先生に聞けば、すぐ出てくるので、割愛。

tcpdump太郎

忘れがたき。


#-w で出力ファイル -sで取得するデータ長 -iでNIC指定。
/usr/sbin/tcpdump -w /home/hogehoge/tcpdump -s 1500 -i eth0


これ、出力したファイルを、wiresharkで見るお。
内容わかりまんもす。

2011年2月19日土曜日

replicasetの状態確認太郎

mongoで、replicasetの状態確認するぽ。
replicasetは3台構成。


./mongo localhost:ポート番号
#XXXはIP、NNNNはポート。
> db._adminCommand("replSetGetStatus")
{
"set" : "shard2",
"date" : "Fri Feb 18 2011 22:37:23 GMT+0900 (JST)",
"myState" : 2,
"members" : [
{
"_id" : 0,
"name" : "XXX.XXX.XXX.XXX:NNNNN",
"health" : 1,
"state" : 1,
"uptime" : 25844,
"lastHeartbeat" : "Fri Feb 18 2011 22:37:23 GMT+0900 (JST)"
},
{
"_id" : 1,
"name" : ""XXX.XXX.XXX.XXX:NNNNN",",
"health" : 1,
"state" : 2,
"self" : true
},
{
"_id" : 2,
"name" : ""XXX.XXX.XXX.XXX:NNNNN",",
"health" : 1,
"state" : 2,
"uptime" : 25844,
"lastHeartbeat" : "Fri Feb 18 2011 22:37:22 GMT+0900 (JST)"
}
],
"ok" : 1
}


state:1は、primary 2はsecondcary
health:1は、server生きてる。0は死んでる。

XFS太郎

CentOS5.4で、XFS使う。


#xfsに必要なrpmいれる。
rpm -ihv xfsprogs-2.9.4-1.el5.centos.x86_64.rpm xfsprogs-devel-z.9.4-1.el5.centos.x86_64.rpm

#対象ディスクのラベル付け。パーティション作成
/sbin/parted -s /dev/sdb -- mklabel gpt mkpart primary 0 -0

#XFSでのファイルしシステム作成
/sbin/mkfs.xfs -f -b size=4096 -i size=512 -d unwritten=0,su=512k,sw=1 /dev/sdb1

#マウントポイント作成・マウント
mkdir /log
mount -t xfs -o noatime /dev/sdb1 /log

2011年2月12日土曜日

mongodbをmuninで監視太郎

もんごもんご

もんごもんご
mongodbの情報をmuninでとるお
insert、deleteとかの情報やら、connectionの状況やらとれるもんご。

githubにねたがあるので
まずはとってくる


wget http://github.com/erh/mongo-munin/tarball/master

#んで展開
tar zxvf erh-mongo-munin-8d4a954.tar.gz
cd erh-mongo-munin-8d4a954

#そうしたら
cp -irp mongo_* /usr/share/munin/plugins/.

#munin-node再起動
/etc/init.d/munin-node restart


ちなみに、python2.6以上が必要とのこと。

parted太郎

今使ってるサーバのディスクがパツパツになったきたので
usb接続のHDDにデータを退避したお。

ディスクのフォーマット手順。


#parted起動
/sbin/parted /dev/sdc

#ディスクにラベルつける。
mklabel parted

パーティションつくる
#mkpart primary 0 1000MB

#確認
print

#でる
quit

#ファイルシステム作る
/sbin/mkfs.ext2 /dev/sdc1

#確認
/sbin/fdisk -l

swapoff太郎

mysqlメモリ食い過ぎて、swapしてる。
mysql止めたけど、freeコマンドのusedの箇所が減らん(ほかにアプリケーションは動かしてませんよ。

もいきーだったので


#スワップを無効化するぜ!!
swapoff /dev/sdaXX

#スワップを有効化するぜ!!
swapon /dev/sdaXX


freeのusedが0になったぜ

ipmiで、BIOSのエラーログ見太郎

ipmitoolを使って、BIOSに記録されてるログをみます。

メモリ障害などで、突然サーバがお亡くなりになった場合に
/var/log/messagesに記録されない場合がほとんどです。

その場合、BIOSに記憶されているログをみることが出来ますが
うちの環境は、リブートせないかんし、DCにいくのもちょっとということで。

これ、うてば、みれるお。


#エラーログ情報を表示
ipmitool -l lan -H ホストIP -u ipmiのユーザ名 sel list


ログの消去もできる
DELL PowerEdge R300だと、イベントログがいっぱいだよって表示よくみる。
うちの環境だけかな。


#エラーログ情報を表示
ipmitool -l lan -H ホストIP -u ipmiのユーザ名 sel clear

2011年2月9日水曜日

swap太郎

メモリswapのチューニング


#↓は、swapを発生される閾値らしい。
#たとえば、8GBの60%以上使用したら、swapを開始するってことらしい。
cat /proc/sys/vm/swappiness
60
echo 10 > /proc/sys/vm/swappiness

fd太郎

ファイルディスクリプタの設定値を確認するお


cat /proc/sys/fs/file-nr
510 0 343868


左から  割り当て済みファイルディスクリプタ
まんなか 使用中ファイルディスクリプタ
右 最大で使えるファイルディスクリプタ

ディスクリプタ・・
ディスクリプタ・・・
ディスクリプタ・・・・

SNMP太郎(デバイス番号取得)

毎回しらべるのめんどいので



snmpwalk -v 1 -c SNMPGROUPNAME localhost 1.3.6.1.4.1.2021.13.15.1.1.2

UCD-DISKIO-MIB::diskIODevice.1 = STRING: ram0
UCD-DISKIO-MIB::diskIODevice.2 = STRING: ram1
UCD-DISKIO-MIB::diskIODevice.3 = STRING: ram2
UCD-DISKIO-MIB::diskIODevice.4 = STRING: ram3
UCD-DISKIO-MIB::diskIODevice.5 = STRING: ram4
UCD-DISKIO-MIB::diskIODevice.6 = STRING: ram5
UCD-DISKIO-MIB::diskIODevice.7 = STRING: ram6
UCD-DISKIO-MIB::diskIODevice.8 = STRING: ram7
UCD-DISKIO-MIB::diskIODevice.9 = STRING: ram8
UCD-DISKIO-MIB::diskIODevice.10 = STRING: ram9
UCD-DISKIO-MIB::diskIODevice.11 = STRING: ram10
UCD-DISKIO-MIB::diskIODevice.12 = STRING: ram11
UCD-DISKIO-MIB::diskIODevice.13 = STRING: ram12
UCD-DISKIO-MIB::diskIODevice.14 = STRING: ram13
UCD-DISKIO-MIB::diskIODevice.15 = STRING: ram14
UCD-DISKIO-MIB::diskIODevice.16 = STRING: ram15
UCD-DISKIO-MIB::diskIODevice.17 = STRING: sda
UCD-DISKIO-MIB::diskIODevice.18 = STRING: sda1
UCD-DISKIO-MIB::diskIODevice.19 = STRING: sda2
UCD-DISKIO-MIB::diskIODevice.20 = STRING: sda3
UCD-DISKIO-MIB::diskIODevice.21 = STRING: md0

カーネルいじる太郎

ubuntu 10.4 で、カーネルパラメータいじる。ふがふが。
デフォルトだと、1ユーザがオープンできるファイルディスクリプタの数が

1024
らしい。

squidを使う場合、この値を上げておかないと
動きがおかしくなるとおもわれるので、値を上げた
(ちなみに、ファイルディスクリプタの上限を上回った場合にsquidがどういう動作をするのか
は、未確認だお。こんどやってみよう)

で、やりかたは
テンポラリーにやる場合は


ulimit -n 65356

#恒久的にやるなら

vi /etc/security/limits.conf
root soft nofile 65356
root hard nofile 65356

#確認
ulimit -a

で確認できるお。

mpt-status太郎(lsmod)

サーバリブートしたら・・

/var/log/messagesに変なメッセージが。


localhost mpt-statusd: detected non-optimal RAID status


???
と思ったので
mpt-statusコマンド実行したら


open /dev/mptctl: No such file or directory
Try: mknod /dev/mptctl c 10 220
Make sure mptctl is loaded into the kernel


mptctl用のスペシャルファイルがなくなったらしい・
ので。


mknod /dev/mptctl c 10 220
modprobe mptctl


したら、mpt-statusできるようになった。

oom-killer太郎(squid 殺害事件)

squid死んでたorz
message見たら


localhost kernel: [1384467.390098] squid invoked oom-killer: gfp_mask=0xd0, order=1, oom_adj=0

oom-killerに殺されたようだ・・・
なぜ、oom-killerにとおもたら


localhost kernel: [1315443.360029] EDAC MC0: CE page 0x0, offset 0x0, grain 1073741824, syndrome 0xe, row 2, channel 0, label "": i3200 CE


メモリのエラーめっちゃでてる。

EDACつうのは、メモリのECCエラーをOS側で検地できるようにする仕組みのことらしいですわ。
kernel 2.616からマージされているようだ。

いろんな記事に書いてあったけど、強制的にエラーをメモリエラーを出力させる仕組みもあるらしい。

結局
squidで結構メモリにファイルキャッシュさせてるので
メモリが不安定。


squidが不安定になる。

squid 殺害っ感じかな。

mailq太郎

mailqの確認。


postqueue -p
#もしくは
mailq


ただ、キューの数をカウントするときに
wc -lでやると

だめぽ。
postqueueの出力結果が3行?ででるためだお。

rescue太郎

使用しているサーバのOS(ubuntu)が起動できなくなたお。

なので、レスキューします。
cdromにKNOPIXXのisoが入ったディスクを用意して
BIOSからcdromからbootするように設定。

あとは、サーバ再起動後、
bootプロンプトから


linux rescue


コマンドでOSあげて、各ディスクをmount後、状態確認。

結局、/boot配下が消えていたので、OS再インストールしたお。

mongo太郎(基礎)


#インストール
wget http://downloads.mongodb.org/linux/mongodb-linux-x86_64-1.6.4.tgz
tar -zxvf mongodb-linux-x86_64-1.6.4.tgz




#起動
--dbpath でデータディレクトリを選択
--fork でバックグラウンド起動
※--forkで動かす場合は、--logpathの指定必須
/usr/local/mongo/bin/mongod --fork --logpath /data/db/ --dbpath /data/db



#DBかえる
use mydb
>switched to db mydb



#データぶちこむ
> j = { name : "mongo"};
{ "name" : "mongo" }
> t = { x : 3 };
{ "x" : 3 }



#保存
> db.things.save(j);
> db.things.save(t);

#探す
> db.things.find();
{ "_id" : ObjectId("4cfde0735a6d24817da83e3a"), "name" : "mongo" }
{ "_id" : ObjectId("4cfde0995a6d24817da83e3b"), "x" : 3 }

#for文も使える
> for( var i = 1; i <= 20; i++) db.things.save({x : 4, j : i });
> db.things.find();

#シャットダウン
use admin
db.runCommand("shutdown");

3master、slave関係で起動
/usr/local/mongo/bin/mongod --fork --logpath /data/db/master/logs --dbpath /data/db/master --master
/usr/local/mongo/bin/mongod --fork --logpath /data/db/slave/logs --dbpath /data/db/slave --slave --source localhosts --port 27018


まずは、こんなもん。
replica setはまたあとで。

packet drop太郎

うちで使ってるproxyサーバで、dropがでてる。


netstat -i
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 795787871 0 3691 3691 1278361014 0 0 0 BMRU
eth1 1500 0 1375715814 0 0 0 1049770543 0 0 0 BMRU
lo 16436 0 26954 0 0 0 26954 0 0 0 LRU


messageに怪しいログでてない。
dmesg見たら、


KERNEL: assertion (cnt <= tcp_get_pcount(&tp->packets_out)) failed at net/ipv4/tcp_input.c (1553)

って出てる。

調べたら、redhatのバグ情報に書いてあった・・・

https://bugzilla.redhat.com/show_bug.cgi?id=446954

再現できないつーう。
困ったけど、ふがふが。

mpt-status太郎

Dellのサーバで使ってるRAIDカード(SAS6iR)用で、ディスクのrsync状況を確認するコマンド。


mpt-status -n
ioc:0 vol_id:0 type:IM raidlevel:RAID-1 num_disks:2 size(GB):930 state: DEGRADED flags: ENABLED RESYNC_IN_PROGRESS
ioc:0 phys_id:1 scsi_id:1 vendor:ATA product_id:ST31000333AS revision:CC1H size(GB):931 state: ONLINE flags: NONE sync_state: 38 ASC/ASCQ:0x11/0x00 SMART ASC/ASCQ:0x00/0x00
ioc:0 phys_id:0 scsi_id:8 vendor:ATA product_id:ST31000333AS revision:SD1B size(GB):931 state: ONLINE flags: OUT_OF_SYNC sync_state: 38 ASC/ASCQ:0xff/0xff SMART ASC/ASCQ:0xff/0xff

squid cache太郎

squidで、キャッシュ領域がいっぱいになってきたときに、キャッシュをどかするーる。

cache_replacement_policy

LRU は最近アクセスされたキャッシュオブジェクトをためようとする。
新しくアクセスされたやつをどんどんためる=アクセスがないやつは捨てられるってことですな

heap LFUDA サイズにかかわらずキャッシュの中でポピュラーなオブジェクトを維持するらしい。
つーか、ポピュラーなやつって・・・

どうやって、そのキャッシュオブジェクトがポピュラーなのか
判別してる仕組みが知りたい。

DBみたいなの持ってるのかな・・・
cache managerからは見えんし。

cron太郎

毎朝4時にサーバの負荷が高いと思って、調べたら・・・

/etc/cron.dailyの中に・・・

朝4時に動く設定のスクリプトがたくさんはいってた。
しかも、locate用のdbをupdateしてやがる・・・お。


道理でIOが高いと思ったわ。
ぶー。
Centの4x系は、slocate、Centの5x系は、mlocateなのか。

stub_status_module太郎

nginxのconfigure実行時に指定していたオプション。


--with-http_stub_status_module


何が出来るかというと、nginxの状態をみることができます。
Activeなコネクションとか、受け付けてるrequestの数とか。
Apacheでいう、mod_status。

Apacheの場合は、コンパイル時に


--enable-module=status


を指定。mod_statusの方がいろんな情報とれてすてきみたい。
lighttpdの場合も、mod_statusだけどデフォルトで有効になるらしい。

refer太郎

リファラからのアクセス確認。


curl -e referのアドレス -o 対象webサイト

MRTGではまった太朗2

MRTGでドロップパケットの値を取得する方法。

mrtg.cfgに


Target[eth0-droppacket]: ifInDiscards.2&ifOutDiscards.2:XXXX@XXX.XXX.XXX.XXX:
MaxBytes[eth0-droppacket]: 50000
Options[eth0-droppacket]: growright,bits,nopercent
Title[eth0-droppacket]:
PageTop[eth0-droppacket]:
YLegend[eth0-droppacket]: bytes


ifInDiscard.後につく数字は、構成によって都度変わるので、snmpwalkを使って調べる。
Option項目のとこは

growrite → グラフを右から左に表示される。
bit →デフォルトではbyte単位で表示されるので、bit単位に変更。
nopercent → パーセント表示しない。

ちなみに

gauge  → 取得したデータの値を前回の値との差分を計算せずそのまま使用。
absolute →  取得したデータの値を、前回の値との差分を計算せずそのまま使用。

MRTGではまった太朗

またはまった。最近よくはまる。

MRTGで、トラフィックの監視するときに、気をつけること。
109MB以上のトラフィックが流れる場合、snmp ver1だとグラフがうまく描かれない。
理由は、snmp ver1だとデフォルトで32bitのカウンタとして5分おきに動作するらしい。
つまり、どういうことかというと

2^32 * 8(bit換算) / 300(秒) = 109.227 Mbps

となる。
これ以上のトラフィックが流れると、つねに同じ値が取得されてしまい
グラフがえがけないのだ

そういうときは
mrtg.cfgでtargetの値を


Target[eth1-packet]: ifInOctets.3&ifOutOctets.3:XXXXXX@XXX.XXX.XXX.XXX:::::2

にすると、64bitカウンタとして動作するので値がとれるんだわ

yumではまった太朗

恥ずかしながら。yumではまった・・・
rpmを作って、yumサーバに配置後、createrepoコマンドでxmlを登録
が・・・・・・
インストールしたいクライアントからyumを実行したら、古いバージョンしか表示されない・・・
そんなとき、神の一声が・・・


yum clean all


でキャッシュをクリアして、再度yum実行したら、新しいバージョンがみえた!!
キャッシュきれいにしてあげないといけないのね・・・
(RX-7殿。感謝します)

コメントさよなら太朗

apacheやら、squidやら、設定ファイルはコメントだらけ。
なのでコメント行を表示しないようーにする。


grep -v -e "^[ ¥t]*#" 設定ファイル

squidログ変換太朗

☆squidのaccesslogは、デフォルトだと、UTCのミリ秒(1970/1/1から)であらわされる。

このままだと読みずらいので、perlのscriptで変換しゅる。


#! /usr/bin/perl -p
s/^\d+\.\d+/localtime $&/e;

squid pid太郎

proxyサーバとして有名なsquidちゃん。
今日、ちょっとはまったのでメモ。

ほかのアプリもそうだけど、squidが起動するときに
生成するpidファイル。

設定(squid,conf)によるけど、だいたい/var/run/squid.pidにある。

squid起動中に、squid.pidファイルを消すと
squid関連のコマンドを受け付けなくなって停止できないことが判明。

ERROR: no running copyと言われる。

しょうがないからsquidのプロセス、killしちゃった。

repl太郎

Mysqlのレプリケーション設定してみた。

環境は、
VM上で
CentOS 4.8
Mysql 4.1.22
です。

準備として、Master→Slave、Slave→Masterへ
telnet IPアドレス mysqlのポート(3306?)で
つなげることチェックしておいてください。

確認しないとあとあとめんどいですわ。


MasterとSlaveの設定ファイルを追加します。
serveridの値は、uniqな数字にしてください。
uniqにしないとほかサーバのreplが全停止したりします。
log_binはバイナリログを出力する設定です。(ORACLEのredoログ的なのりだと思ってます)


#Master側
vi /etc/my.cnf
[mysqld]
server-id = 1
log_bin

#Slave側
CMD >vi /etc/my.cnf
[mysqld]
server-id = 2


編集後、Master側、Slave側で設定反映させるためにmysqlを再起動します。

/etc/init.d/mysqld stop
/etc/init.d/mysqld start

#一応、Master側でlog_ binが有効になっているかを確認。

mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin   | ON |
+---------------+-------+
1 row in set (0.00 sec)

#Master側にレプリケーション専用のユーザをつくります。
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication'@'SlaveサーバのIP' IDENTIFIED BY 'パスワード';

#んでユーザできたか、確認
mysql> select * from mysql.user where user = 'replication'\G

*************************** 1. row ***************************
Host: IPアドレス
User: replication
Password: ********
Select_priv: N
Insert_priv: N
Update_priv: N
Delete_priv: N
Create_priv: N
Drop_priv: N
Reload_priv: N
Shutdown_priv: N
Process_priv: N
File_priv: N
Grant_priv: N
References_priv: N
Index_priv: N
Alter_priv: N
Show_db_priv: N
Super_priv: N
Create_tmp_table_priv: N
Lock_tables_priv: N
Execute_priv: N
Repl_slave_priv: Y
Repl_client_priv: N
ssl_type:
ssl_cipher:
x509_issuer:
x509_subject:
max_questions: 0
max_updates: 0
max_connections: 0
1 row in set (0.00 sec)



んで、Master側のバイナリログの出力ポジションを確認する。
Slaveからは、、File(BALTHAZAR-bin.000002)の、position(203)から
レプリケーションを開始する必要があるので、必ず確認する。


mysql> SHOW MASTER STATUS;
+----------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+----------------------+----------+--------------+------------------+
| BALTHAZAR-bin.000002 | 203 | | |
+----------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

#んでSlave側で、Masterの情報を設定する。
mysql> CHANGE MASTER TO MASTER_HOST = 'MASTER側のIP',
-> MASTER_USER = 'replication',
-> MASTER_PASSWORD = 'replicationユーザのパスワード',
-> MASTER_LOG_FILE = 'BALTHAZAR-bin.000002',
-> MASTER_LOG_POS = 203;

#Slaveを動かす。
mysql> START SLAVE;

#Master側で状態を見てみる。
mysql> show processlist\G
*************************** 2. row ***************************
Id: 7
User: replication
Host: IPアドレス:32855
db: NULL
Command: Binlog Dump
Time: 18
State: Has sent all binlog to slave; waiting for binlog to be updated
Info: NULL

#Slave側で状態を見てみる。

*************************** 2. row ***************************
Id: 26
User: system user
Host:
db: NULL
Command: Connect
Time: 4
State: Waiting for master to send event
Info: NULL
*************************** 3. row ***************************
Id: 27
User: system user
Host:
db: NULL
Command: Connect
Time: 4
State: Has read all relay log; waiting for the slave I/O thread to update it
Info: NULL




#最後にほんとにレプリケーションできてるかっつーことでMaster側で
mysql> use test
Database changed

mysql> CREATE TABLE SAS (id int(10));
Query OK, 0 rows affected (0.04 sec)

mysql> INSERT INTO SAS VALUES (1);
;
mysql> select * from SAS;
+------+
| id |
+------+
| 1 |
+------+

#Slave側で、
mysql> use test
Database changed

mysql> select * from SAS;
+------+
| id |
+------+
| 1 |
+------+



SLAVE側から接続するとき、最初ちゃんとできませんでした。
FWの設定をいじったら接続できるようになりましたわ。
↓こうなって、masterへ接続できんかった。


*************************** 2. row ***************************
Id: 4
User: system user
Host:
db: NULL
Command: Connect
Time: 477
State: Connecting to master
Info: NULL
*************************** 3. row ***************************
Id: 5
User: system user
Host:
db: NULL
Command: Connect
Time: 477
State: Has read all relay log; waiting for the slave I/O thread to update it
Info: NULL
3 rows in set (0.00 sec)

x3250でcffgenを導入する太郎

古いけど、
IBM X3250 M2でHARD RAIDをくんでいる場合でチェックツールを導入する。


まずは、IBMのサイトから、cfggenユーティリティーをとってくる。
http://www-947.ibm.com/support/Aentry/portal/docdisplay?brand=5000008&lndocid=MIGR-63501
※環境により、選択してくださいな。

サーバ上の任意のディレクトリで展開します。


unzip ibm_utl_mptsas_cfggen-2.06.01_linux_32-64.zip
chmod + x cffgen
mv /usr/sbin/.
#モジュールをロードします。
modprobe mptctl
vi /etc/modprobe.conf

bonding太郎

☆CentOS 5.4で、bondingの設定
Windowsだとチーミングという記憶がある・・・

まずは、↓のファイルを編集


vi /etc/modprobe.conf

alias bond0 bonding
options bond0 miimon=100 mode=1 primary=eth0


そのあと、↓のファイルを作る。


vi /etc/sysconfig/network-scripts/ifcfg-bond.0

DEVICE=bond0
IPADDR=IPアドレス
NETMASK=サブネット
NETWORK=ネットワークアドレス
BROADCAST=ブロードキャストアドレス
ONBOOT=yes
BOOTPROTO=none
USERCTL=no


そのあと、↓のファイルを編集。

vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
MASTER=bond0
SLAVE=yes
USERCTL=no
ONBOOT=yes
BOOTPROTO=none



そのあと、↓のファイルを編集。

vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth0
MASTER=bond0
SLAVE=yes
USERCTL=no
ONBOOT=yes
BOOTPROTO=none


編集し終わったら


/etc/init.d/network restart

ipconfig -a で、bond0の表示がでることを確認する。

ping飛ばしながら、eth0とeth1のNICをそれぞれ交互に抜いて
pingが切れなければ、bondingの設定ができたことになりまんもす。

あとは、cat /proc/net/bonding/bond0で、NICのActive状態、linkのup/downが確認できる。