Squidでダウンロードファイルのサイズ制限を実施

要件

  • 一般ユーザはサイズ上限10MBに制限
  • 管理者は無制限

ACLとreply_body_max_size を使って設定

acl administrator src 192.168.0.100/32

reply_body_max_size 10485760 deny all !administrator

SquidACLまわりは

  • 同一行内は and
  • 複数行にわたるものは or

として判定されるってのがキモ、かな

タスクスケジューラでエラーコード 2147943645

Windows Server 2008のタスクスケジューラでエラーコード 2147943645 が記録され、タスクが開始されていない

タスク スケジューラは、ユーザー "[ドメイン名]\[ユーザ名]" の "\[タスク名]" タスクを開始できませんでした。追加データ: エラー値: 2147943645。

この原因は、

  • タスクが「ユーザがログオンしているときのみ実行する」よう設定されている
  • 誰もログオンしていない

というタイミングでタスク起動の時間がくると記録されるorz

数値を判定する正規表現

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:ちょっとだけね