2014年10月24日金曜日

gTDL .rich

.richというgTDL...

※出典: お名前.com

どんだけrichなんだよw

2014年8月17日日曜日

Inifinibandを触ってみる - Install編

随分前にヤフオクで落としたInfinibandについて触る時間ができたので触ってみました。

今回使用する機材はこちら

・IA Server : i3-540 Mem:2GB 73GB SASHDD
・HCA : Cisco Infiniband HCA ( Topspin DDR-HCAe LX x8 )
・OS : CentOS 6.5 x64 - Coreパッケージのみ

どうでもいいけれど、先日、はじめてCentOSを”セントス”と発音している人を見かけた。”セントス”が正式発音なんだけど、絶対にわからないから回りにあわせて”セントオーエス”と発音している今日この頃。
※せんとクンに発音が似ているのはどうでもいい話。そういえばどこに行ったのだろう。

早速インストールからはじめる。

いろいろなサイトでお勉強したが、どうやらCentOS 6.x以上はすでにドライバが組み込まれている様子。
参考: http://www.srchack.org/article.php?story=20111129002752234

ためしにクリーンインストールを行って、いきなりモジュールを有効にしてみる。

# modprobe ib_ipoib
# ifconfig -a
~省略~
ib0       Link encap:InfiniBand  HWaddr 80:00:04:04:FE:80:00:00:00:00:00:00:00:00:00:00:00:00:00:00
          BROADCAST MULTICAST  MTU:2044  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:256
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
~省略~

ifconfigのなかにib0インターフェイスが突然現れたので、本当にそのままできるのだろう。
しかし、このままでは状態監視などができないので、必要そうなパッケージをインストールすることにする。
# yum install ibutils infiniband-diags
# sudo ibstatus
Infiniband device 'mthca0' port 1 status:
        default gid:     fe80:0000:0000:0000:0005:ad00:000b:c805
        base lid:        0x0
        sm lid:          0x0
        state:           1: DOWN
        phys state:      2: Polling
        rate:            10 Gb/sec (4X)
        link_layer:      InfiniBand
ふむふむ、認識されているようだ。
しかし、このHCAはDDR対応なので、20Gbpsでリンクアップできるはずなのだが...
もしやと思い、Infinibandの対抗側に電源を入れてリンクアップさせる。
# sudo ibstatus
Infiniband device 'mthca0' port 1 status:
        default gid:     fe80:0000:0000:0000:0005:ad00:000b:c805
        base lid:        0x0
        sm lid:          0x0
        state:           2: INIT
        phys state:      5: LinkUp
        rate:            20 Gb/sec (4X DDR)
        link_layer:      InfiniBand
うむ、20Gbpsでリンクアップしています。
別のコマンドを打ってみる。
# ibaddr
ibwarn: [1594] umad_init: can't read ABI version from /sys/class/infiniband_mad/abi_version (No such file or directory): is ib_umad module loaded?
ibwarn: [1594] mad_rpc_open_port: can't init UMAD library
ibaddr: iberror: failed: Failed to open '(null)' port '0'
ふむ、ib_umadも必要そうだ。
modprobeしてみる。
# modprobe ib_umad
# ibaddr
GID fe80::5:ad00:b:c805 LID start 0x0 end 0x0
ふむ、これが正常っぽい。
UMADは「Userspace MAnagement Datagram」の略で管理系の通信を行っているモジュールのようだ。
参考:http://www.jipdec.or.jp/archives/icot/FTS/REPORTS/H12-reports/H1303-AITEC-Report3/AITEC0103-R3-html/AITEC0103-R3-ch3_2_2.htm
参考:http://www.viops.jp/ibday02-BASIC-xsigo.pdf

Infinibandでは1つ以上のサブネットマネージャが必要なのだそうだ。
こいつもyumでインストール。
# yum install opensm
# service opensm
# service opensm start
Starting IB Subnet Manager:                                [  OK  ]
# chkconfig opensm on
chkconfigでOnにすることも忘れずに。

今回はIP over IBで立ち上げるので、いつものようにifcfgを書く。
# vi /etc/sysconfig/network-scripts/ifcfg-ib0
DEVICE="ib0"
BOOTPROTO="static"
IPADDR="10.1.1.1"
NETMASK="255.255.255.0"
ONBOOT="yes"
TYPE="infiniband"
# ifup ib0
[root@lisa01 ~]# ifconfig
~省略~
ib0       Link encap:InfiniBand  HWaddr 80:00:04:04:FE:80:00:00:00:00:00:00:00:00:00:00:00:00:00:00
          inet addr:10.1.1.1  Bcast:10.1.1.255  Mask:255.255.255.0
          inet6 addr: fe80::205:ad00:b:c805/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:2044  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:3 overruns:0 carrier:0
          collisions:0 txqueuelen:256
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
~省略~
もう一台、同様に設定して、疎通確認を行う。

疎通確認はOKなようなので、早速ファイルを転送してみる。
# scp CentOS-7.0-1406-x86_64-DVD.iso 10.1.1.2:
root@10.1.1.2's password:
CentOS-7.0-1406-x86_64-DVD.iso                                                   100% 3956MB 104.1MB/s   00:38    
約800Mbps...20GbpsのLinkなのでぜんぜん満足できませんなぁ。
暗号化セットを変えて再チャレンジ
# scp -c arcfour CentOS-7.0-1406-x86_64-DVD.iso 10.1.1.2:
CentOS-7.0-1406-x86_64-DVD.iso                                                   100% 3956MB 141.3MB/s   00:28 
まだぜんぜん満足できませんなぁ。

納得はいきませんが、とりあえずInstall編はここまで。

2014年5月16日金曜日

作業ログを確実にとる

最近仕事で後輩に対しても作業ログをしっかりとることを指導している。
クライアントのロガー機能でとるのもそうなんだけど、どうも忘れがち。
そこでteeを使って、作業ログを取ることを提案した。
ssh user@server | tee -a work-20140516.log
これで作業ログを残してかつ、遠隔地でのダブルチェックをすることができる。
作業者: $ ssh user@server | tee -a work-20140516.log
ダブルチェック者: $ tail -f work-20140516.log
これでもいいんだけど、たまに忘れてしまうので、下記のコマンドを踏み台サーバの/etc/bashrcに入れる。
おまけでReadonlyにすることで確実に記録がのこる。
$ function ssh () { command ssh $@ |tee -a `whoami`-`date +%Y%m%d%H%M%S`.log ;}$ readonly -f ssh
簡易的なトレースアビリティの確保にはちょうどいいかもしれない。

Nginx - https 2GB以上POSTできない(curl: (56) SSL read: errno -5961)

特異な事象にぶち当たったので、自分用メモと解決方法をメモしておきます。

事象はNginxのSSL通信において、2GB以上のPOSTができない。
POSTをしようとすると以下のようなエラーが出てClientから切断される。
非SSLの場合は転送ができるのでよくわからない。

$ curl -ikv -X PUT -T test4GB.img "https://server/upload/test.txt" 
HTTP/1.1 100 Continue
* SSL read: errno -5961* Closing connection #0curl: (56) SSL read: errno -5961
Nginxのログを見ても以下の通り。

2014/05/10 14:56:44 [info] 16121#0: *973320 client prematurely closed connection, client: client01, server: server001, request: "PUT /upload/test.txt HTTP/1.1", host: "server001"
原因はNginxの client_body_buffer_size の設定。この設定値が大きかった。
client_body_buffer_size    3096m;

パフォーマンス向上になるかと値を大きくしたのだが、この設定はそれだけメモリを食う様子。
しかし、なぜかOut of MemoryにもならずNginxが起動してしまったので、これでいいかと思っていたが、そうではなかった。
おまけに、この値大きく変えても、POSTできないサイズは2GBで固定だったのでわからなかった。

設定値を小さくしてNginxをReload。これで解消された。
client_body_buffer_size    256k;
何が起こっていたかは、これは予想だが以下の通りだと思われる。

  • Nginxは正常に起動、しかしメモリがいっぱいいっぱい。
  • SSL通信時にOpenSSLのライブラリがラージファイル用にメモリを確保?
  • 確保できないのでハンドシェイクでエラーを返す?
  • クライアントが通信を切断。
直ってしまったのでこれ以上の調査はしないけれど、この予想、間違ってたらだれか教えてください。

2014年3月9日日曜日

改行コードに^M(DOS改行)がある場合の対処法

古いCGIプログラムをダウンロードしていざ、動くかなーと試したときに、
「-bash: ./admin.cgi: /usr/local/bin/perl^M: bad interpreter: そのようなファイルやディレクトリはありません」
と改行コードに”^M”がついて変換に萎えることがある。

そんなときに、「dos2unix」コマンドを使うと何も考えずに一発コマンドで変換してくれるので超便利。

$ dos2unix <filename>

参考: http://ratememo.blog17.fc2.com/blog-entry-824.html