タグ

ブックマーク / dsas.blog.klab.org (29)

  • KLab勉強会#4の資料を公開します : DSAS開発者の部屋

    3/28に開催した、第4回KLab勉強会の資料を公開します。 『DSASのやりくり - MATRIXの秘密と効率的なシステム管理の関係』 〜 ひろせまさあき (KLab株式会社) 発表資料 (PDF, 661 KB) 動画: 前編、後編 (Ustream.tv) 『オープンソースなシステム管理フレームワーク Func』 〜 宮下 剛輔(株式会社paperboy&co.) 発表資料 (PDF, 753 KB) 動画 (Ustream.tv) たくさんの方にお越しいただきありがとうございました。 おかげさまで、懇親会も含め盛況のうちに終わり、とても楽しい時間を過ごすことができました。 近いうちに第5回も開催したいと思っています。 勉強会の内容や参加募集など、決まり次第このブログでアナウンスしますので、今後も購読していただければと思います。

    KLab勉強会#4の資料を公開します : DSAS開発者の部屋
  • mod_mod: Apache module を動的にコンパイルして実行する Apache module : DSAS開発者の部屋

    現在 WEBアプリケーションの開発言語といえばいわゆる Light Weight Langage が主流の様な気がしますが、C言語で WEBアプリケーションを書きた いと思った時、どのような方法があるでしょうか。一つはコンパイルした実行 オブジェクトを CGI として呼び出す方法、もう一つは apache module を書く という方法があると思います。 CGI の場合プロセス起動のオーバーヘッドがありますが apache module の 場合非常に高速です、にも関わらず apache module による WEB アプリケーショ ンの開発があまり流行っていないのはやはり、コード変更の度にコンパイルし なければならない事と、反映の際に apache を再起動しなければならない事が 原因ではないかと思います。 そこで、apache module っぽい C言語のコードをサーバー上で動的に

    mod_mod: Apache module を動的にコンパイルして実行する Apache module : DSAS開発者の部屋
  • Python で OpenID の認証サーバーを動かしてみました : DSAS開発者の部屋

    あるサイトで OpenID の使用を検討していて、備忘録をかねてブログにまとめててみようと思い記事にしてみました。 OpenID の基的な用語説明と、OpenID 2.0 で新たに取り入れられた仕様についてまとめてみました。また、Python OpenID Library で用意されているサンプルのサーバーを動作させる方法について紹介してみたいと思います。 OpenIDに対応したサイトでユーザー登録したユーザーには、OpenID用のID(identifier:識別子)が割り当てられます。 ユーザー登録やパスワード管理などの機能を持たないサイトでは、ユーザーにこのOpenID用のIDを入力してもらい、 OpenIDの仕組みを使って安全にIDの認証と使用の認可の確認を行うことができます。 ユーザーは、認証サーバ側で認証機能を持たないサイトで、自分のアカウントが使用されることを許可する必要があ

    Python で OpenID の認証サーバーを動かしてみました : DSAS開発者の部屋
  • Linuxでクラッシュダンプを採取(5) 〜 nmi_watchdogとの併用 〜 : DSAS開発者の部屋

    とりあえず、ここまでの仕組みで「カーネルパニックが発生」した際のクラッシュダンプを採取することはできそうです。しかし、実際にトラブルが発生する状況では綺麗にパニックしてくれることは希で、大抵の場合はどうにもこうにも身動きがとれなくなってしまいがちなものです。ping が通らなくなりコンソールでの制御が不能になってみたり・・・ 「路地裏 ソース解読研究所」の「最強の割り込み」で nmi_watchdog というものが紹介されていました。「定期的に NMI を発行させて自分自身の死活監視するですか、へえぇ〜」と思いつつ実際にやってみました。 しかし、問題はどうやって動作確認するかですよね。 だめもとでサーバを過負荷状態に追い込んでロードアベレージを350くらいまで上げてみたんですが、さすがに割り込み処理はちゃんと動いてるようでなかなか落ちてくれません。(逆に過負荷なだけで nmi_watchd

    Linuxでクラッシュダンプを採取(5) 〜 nmi_watchdogとの併用 〜 : DSAS開発者の部屋
  • Linuxの断末魔の叫び(kernel oops)をリモートホストで採取する方法 : DSAS開発者の部屋

    Linuxには、kernl oopsが出た場合に自動的にrebootできる仕組みがあります。 この機能を使えば、OSが不意に停止してしまった場合に自動的にrebootしてサービスを再開することができます。 ただ、kernelメッセージは障害原因特定のヒントになりうるので採取できた方が好ましいのですが、自動rebootの場合はコンソールなどに出力されているかもしれないkernelメッセージを採取することができません。 というわけで、今回はkernel 2.6で実装されたnetconsoleを使い、kernel oops発生時にそれを記録しつつ自動rebootする方法を紹介したいと思います。 まずは、kernel oopsが発生した場合、動作を継続するのではなくkernel panicになるようにするのと、kernel panicが発生したらrebootするように設定します。 この設定は/pr

    Linuxの断末魔の叫び(kernel oops)をリモートホストで採取する方法 : DSAS開発者の部屋
  • Keepalivedのヘルスチェックを強化するパッチ : DSAS開発者の部屋

    keepalived は MISC_CHECK を利用すると、標準の機能でサポートされていないヘルスチェックをすることができますが、MISC_CHECKの注意点でご紹介したように、安全に運用するためには結構気を使わなければいけません。また、比較的短い周期で繰り返さなければならないヘルスチェックでは「チェックの度に別プロセスを起動する」というアプローチは、できるだけ避けたいと考えるかもしれません。 というわけで、それなりにニーズがあると思われるヘルスチェック機能を keepalived-1.1.13 に組み込んでみましたのでパッチを公開します。 keepalived-extcheck.patch (46080bytes) ただしこのパッチ、まだDSASの番環境には適用していません。 つまり稼働実績がありません。今は開発環境での試験運用中ですので、その点をご理解の上でご利用下さい。不具合報告

    Keepalivedのヘルスチェックを強化するパッチ : DSAS開発者の部屋
  • DSAS開発者の部屋:オープンソースを楽しむエンジニアの一日 〜 コードを楽しく読む工夫

    C言語で書かれたソースコードを読んでいるとき、関数ポインタから呼び出されている機能の実体がどこに書かれているのかを探すのに苦しんだ経験はありませんか? 私はあります、いっぱいあります!! そんなときはどうするかというと・・・ 手順1: まずは気分転換をする! 手順2: そして気合いを入れ直す! 手順3: さらに気力で読み砕く! 手順4: 最後に根性で発見する! これが、ごく一般的な作業手順(?)かと思います・・・(ごめんなさい嘘です) でもまあ、実際にここまで出来れば、そのプログラムの大まかな構成とか癖みたいなものはだいたい把握できているはずなので、他の関数ポインタについてもある程度当たりをつけて見つけだすことが出来るようにはなるかと思います。 ・・・・・が、、できれば気合いと根性を使わずに追えるなら追いたいのが人情ですよね。 straceやltraceを使えばシステムコールやライブラリコ

    DSAS開発者の部屋:オープンソースを楽しむエンジニアの一日 〜 コードを楽しく読む工夫
    zeemore
    zeemore 2007/05/24
  • DSAS開発者の部屋:知っていても損はしないkeepalivedの話 〜 MISC_CHECKの注意点

    keepalived では様々なヘルスチェック方式がサポートされています。 HTTP_GET SSL_GET SMTP_CHECK TCP_CHECK これらの使い方はなんとなく想像がつくと思いますが、これら以外のサービスのヘルスチェックをするにはどうすればいいのでしょうか。 例えば DNS とか FTP とかあれとかこれとか・・・ FTP は最悪 TCP_CHECK でお茶を濁すって手もありますが、FTP サーバがポートをオープンしたまま応答不能になることも考えられるので、あまりお勧めできません。また、DNS をチェックする機能は keepalived にはありません。 そんな時に使うのが MISC_CHECK です。今回は MISC_CHECK を利用する上での注意点や設定のサンプルを紹介したいと思います。 指定したプログラムを実行して、その終了コードによってリアルサーバを UP した

    DSAS開発者の部屋:知っていても損はしないkeepalivedの話 〜 MISC_CHECKの注意点
  • DSAS開発者の部屋:GREEさんの勉強会の資料を公開しました

    先日発表してきた、グリーさんの 第9回 オープンソーステクノロジー勉強会 『DSASのいろいろ』の発表資料と音声を公開しました。 発表資料 (PDF, 2,294 KB) 音声 (mp3, 32,151 KB) 発表はこんな内容です。 自己紹介 [0:22] (1) DSASの特徴の紹介 [6:34] 設計思想、全体構成など (2) DSASの構成要素の紹介 [17:22] ロードバランサ - LVS, keepalived [17:33] ネットワークブートの活用 [30:23] 故障に強いストレージサーバ - DRBD [37:15] NICの二重化 - bonding [44:29] シリアル接続 温故知新 [46:24] サーバリソースの見える化 - ganglia [49:11] 質疑応答 [58:00] 発表はかなり駆け足でしたが、 ロードバランサ (LVS, keepaliv

    DSAS開発者の部屋:GREEさんの勉強会の資料を公開しました
  • 知っていても損はしないkeepalivedの話 〜 notification_emailの罠 : DSAS開発者の部屋

    このブログではすでにお馴染みとなっている keepalived ですが、設定ファイルの書き方には少し癖があります。 今回は、keepalived を設定する上での注意点を紹介したいと思います。 なお、この内容は現在の最新バージョン(1.1.13)のものですのでご注意下さい。 global_defs # Block id { notification_email # To: { admin@example1.com ... } と記述されています。 これは、ヘルスチェックが失敗してリアルサーバがダウンしたり、復旧したりしたときに、そのイベントをメールで通知するための送信先を指定する部分です。 これに従って設定ファイルを書いたところ、通知メールは正常に送信されているようですが、メールサーバが以下のようなバウンスメールを返していました。 Subject: failure notice I'm a

    知っていても損はしないkeepalivedの話 〜 notification_emailの罠 : DSAS開発者の部屋
  • TAP-Win32 でネットワークパケットと戯れる (後編) : DSAS開発者の部屋

    ■ はじめに 前回はTAP デバイスからパケットデータを読み出してみました。 今回はこれに加えて書き込みを試してみましょう。 手近でわかりやすい題材として ping コマンドのエコー要求に応答してみることにします。 つまり、TAP 仮想ネットワーク上に存在するホストのような顔をして待機し、所定の IP アドレスへ ping が打たれるとそれに反応してレスポンスを返すプログラムを書いちゃえということですね。 このように、入出力パケットの操作をユーザモードのコードで自由に行えるのが TAP の面白いところです。 仮想ホストの IP アドレス? 考えかた イーサネットヘッダ IP ヘッダ ICMP ヘッダ+データ まずは軽く・・ あれれ? ARP メッセージ ARP レスポンスに挑戦 ARP レスポンス成功!! ICMP エコーレスポンスの実装 ICMP エコーレスポンス成功!! (チェックサム

    TAP-Win32 でネットワークパケットと戯れる (後編) : DSAS開発者の部屋
  • TAP-Win32 でネットワークパケットと戯れる (前編) : DSAS開発者の部屋

    ■ はじめに coLinux や OpenVPN を使ったことのある方なら仮想ネットワークアダプタ「TAP-Win32」の名前をご存知でしょう。 TAP-Win32は CIPE-Win32 というプロジェクトによる GPL のオープンソースソフトウェアで、実体は Windows のカーネルモード下で動作するネットワークドライバです。 TAP は物のネットワークデバイスのように振る舞うので、これを使って Windows 上に独立した仮想ネットワーク環境を設置することが可能です。 TAP-Win32 を自作コードから利用するための開発者向けの情報は現時点ではあまり多くありませんが、面白そうなので扱い方を調べてみました。 データリンク層以降の生のパケットデータをユーザモードのプログラムから直接操作できるためアイディア次第で応用がききそうです。 今回は手始めに TAP デバイスからデータを読み出

    TAP-Win32 でネットワークパケットと戯れる (前編) : DSAS開発者の部屋
  • UML のコンソールを screen に表示させる 〜疑似端末を screen に結びつける : DSAS開発者の部屋

    UML(User Mode Linux)では,ゲストOS上のコンソールデバイスのバインディング先として,色々なものが選べます.先日公開した LVS の実験パックでは,ホストOS上の(空き)コンソールデバイスに割り付けていました.この方法はお手軽なのですが,反面ホストOSのコンソールにアクセスできる環境じゃないと,ゲストOSのコンソールにもアクセスできなくなってしまいます.折角の疑似環境なのに,ハードウェアに縛られるのはあまり嬉しくありません.ということで,私がUMLを使うときには,コンソールのバインディング先を(ホストOSの)疑似端末デバイスにして,この疑似端末と screen を結びつけて使っています. 疑似端末とは 題に入る前に,疑似端末デバイスとはどういうものか,ということを説明します. UNIXの眷属に於いて言うところの端末デバイスとは,例えば皆さんが普段お使いのディスプレイとキ

    UML のコンソールを screen に表示させる 〜疑似端末を screen に結びつける : DSAS開発者の部屋
  • なぜ apache module を更新すると Segmentation fault するのか : DSAS開発者の部屋

    今回は、apache module について気になることがあったので紹介します。 先日 バージョンアップするために apache module を更新した直後 apache が Segmentation fault してしまうという問題に気が付きました。 Segmentation fault した後に apache を再起動すれば、新しいモジュールが反映されて正常に動作するものの何故この様なことが起こるのか不思議に思い原因を調査してみました。 % curl http://localhost/ curl: (52) Empty reply from server レスポンスが空です。apache のログには [Thr Mar 29 17:52:01 2007] [notice] child pid 20001 exit signal Segmentation fault (11) この様なエ

    なぜ apache module を更新すると Segmentation fault するのか : DSAS開発者の部屋
  • クラスタファイルシステム「lustre」を触ってみます : DSAS開発者の部屋

    負荷分散環境では必須ともいえるネットワークストレージですが、皆様の環境ではどのようなものをお使いでしょうか。 「ファイル共有なんてなくしてしまえっ!!」って言いたくなることも時々あったりしますが(笑)、画像などの素材データ類はDBに格納するよかファイルとして扱う方が運用上楽だったりするので、そう簡単に抹殺するわけにもいきません。 DSASではDRBDで冗長化したNFSサーバ(もちろんLinuxベース)をネットワークストレージとして使っていますが、構成上どうしても特定のサーバに負荷が集中しがちになるのが悩みの種です。 特にせっぱ詰まって困ってる訳ではないのですが「どーしたもんかなあ」と物思いにふけっていると、いつもお世話になっている協力会社の方から「lustreってのもあるよん」と教えてもらったので軽く調べてみました。これはなかなか楽しそうなクラスタファイルシステムじゃあないですか! lus

    クラスタファイルシステム「lustre」を触ってみます : DSAS開発者の部屋
  • DSAS開発者の部屋:Windowsに土足で乱入?! 〜 API フックのための予備知識

    ■ はじめに 前回の記事では Windows のイベントをフックする方法についてお話しましたが、特定の Windows API 呼び出しををフックするにはどうすればよいでしょう? それを考えるためには、まずどのような仕組みでプログラムが API を呼び出だしているのかを調べておく必要がありそうです。 ご存知の通り、Windows API は、所定の Windows プログラムから呼び出すことの可能なエクスポート関数として OS 環境の DLL(Dynamic Link Library) 群に格納されています。そして、あるプログラムの実行に必要な API を含む DLL は、実行ファイル起動時の初期化時にプロセスへリンクされ、その後は所定の API を透過的に呼び出すことができるようになります。 DLL をプロセスへリンクするには、実行形式をビルドする際に所定のインポートライブラリをリンクし

    DSAS開発者の部屋:Windowsに土足で乱入?! 〜 API フックのための予備知識
  • DSAS開発者の部屋:5分でできる、MySQLのメモリ関係のチューニング!

    MySQLのチューニングにおいて非常に重要となるメモリ(バッファ)関連のパラメータについて、 チューニングのポイント DSASのとあるDBサーバ(実メモリ4GB)の実際の設定値 をまとめてみます。 また、必要メモリの総量の計算や限界値を越えてないかチェックしてくれるスクリプトも紹介します。 是非、参考にしてみてください! まず最初に注意点を。 バッファには2つのタイプがあります。 グローバルバッファ スレッドバッファ グローバルバッファはmysqld全体でそのバッファが1つだけ確保されるもので、 これに対し、 スレッドバッファはスレッド(コネクション)ごとに確保されるものです。 チューニングの際にはグローバル/スレッドの違いを意識するようにしましょう。 なぜなら、スレッドバッファに多くのメモリを割り当てると、コネクションが増えたとたんにアッという間にメモリ不足になってしまうからです。 in

    DSAS開発者の部屋:5分でできる、MySQLのメモリ関係のチューニング!
  • 小さい液晶モニタ、買いました : DSAS開発者の部屋

    はてなのサーバファームを見に行ったときに、小さい液晶モニタ (多分 LCM-T042AS) を見せびらかされて欲しくなったので、DSASでも1台購入しました。 QT-701AV-S 7インチで、画素数は800x600、最大1024x768まで出ます。Linuxのフレームバッファで1024x768すると、字が小さくて見づらいので800x600で使うとちょうどよさそうです。 title Linux (Console Mode) root (hd0,0) kernel /vmlinuz ro root=/dev/sda3 video=vesa:mtrr vga=0x303 console=ttyS0,9600n8 console=tty0 panic=10 nmi_watchdog=1 crashkernel=64M@16M 交換品は、なぜかACアダプタが別の形状のものになっていたりモニタのメニ

    小さい液晶モニタ、買いました : DSAS開発者の部屋
    zeemore
    zeemore 2006/11/22
  • カラフル端末で視認性を高める - grepとシェルのプロンプト編 : DSAS開発者の部屋

    このブログに含まれる「DSAS」という文字列をgrepしてみます。 どこに「DSAS」があるのかさっぱりわかりません (^^; grepの結果を| less -p DSASとかに渡せばlessがハイライトして識別しやすくなるのですが、ここはgrepのカラフル機能(--color=auto)を使ってみます。 だいぶ識別しやすくなりました。 ハイライトの色を変更するには、色指定を環境変数GREP_COLORにセットします。指定の形式は前回紹介したlsのdircolorsと同じです。例えば、太字の黄色にしたい場合はこのようにします。 export GREP_COLOR='01;33' あと、毎回--color=autoと指定するのは面倒なので、環境変数GREP_OPTIONSにセットしておきましょう。GREP_OPTIONSにセットしたオプションは、暗黙的に効果を発揮します。 export GR

    カラフル端末で視認性を高める - grepとシェルのプロンプト編 : DSAS開発者の部屋
  • OpenSSH クライアントの proxy -- 踏み台サーバを経由しての ssh : DSAS開発者の部屋

    DSAS のメンテナンスは,基的に ssh を使ったリモートメンテナンスで済んでしまいます.夜中や休日に非常事態が起こったとしても,ネットワーク接続さえ確保できればその場で対応できます.ただ,さすがにインターネットから DSAS に直接 ssh できる様にしておくのは一抹の不安があります.ですので,DSAS への ssh 接続は社内のサーバからのみ許すようにしておいて,外からログインする必要があるときは一旦社内のサーバを経由することにしています. このような形にしている場合,DSAS にログインしようとする際は,一旦社内のサーバに ssh 接続する必要があって,小さなことですが一手間かかってしまいます.できればワンステップで接続できる方法が無いかと思って色々検索してみた(※)ところ,このページで ProxyCommand という設定項目を見つけました(見つけたのがボスの個人サイトなのは

    OpenSSH クライアントの proxy -- 踏み台サーバを経由しての ssh : DSAS開発者の部屋