ただのにっき。

ただつらつらと日記が書かれていくようです。

39ページ目 (40ページ中)

fsck…。

とあるサーバが応答しなくなったので、某所のデータセンターに行ってみた。すると、サーバのコンソールは一連のブートシーケンスらしきものが表示されていて、ファイルシステムがおかしいぞー的なエラーメッセージが出力された状態で止まっていた。

止まっていたサーバは、かなり前に構築されたサーバであるため、カーネルが古いせいか、kernel panicを起こすことがある。おそらくは、kernel panicして自動的に再起動して、再起動時のfsckで、修復が必要なエラーが検出されて止まっていたといった感じだろうか(…よくわからん…)

そんなわけで、、、冷や汗をかきながら、fsckをやってみた。といっても、fsckからinodeを見せられて、「修復しますか?」って聞かれたところで、「y」を押す以外のことはできるはずもなく、ただ、ひたすら「y」を連射。すると、リペアが完了した、みたいなメッセージが出力されて再起動。

…起動した。

たらいうどん@長田 in 香の香

お仕事日記と言いながら、年末年始は結局何もしなかったので(汗)とりあえず、日記を。

年末年始は実家に帰省した。せっかく、香川に帰ったんだから…ということで、釜揚げうどんを食べに「長田 in 香の香」に行ってきた。

駐車場は、讃岐うどんを食べに来ている県外ナンバーの車であふれかえっていて、行列は店の外までつながっていた。まぁ、香川県の人は、こんなに並んでるうどん屋を見かけると撤退しそうではあるが、久しぶりなので、意地と根性で並んでみた。

f:id:y_fudi:20090102130948j:image

で、家族と一緒に行ったので、「たらいうどん」にしてみた。ただ、たらいうどん(大)だと、12玉入っているらしく、さすがにそれは多いだろうということになったが、たらいうどん(小)だと、6玉。ちょっと少ない。というわけで、たらいうどん(小)と釜揚げうどん(大)を頼んでみたら、たらいうどんに一緒に入れてくれるとのこと。

f:id:y_fudi:20090102133244j:image

やっぱり、いりこの効いたつけダシはさいこー!あっという間にたらいは空になってしまった。で、勢い余って、最後にダシだけいただいてしまったが、このダシをアテに日本酒が飲めてしまうんじゃないかとちょっと思った。

drbdのスプリットブレイン訓練

DRBDを使っていて、うっかりスプリットブレインになっちゃった時に、リカバリー方法を間違えるとややこしいことになるような気がした(どっちをマスターにするかを間違えると、スレーブでマスターを上書きしてデータのロストとか起きたりしそう)ので、ちょっと試しにスプリットブレイン状態を作ってリカバリーしてみた。

使ったDRBDは8.3.0。インターネットを探してみると、DRBDが動いている状態でネットワークを引っこ抜くとスプリットブレインが発生すると書いてあるサイトもあったので、試しにL2スイッチの電源を落としてみた。そしたら、お互いに「WFConnection」(接続待ち)状態に遷移した。一方、マスター側は「Primary」状態なので、そのままマウントして、アプリケーションからいじってたりしたけれど影響はなかったみたいだ。で、ネットワークを再接続すれば、切断前のPrimary/Secondaryの関係性を維持したまま、「Primary」から「Secondary」への同期が始まった。で、同期が完了すると、「Connection」状態に戻った。

結局、ネットワークがダウンするだけでは、スプリットブレインは発生しないようだ。とりあえず、運用中にLANケーブルが引っこ抜ける的な障害が起こった場合は、LANケーブルを刺し直せば自動で対応してくれそうだ。

次に、意図的にスプリットブレインを作ることにした。L2スイッチを落とすところまでは同じだが、ネットワークが切れていることをいいことに、スレーブ側のマシンを「Primary」状態にしてみた。その後、L2スイッチの電源を入れる。これによって、お互いが「Primary」になっていることを検出するので、スプリットブレインとして、お互いが「StandAlone」に落ちる。ただ、もともと「Primary」になっていたマスター側は、StandAloneになっても「Primary」なので、マウントは可能っぽい。ただ、同期が取られないだけのようだ。dmesgでログを確認すると、以下のようなログが出力されていた。

drbd0: drbd_sync_handshake:

drbd0: self 6ABCC0B39EEBC9D5:03B0E55FA3B63131:38D5407DCCBC17FE:1C2D0C92A346572F

drbd0: peer 705B58F4947E0C9C:03B0E55FA3B63130:38D5407DCCBC17FE:1C2D0C92A346572F

drbd0: uuid_compare()=100 by rule 9

drbd0: Split-Brain detected, manually solved. Sync from this node

さて、両方のノードが「StandAlone」になったときにどう復旧するか。「drbdadm」にはいくつもコマンドオプションがあるので、いろいろ試してみたが、同期を取ってくれない。。。

そんなわけで、DRBDのマニュアルを探してみたら、「Manual split brain recovery」って項目があった。

DRBD detects split brain at the time connectivity becomes available again and the peer nodes exchange the initial DRBD protocol handshake. If DRBD detects that both nodes are (or were at some point, while disconnected) in the primary role, it immediately tears down the replication connection.

DRBDは、コネクティビティが復活した時や、同期相手とDRBD Protocolによるハンドシェイクを行う時にスプリットブレインを検出する。DRBDが両方のノードがPrimary(role)になっている(もしくは、接続が切れている、どこかの時点でPrimaryになっていた)場合、レプリケーションの接続をすぐに切断する。

After split brain has been detected, one node will always have the resource in a StandAlone connection state. The other might either also be in the StandAlone state (if both nodes detected the split brain simultaneously), or in WFConnection (if the peer tore down the connection before the other node had a chance to detect split brain).

スプリットブレインを検出した後では、一方のノードはずっと「StandAlone」になっていて、両方のノードが同時にスプリットブレインを検出していれば、もう一方のノードも「StandAlone」になっているかもしれないし、もう一つのノードがスプリットブレインを検出する前にコネクションを落としていれば、「WFConnection」になっているかもしれない。

At this point, unless you configured DRBD to automatically recover from split brain, you must manually intervene by selecting one node whose modifications will be discarded (this node is referred to as the split brain victim). This intervention is made with the following commands:

DRBDを自動的にスプリットブレインから復旧するように設定していなければ、こうなった時に、どっちのノードの変更を破棄するかを選択して、手動で介入する必要がある。この介入は、このコマンドで行われる。

と。

マスターとなる側では以下のコマンドを実行するらしい。

drbdadm connect resource

スレーブとなる側(つまり、変更点があっても破棄される側)では、以下のコマンドを実行するらしい。

drbdadm secondary resource

drbdadm — –discard-my-data connect resource

…というわけで、やってみたら、無事にConnection状態に戻った。

DRBD8からオプションが変わってた

DRBDをマスターとなるマシンとスレーブの両方にインストールし終わっただけでは、両方とも「Secondary」状態になっているので、マスター側を「Primary」状態にする必要がある。そのためには、2つのマシン間でデータの同期を行う必要がある。

そのマスターを「Primary」にして、最初の同期を取るコマンドが、DRBD7までは「–do-what-I-say」ってオプションが有効だったけれど、それがDRBD8からは「-overwrite-data-of-peer」に変更になったそうだ。というわけで、

drbdadm — -overwrite-data-of-peer primary all

をマスターとなるマシンで実行する。確かに「do what I say」よりは「overwrite data of peer」の方がわかりやすいオプションではあるけども。で、同期が始まった後で、/proc/drbdを覗いてみると、同期の進捗などが見える。

$ cat /proc/drbd

version: 8.3.0 (api:88/proto:86-89)

GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by root@localhost.localdomain, 2008-12-22 17:52:35

0: cs:SyncTarget ro:Secondary/Primary ds:Inconsistent/UpToDate C r—

ns:0 nr:28678656 dw:28670464 dr:0 al:0 bm:1749 lo:257 pe:1560 ua:256 ap:0 ep:1 wo:b oos:13271260

[============>…….] sync’ed: 68.4% (12960/40958)M

finish: 0:07:24 speed: 29,796 (29,676) K/sec

ただ、speedのところに書いてある、この約30M/secってのは、単位は何だろうってことで、調べてみた。で、DRBDのドキュメント(no title)を見てみると、speedの単位としては書かれていなかったけど、随所で「KiByte」って書いてあるから、きっと「30MByte/sec」ってことなんだろう。ってことは、だいたい240Mbpsくらいか。ギガビットなイーサネットを使っておいてよかった。

DRBDのプロトコル

DRBDのマスターとスレーブの通信方式は、3つの中から選べる。

drbd-8.3.0.tar.gzのサンプルのdrbd.confより

C: write IO is reported as completed, if we know it has reached _both_ local and remote DISK.

* for critical transactional data.

B: write IO is reported as completed, if it has reached local DISK and remote buffer cache.

* for most cases.

A: write IO is reported as completed, if it has reached local DISK and local tcp send buffer. (see also sndbuf-size)

*for high latency networks

DRBDを扱ったblogとかに載ってるdrbd.confを見ると、「C」になってることが多いけど、このサンプルファイルでは、「B」が「for most cases」となっている。サンプルのdrbd.confの続きにはこうも書いてあった。

uhm, benchmarks have shown that C is actually better than B. this note shall disappear, when we are convinced that B is the right choice “for most cases”. Until then, always use C unless you have a reason not to.

ベンチマーク的には「B」よりも「C」が優れているらしい。しかし、「B」の「remote buffer cache」って何を指しているんだろうか。Aがわざわざ「tcp」send bufferって書いてあるわけだから、tcpが付いてない=ネットワーク関連じゃないキャッシュなんだろう。そうなると、ディスクの書き込みキャッシュが思いついたりするが…そうなのか(汗)

でも、なんとなーく「C」の方が安心なプロトコルで、それって性能を犠牲にして実現されている方が、なんとなーく納得いくんだけどなぁ。まして、drbd.confを書いた人が、多くの場合、「B」が正しい選択って言う理由も気になるけども、、、書いてないか。

…でも、まぁ、とりあえず、「C」にしとく(汗)

DELL 2007 FP

会社でDELLの「デジタルハイエンドシリーズ 2007FP HAS」を使っている。この液晶、しばらく使っていると画面に横に長いノイズが何本か出て、ところどころ表示がおかしくなる傾向が出ていた。あと、液晶に特定の色が表示されているとおぼしきところがノイズでちらちらしたり。いずれにせよ、液晶の電源をいったん落として、再度、入れると直ったりする、ややこしい症状。

最初はこんなもんかなぁと思ってしばらく使っていたけど、なんとなく、いらいらしてきたのでDELLに電話してみた。そしたら、静電気が疑われるとのこと。液晶の電源を引っこ抜いて、電源ボタンを20回くらい押しまくってくれと言われた。素直に電源ケーブルを外して、電源ボタンを押しまくって、再度、電源をつっこむと普通に点いた。

…いや、点くのは点くんだよね。使っていると、時折、ノイズが出て、表示がおかしくなるのがタチ悪いわけで(汗)DELLのサポート担当には、今、その症状が出ているわけではなくて、こんなことをやっても再現性とか難しいと伝えてはみたのだが、しばらく様子を見てくださいと言われた。

これまで液晶を何枚も使ってきたが、(1)静電気がたまって、(2)それを取り除くために、電源を外して、電源ボタンを連射するなんて初めてなんだけどなぁ。。。

正しいL2スイッチの持ち方

今更こんなことを書いてどうする感ありまくりだけれど、まぁ、ネタ切れ気味ということで(笑)

さて、データセンターにL2スイッチ(いやまぁ、L3スイッチでもいいんだけど)を設置する際に、いきなりデータセンターに持ち込んでコンフィグするというのも手だし、それが手っ取り早いような気がするが、一方で、私としては、いきなりデータセンターに持ち込んでややこしいことになると面倒だなぁと思ったりするわけで、事前にちゃんと動く検証とかやっておきたいが、データセンターの爆音の中で作業はしたくない(変な話ではあるけれど、データセンターの中はサーバのファンの音しかしないので、脳がうまくノイズリダクションできれば、すごく静かな環境になるので…要はデータセンターで長時間作業すると疲れてきて眠くなってしまうのである)

もとい。そんなわけで、私の場合はL2スイッチとかサーバは、オフィスに納品してもらって、なんとかしてデータセンターに持ち込んで、ラックに設置するスタイルを採用することが多い。

これは、必然的にL2スイッチだとかサーバをデータセンターに持ち込む手段が必要になり、クルマを持っていない私は上司に迷惑をかけてしまう次第ではあるが、L2スイッチだけとなると相場が少し異なってくる。

要するに、L2スイッチを小脇に抱えてデータセンターに向かうという行為が可能になるのである。さすがに1Uサーバを抱えて電車に乗る気にはならないが、L2スイッチくらいの重さだと意外といけるのである。

f:id:y_fudi:20110131235926j:image

まぁ、電車でこんな感じで、小脇にL2スイッチを抱えてる姿を目撃されるのは、ちょっと気が引けるが、L2スイッチなんて持ち歩くもんでもないし、一時の恥に耐えれば…と思ってしまう。

で、いろいろと持ち替えて、L2スイッチの正しい持ち方(電車編)を研究しているウチに、データセンターの最寄り駅に着いてしまったので、結局、どう持つのが正しいのか結論は得られなかったが、写真の持ち方がかなり楽なことはなんとなくわかった(つり革が使えないので、意地でも座ろうと言う気になれる持ち方でもある)

あ、それがどうしたと言われると、とにかく困ってしまうわけだが…えーと、この前、L2スイッチを増設したって話題のつもりが見事に脱線したエントリーを書いてしまった次第である。

なんかVyattaで検索されてるらしいので、Vyatta雑感

このBlogのアクセスが前日比700%超えとかになってて、ちょっと焦った。なんかやばいことを書いてしまったっけ…と思いつつ、調べてみると、Google先生に「Vyatta」について聞いた人がこのBlogに案内されているみたいだった。うーむ、なるほど、Vyattaですか。

Vyattaはご存知のとおり、ソフトウェアルーターと呼ばれているソフトウェア。Linux(Debianだったか)ベースなので、その辺で手に入れられるx86マシンをルーターに変えられる便利なもので、開発してるVyattaによれば、Ciscoの製品とも十分闘えるスペックをたたき出せるらしい(ま、私が関わっている環境では、そんなハイエンドな使い方はしないので、ふぅーんという感じ)

で、Vyattaが配布しているドキュメント(PDFなんだけど、ダウンロードするためにはメアドなどを登録しなきゃならず、、、面倒。しかも、ドキュメントもバージョンがこっそりあがったりして、新しいのを落とす度にいちいち登録しなきゃいけないのは…私だけ?)を眺めて、コンフィグを徒然なるままに書いてみての雑感を少々書き留めておこう(ネットワーク機器初心者の私の雑感なんて役に立たないに1票だけども)

前述のように、たいしたことをやんないでOKなネットワークを前提としているので、、、BGPがどーなんだ、OSPFはどーなんだという(…私がどこかで聞きかじったような…)キーワードを気にしてらっしゃるネットワークエンジニア諸兄にはまったくアレな内容でございます。すいません。はは(汗)

今回のコンフィグでは、とりあえずスタティックルーティングができればOKで、あとはファイヤーウォールでこっち側のNWに対する攻撃の防衛をやってみますかという感じ。というわけで、staticルーティングはドキュメントを見ながらがんばってくださいまし…という印象。ま、staticルーティングなんて、その辺のLinuxのディストリビューションでも実現できそうなことなんで、わざわざVyatta使うようなことでもないじゃんというのは確かにそうかも。

ただ、CUIで設定を行う場合、とりあえず設定を叩き込んで、commitするまでは、現状の設定との差分を表示してくれるので、割と設定しやすいような気がするし、ありえない設定(タイプミスとかのレベル)をしようとするとちゃんと叱ってくれるので、設定して再起動したら設定が間違ってて、あー(涙)みたいなこと(httpd.confでよくやるんですね、私は。近頃になって、syntax checkの技を覚えましたが)は少ないんじゃないかと思われ。

んで、今回の要件では、前述のとおり、Vyattaのファイヤーウォールでその下にぶら下がっているサーバ群に対するSSH Brute Forceとか防いじゃおうと思っていて、そういう意味ではファイヤーウォールの設定がキモかなぁと思っている。…でも、Linuxベースということは、ファイヤーウォールはiptablesそのものという印象。もし、Linuxのiptablesの設定をやったことがあれば、Vyattaのファイヤーウォールは造作なく設定できそうな気がする。ただ、「IN」とか「LOCAL」って概念はVyattaならではなのかなぁ、、、と思ったけれど、そこまでiptablesを極めてないので、誤解かも知れず。。。うーむ。あー。

一応、Vyatta Core 6.0を使ってドキュメントを眺め回しながら設定を書いてみたけれど、SSHへのアクセス頻度を制限することができたっぽい雰囲気。ま、割と簡単なんだろうなー。えーと、そういえば、Vyattaのドキュメントが英語なのは、生ぬるく笑ってわかったふりをするしかない世界かもしれず。

なんか雑な雑感だけど、とりあえず、雰囲気だけメモということで(笑)

そういえば、この前書いたエントリーで、Vyatta Core5では、e1000eが入ってなくてアレだなぁみたいなことを書いたけれど、Vyatta Core6を入れてみたら、普通にe1000eなドライバが入ってて、あー、何を心配してたんだかという感じ。とはいえ、HPの「NC110T」は、普通に認識されて使えてる感じなので、、、ま、いっか…と。

Canon IXY DIGITAL 220isを買ってみた。

ヨドバシカメラに立ち寄ったついでに勢いで「Canon IXY DIGITAL 220is」を購入してしまった(汗)

まぁ、これまで使っていたデジカメは、同じくCanonの「IXY DIGITAL 50」。発売されたのが2004年のこんな感じのデジカメだ。有効画素数が400万画素。正直、プリントすることがなく、Web用の写真しか撮らないので、有効画素数なんてほとんど気にしていないが、最近のケータイに付いてるデジカメ機能でも普通に400万画素以上の有効画素数を持っていることを考えると、相当に古くなってしまっていたのは確かだろう。IXY DIGITAL 50に搭載されている映像エンジンは、DIGICIIだったわけで、現行モデルがDIGIC4を搭載していることを考えあわせても、かなり古い。

仕様に関してはほとんど困っていなかったが、経年劣化なのか、扱い方が荒かったせいなのか、だんだんAFのピントが合わないことが増えてきた。ちっちゃい液晶ではなんとなく良い感じだが、PCで見てみると、さっぱりダメだ…みたいな。コンパクトデジカメはささっと出して、ささっと撮れることが大事なので、ピントが激しく外れていることを警戒して、余計に何枚か撮影するのが面倒だった。そんなわけで購入することにした次第だ。

使い慣れているCanonのIXYが楽だろうという打算があったので、IXYシリーズにすることにした。で、IXY DIGITAL 930isに搭載されているようなタッチパネルは何かと面倒そうという気がしてパス。510isと220isの違いって、なんとなく外見だけのような気がして、丸っこいのがちょっとイヤだったので、220isをチョイス。

試運転も兼ねて、なんか撮ってこようと思う。

«過去の 投稿 新しい 投稿 »