2010年02月13日

[AWS][トラブル対応] Amazon EC2が固まってた…。その時に取った対応手段。

livedoorClipに登録 clip | このエントリーをはてなブックマークに追加 はてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

AWSに関する復旧エントリを見かけないので、あえて積極的に書き記す。

whois.hansode.org」がトラブルに遭遇

2010年の年明け。Amazon EC2へ論理移転した直後の出来事。

▼当時の状況

  • 閲覧が出来ない!
  • SSH接続を試みたが、接続出来ない…
  • Elasticfoxではインスタンスがrunning
どうにかせねば…

▼システム構成

  • 環境構築済みAMIを登録していた
  • MySQL datadirはEBS Volume
  • 論理移転後にMySQLへ投入したデータを一旦snapshot生成

論理移転後にまで戻ってしまうけど、復旧可能だったので楽観視していた。

ダメ元で挑んだsnapshot作成

ssh接続出来ないインスタンス。
きっと何かのプロセスがディスクをがっちり掴んでしまっている。
snapshotを作れないだろうと思っていた…。

  1. Elasticfoxから問題発生インスタンスにattachされているEBSのsnapshot生成命令
  2. …snapshot作成成功!
  3. snapshotからEBS Volume作成
  4. これも成功!
何とかなるかもしれないぞ?
そして新環境構築へ

ここからの操作は簡単だ。

  1. 環境構築済みAMIでインスタンス起動
  2. 起動したインスタンスにEBS Volumeをattach
  3. 起動したインスタンスにElastic IPアドレスを割り当てる

SSH接続し、データ破損を確認。。。

  • MySQLdが起動
  • 幾つかselectしてみるが問題ない
  • web閲覧可能
  • クローラーが問題なく動いている
問題なし!対応完了!!!

復旧を確認出来たので、

  • 固まってたインスタンスをterminate
    • terminateをリクエストしてから、2・3日インスタンスがシャットダウンされずにいた
    • システムが悪さしていたのではなく、実はAWS側のトラブルだったのか…?
    • 謎は迷宮入りした
勝利の条件
  • 環境構築済みAMIの存在
  • MySQL datadirにEBS Volume
  • Elastic IPアドレス

対応者のスキルに大きく依存するが、
ここまで手軽に、そして、柔軟にインフラ操作を可能にしてくれているAWSは素晴らしい。

惚れ直した。





2010年02月11日

whois.hansode.org(76/n) - パフォーマンスチューニングとその効果

livedoorClipに登録 clip | このエントリーをはてなブックマークに追加 はてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

まずは結果から

▼MySQL queries

whois-mysql_queries-month-20100211

▼MySQL throughput

whois-mysql_bytes-month-20100211

▼MySQL slow queries

whois-mysql_slowqueries-month-20100211

▼IOstat

whois-iostat-month-20100211


何に困っていたのか
  • とにかくslow-queryが多い
  • クローラーのクエリが刺さる
  • 刺さってるとwebの閲覧が出来ない

レコードが多過ぎて、どうしようもないと思い込んでいた…


毎日観察

日々継続作業が苦ではないので、とにかく毎日観察を続けた1ヶ月間。

  • slow-query元を調査
  • クエリを改善出来ないか検討
  • EXPLAINしてみる

解決策はアプリケーション側のSQLチューニング
  • ワイルドカードを撲滅
  • where句をスリム化
  • 無駄なクエリを発行しないようにアプリケーションを修正

統計情報から見えるもの
  • 刺さってたクエリが消え、
  • クエリ数が増加し、
  • IO負荷が減少

3000万レコードを支え続ける技術!

今回は良い勉強になった。
現在、システムは物凄く快適に動作中。

諦めかけていた機能追加、今後やる予定。



whois.hansode.org(75/n) - 「.tk」「.tw」「.gm」をサポート

livedoorClipに登録 clip | このエントリーをはてなブックマークに追加 はてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

現在の対応TLD数は62

久々に未対応ccTLDのパーサーを書いた。

  • .tk トケラウニュージーランド
  • .tw 台湾
  • .gm ガンビア

whoisサーバの無いccTLDが増えてる。



whois.hansode.org(74/n) - .ORGに「DNSSEC」が追加されていた

livedoorClipに登録 clip | このエントリーをはてなブックマークに追加 はてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

何かと早いのが「.ORG」

クローラーのログを観察していたら見慣れない項目に気づいた。

DNSSEC:Unsigned

「.ORG」のwhois情報全てにあるわけではなく、
一部に追加され始めているようだ。

Unsignedの他に何があるのかは分からない。



2010年01月25日

ファイルロック処理が実装されてないログファイルを、なるべく安全にログローテート

livedoorClipに登録 clip | このエントリーをはてなブックマークに追加 はてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

思わず手直ししたくなるスクリプト

「ログを吐き出しているけど、ロック処理が無い…」と言う、何とも初歩的なスクリプトがあったとする。
そんなログをローテートしたい。

▼要望

  • ログローテートする
  • ログは全て保存し、消さない
  • ファイル名に日付を付けたい

▼/etc/logrotate.d/foo-bar

/var/log/foo-bar.log {
    daily
    rotate 1
    missingok
    create 0644  www-data www-data
    sharedscripts
    postrotate
      basename=/var/log/foo-bar.log
      suffix=`date -d '1 day ago' +%Y%m%d-%s`.$$
      srcfile=${basename}.1
      dstfile=${basename}.${suffix}
      if [ -f ${srcfile} -a ! -f ${dstfile} ]; then
        (mv ${srcfile} ${dstfile} && gzip ${dstfile}) || :
      fi
    endscript
}

▼手動でローテートしてみる

$ sudo logrotate -f /etc/logrotate.d/foo-bar
$ sudo logrotate -f /etc/logrotate.d/foo-bar

$ ls -la /var/log/foo-bar*

▼作業後確認項目

  • 複数のログが生成されていれば良い
  • あとは日時ローテートされている事を確認出来れば良い
後書き

スクリプトでのロック処理実装は置いておくとして、

  • logrotate設定ファイル内にファイル操作処理を記述出来るのは嬉しい。
  • サーバ管理においてはシェルスクリプトを書ける事、それは大きな武器だと再認識。


2010年01月23日

whois.hansode.org(73/n) - Amazon EC2へ論理移転

livedoorClipに登録 clip | このエントリーをはてなブックマークに追加 はてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

今更ながら

昨年末にsakuraの契約が切れるので、Amazon EC2へ論理移転を行った。
これで2度目の論理移転。


ドキュメントは未来の自分へのラブレター

開発環境構築手順。
それと、以前論理移転した時に追加した手順。

必要なものは、可能な限りDebianパッケージ化してある。
すると、3つだけで環境構築が終わる。
Debianだと楽でイイね。

$ sudo dpkg --set-selections < ./dpkg.list
$ sudo apt-get install -f
$ svn checkout [ repos uri ]

あとはDBのデータ同期、/etcの設定(apache,mysql)


Amazon EC2で更にオイシイ

Debianパッケージ化してあるおかげで環境構築は楽になる。
Amazon EC2だと、仮想マシンイメージを丸々バックアップが可能だ。

仮想マシンイメージをプライベートイメージとして登録しておけば、
レプリカを手軽にいくつでも起動出来る。

これ以降、ElasticfoxなどでプライベートAMI指定して起動するだけ。
apt-getを実行しなくて良い。



2009年10月26日

作業PCをWindows 7にした

livedoorClipに登録 clip | このエントリーをはてなブックマークに追加 はてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

Windows 7 Professional
Windows 7 Professional
posted with amazlet at 09.10.26
マイクロソフト (2009-10-22)
売り上げランキング: 79

Windows Vista ⇒ Windows 7

すっきりさっぱりクリーンインストール。

大したアプリケーションをインストールしているわけでもなく、
こだわり設定をしているわけではない。

本を読みながら環境構築。
いろいろやりつつ、2時間で終了。

今の所、快適そのもの。



半袖 at 16:25|PermalinkComments(0)TrackBack(0)独り言 

2009年10月22日

[Wakame]Wakameの開発にご協力くださる方を探しています

livedoorClipに登録 clip | このエントリーをはてなブックマークに追加 はてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

■急募:"Wakame 1.0"開発協力者!

株式会社あくしゅでは"Wakame 1.0"の開発者を募集しています!
Wakameは次世代データセンターには欠かせないクラウドコントローラとして、今後大幅に機能拡張していきます。
Rubyでミドルウェアを開発してみたいという意欲あふれる方は是非お問い合わせください。

■仕事内容

  1. "Wakame 1.0"の使用目的を拡大するために、ミドルウェア部分の機能拡張を実施
  2. "Wakame 1.0"を使いやすくするために、GUIの追加開発を実施
  3. "Wakame 1.0"を分かりやすくするために、ドキュメントの整備を実施
上記の内、得意なもの1つ以上をお願いすることになります。

■募集要項

  • 下記(A)(B)(C)の知識・技術セットをいずれかお持ちの方
    1. Ruby, 現在のWakame, メッセージング, 並列処理, Xenなどのハイパーバイザの知識
    2. JavaScript, XHTML, Ruby on Rails, http通信(REST), ユーザビリティ, 画面設計の知識
    3. HTML, ドキュメンテーション
  • システムの設計が得意で、オブジェクト指向を理解している方
  • 人とのコミュニケーションが好きな明るい方
  • 期間:2009年11月初旬〜2010年3月下旬

■条件

応募期限は10/26(月)までです。
それ以降10/30(金)までに一度仕事内容や関わり方をミーティング形式でご相談させていただきましてその後、弊社基準で判断してからお見積もりをお願いします。

■一言

設立3年目の若い会社です。
来年からは「世界のクラウドソリューションを」をテーマに事業展開していく予定です。
そのために今後は弊社で開発している"Wakame"を機能拡張し、より高度なプロダクトへと躍進させていきます。
あなたもぜひ、この新しいチャンスに乗ってみませんか?

■連絡先

Twitter: @axsh_co_ltd
E-mail: r_at_axsh_dot_net (_at_と_dot_は適宜文字列を置換してください)




半袖 at 14:50|PermalinkComments(0)TrackBack(0)Wakame 

2009年10月20日

DHCP―ホスト設定サーバの設定・運用・管理

livedoorClipに登録 clip | このエントリーをはてなブックマークに追加 はてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

DHCP―ホスト設定サーバの設定・運用・管理
江面 敦 矢吹 道郎
テクノプレス
売り上げランキング: 295608

ISC DHCPの解説本

DHCPについて書かれた貴重な一冊。
2003年の出版と言う事が手伝ってか、本屋で見かける事は少ない。

少しこだわった運用・管理をしたい場合の設定事例が紹介されている。

▼目次より

  • DHCPについて
  • ISC DHCP
  • DHCPサーバの設定-準備編-
  • DHCPサーバの設定-超基本編-
  • DHCPサーバの設定-基本編-
  • DHCPサーバの設定-応用編-
  • 設定例

最近ではISC DHCPではなく、dnsmasqが使われ始めているのだろうけど、
まだまだISC DHCPが使われる場面はあるので、手元に置いておきたい一冊。



半袖 at 09:40|PermalinkComments(0)TrackBack(0) 

検証のため、どうにかしてCPU使用率を高める

livedoorClipに登録 clip | このエントリーをはてなブックマークに追加 はてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

「CPU使用率を高めたい」

隣に座っている人に質問された。
何をやっているのか見てみると、whileループでechoさせていた。

▼例

while :; do echo asdfasdf; done

foregroundで実行しているではないか。
backgroundで複数実行する事を伝えてみたけど、伝わらなかった。
キーボードを拝借。

$ cat >>EOS < perf.sh
#!/bin/sh
while :; do echo asdfasdf; done
EOS
$ chmod +x pref.sh
$ ./pref.sh &

いくつか実行したら95%くらいCPUを使うようになっていた。

forkしすぎに注意。
何事も程々に。



半袖 at 01:15|PermalinkComments(3)TrackBack(0)ほげり道