数値を判定する正規表現

3桁ごとのカンマ付&+-対応&小数点対応の正規表現が探してみても見つからなかったので考えてみた
もっとよく探せばどこかに転がってそうな気もする

^(?![-+]0+$)[-+]?([0]|([1-9][0-9]*)?(,[0-9]{3})*)(\.[0-9]*[0-9])?$

クラスタがディスクリソースをマウントしてくれなくなった

壊れた?

クラスタ ディスク リソース ディスク I:: は壊れています。ChkDsk /F を実行して問題を修復してください。 このリソースのボリューム名は "\\?\Volume{45b9d2a7-469b-4b5d-a70d-a3ef18a79b7c}\" です。
 利用可能な場合、ChkDsk の出力はファイル "C:\WINDOWS\Cluster\ChkDsk_Disk3_Sig023FEAEC.log" に格納されます。
 ChkDsk はイベント ID 26180 でアプリケーション イベント ログに情報を記録することがあります。

とあるサービスが暴走してサーバがハングしてしまい、どうしようもなくなってリセットボタンを押したら共有Storage内のLUNが壊れたらしいorz

イベントログはChkDskをかけろというが、容量が8TBもあるディスクにかけると1週間はかかると思われ

なんとか

強制的にマウントさせられないかと調べたところ、そういうコマンドがあるらしい

参考:Cluster resource

ところが、クラスタの状態が「オンライン待機中」のためコマンドを受け付けてくれず
さらに調べたところ、上記に該当するレジストリがあるとのこと

HKEY_LOCAL_MACHINE\Cluster\Resources\[リソースのGUID]\Parameters\SkipChkdsk

の値を「1」にセットするとChkDskをSkipしてくれる(デフォルトは「0」)

ところが

レジストリキーをセットして再起動をかけても、相変わらずマウントしてくれないどころかまったく同じイベントログが記録されてる

しつこくレジストリをいじる

次はおなじ階層にある「ConditionalMount」の値を「0」にしてみる(デフォルトは「1」)

※ 上記したMicrosoftのURLだと、このオプションは「0」にすべきか「1」にすべきかよくわからない

マウントできたw

この状態で再起動すると、無事マウントすることに成功
見た感じどこも壊れてないようなので、レジストリの値をデフォルトに戻して再起動したところ、何事もなかったかのようにマウントされた

MySQL Clusterの管理ノードを冗長化する

先日MySQL Clusterを稼働中のシステムで、管理ノードが停止したため、クラスタが機能しなくなるトラブルに見舞われたので、管理ノードを冗長化した

その際、あまり情報があたってこなかったので、今後のために書いておくことにする

config.iniの書き方は思ったとおり

# vi /var/lib/mysql-cluster/config.ini

[ndb_mgmd]
id=1 # Node ID
hostname=mgm01

[ndb_mgmd]
id=2 # Node ID
hostname=mgm02

でもこれだけじゃ足りなくて

my.cnfにも書く必要がある

# vi /etc/my.cnf

ndbcluster
ndb-connectstring=mgm01,mgm02

[mysql_cluster]
ndb-connectstring=mgm01,mgm02*1

my.cnfに複数の管理ノードを記載するには、カンマで区切って並べる

参考:MySQL :: MySQL 5.1 リファレンスマニュアル :: 14.4.4.2 クラスタの 接続文字列

*1:なぜ2ヶ所書く場所があるのかわからない。このセクションだけでいいような気もする

PuttyConnectionManagerでputtyjp.exeを使うには

調べてても見つけられなかったので、「こんなことわざわざ書く?」と思われるかもしれないけど書いておく。

ファイル名を変えるだけなんだけど

  • オリジナルのputty.exeをputty.exe.orgへ
  • puttyjp.exeをputty.exeへ

これだけ。

たどり着くまでは難しく考えてた

Connection Managerのデータベースファイルを直接編集しようとか。
実際、commandlineって項目があったからそこにputtyjp.exeへのパスを書いたりしても、putty.exeへの引数にしかならないとか。

Muninで複数サーバのグラフを並べてみたい時の設定

監視する側の /etc/munin/munin.conf に書く監視される側の名前の付け方をひと工夫するだけ

[sv01.example.com]
    address sv01.example.com

[sv02.example.com]
    address sv02.example.co.jp

[sv03.example.com]
    address sv03.example.com.tw

ただし、各監視対象のサーバがこの名前では受けてくれないので、それぞれの /etc/munin/munin-node.conf の host_name の項目に sv03.example.com 等の「管理する際の名前」を書いておく

これでちょっと見やすくなる*1

*1:ちょっとだけね

調子に乗ってWindowsにも入れてみた

試しなんでXPなんだけど

http://www.jory.info/#downloads_muninnode
ここ↑から munin-node-win32 のBinaryをダウンロードして解凍
できたフォルダをProgram Files配下へ移動
コマンドプロンプトを開いて

> "c:\program files\munin\munin-node-win32.exe" -install

ってするとサービスに登録してくれる*1

あとは監視する側のmunin.confにFQDNまたはIPアドレスを書き加えるだけ
すばらしく簡単w

*1:MSI Installerを落として入れたらこの辺の手間はいらないのかも

CentOSにmunin-nodeを入れてみる

昨日Gentooへのインストールが出来たので、監視される側としてCentOSにmunin-nodeを入れてみる

yumでいっぱつ

# yum install munin-node

としてみたところ、主にPearl関連で6つインストールされるみたいだけど、やばげなのは特になかったので

# yum -y install munin-node

として一気にインストール

で、これだけでpluginとかも設定が終わってるw
すばらしい

あとは

# /etc/init.d/munin-node start
# chkconfig munin-node on

して起動時に起動するようにして設定終わり

監視する側も2行だけ

# vi /etc/munin/munin.conf

で設定ファイルを開いて

[監視対象のサーバ名]
    address 監視対象のサーバ名またはIPアドレス

って書くだけ
これで5分後にはグラフができるって、すげぇ簡単