2012年8月7日火曜日

ec2-bundle-vol で鍵ファイルが削除される


ec2 tools を更新したインスタンスでAMIを取得し、そのAMIを起動した時の事です。
元のインスタンスでは動いていた ec2 tools のコマンドでエラーが発生する(;´Д`)
理由は、秘密鍵等々が無いから。



どうやらver.1.4.0.0以降ではこれらのファイルが削除されるのがデフォルトのようです。
以下、「--manual」より。

The recursive copying process copies directories from the volume into the image.
The special directories:

- '/dev'
- '/media'
- '/mnt'
- '/proc'
- '/sys'

are always excluded.

Files matching the following regular expressions:

- '*/#*#'
- '*/.#*'
- '*.sw'
- '*.swo'
- '*.swp'
- '*~'
- '*.pem'
- '*.priv'
- '*id_rsa*'
- '*id_dsa*'
- '*.gpg'
- '*.jks'
- '*/.ssh/authorized_keys'
- '*/.bash_history'

are excluded by default on Linux. Individual files that match these patterns may be
included by specifying the '--include' option.



ちなみに、これまで使っていたver.1.3-53773では削除されません。
マニュアルにも載っていません。うぐぅ…
仕方がないので、必要なものだけは「--include」で指定しました。

2012年7月18日水曜日

EBS が attaching から attached にならない


EC2にて、EBSを何度かattach/detachしている際に、
ステータスがattachingのまま変化せず、インスタンス側に接続されない事がありました。


■原因
attachしようとしていたデバイスが既に使用(mount)されていたから。

今回は、detachが成功していたのでそのままattachしてしまったのですが、インスタンス側でデバイス(/dev/sdg)がmountされたままでした。
なので、attach出来ずattachingから進まなかったのです。。。




■対応方法
1.mountされていないか確認し、もしされていたらumountする
2.未使用のデバイスを使用する(sdf - sdpの中から選択)
3.インスタンスを再起動する

umount で -l を使う前に fuser で確認


umountしようとしたら device is busy とエラーが出ること、ありませんか?

どこかで使われてるよ!って言われているのですが、心当たりが全くないので強制的にumountしたくなります。
その気持ちを抑えて、一度使われているプロセスを確認しましょう。


# fuser -muv <umountしようとしているディレクトリ>



このプロセスなら消しても大丈夫と確認した上で、強制umountします。

# umount -l <ディレクトリ>



このオプション、シェル上だと使えませんでした。。。

2012年7月12日木曜日

https接続できるGitサーバを立てるならgit-http-backendを使おう


Gitサーバに接続する方法は3つあります。
・SSH
・git
・https


httpsで接続できるようにするには、WebDAVが一般的だったようですが、
どうにも接続が出来ずにいたら「git-http-backend」を使うといいよという情報を発見!



CentOS5で、Trac と git の連携 より
正確なソースがよくわからないけど、どうやら WebDAV だと、push がサポートされないっぽい。最近は、git-http-backend を使うらしい。なので、こいつを使うことに。


gitリポジトリをホストするのにWebDAV使わないほうがいい より
共有gitリポジトリをホストする方法をググると、WebDAVを使ったやり方が結構出てくる。このやり方には明確なデメリットしか無いにもかかわらず、WebDAVを使ってホストする方法を紹介するページでは触れられていないことが多い。(中略)もうWebDAVを導入してしまって構成変えるのも面倒くさい場合は、Smart HTTPを導入することでWebDAVによるホストの欠点を完全に隠すことができる。速度もssh経由に劣らないし、サーバサイドフックも起動する。



「git-http-backend」を使ったら超カンタンにhttpsなGitサーバが出来上がりましたよっと。

2012年7月10日火曜日

symfonyでカラムの更新を判断する


phpで、条件によってあるカラムを変更する、という処理を行う関数があるとします。
この時、戻り値で変更があったかどうかsymfonyなら分かるんです!



ざっくり、こんな感じ。

function change() {
  if ($this->name === 'test') {
    $this->name = 'hoge';
  }

  return $this;
}


// $user->name = 'test'

$user->change();
$lastModified = $user->getLastModified(); // $lastModifiedは配列

if (isset($lastModified['name']) {
  echo 'change!';
}


symfony使いなら知ってるよ( ´_ゝ`) かもしれないけど、初めて知ったので(^_^;)

2012年6月14日木曜日

[追記アリ]AWSのELBでHealthyHostCountが0になる


某サービスで時たまELBのヘルスチェックに失敗し、HealthyHostCountが1を下回る事がありました。
AutoScalingの設定もしていますが、in/outの時以外でも発生し、
CPU使用率が30%だったとしても発生しました。

原因がわからず、AutoScalingのしきい値を一時的に変更してみたりもしましたが、一向に改善せず。。。


そういえば、ヘルスチェックの設定項目にtimeoutがあったよな、と言うことで許可をもらい設定を変更しました。
初期値の5から少しあげた10に変更。

変更後1日立ちましたが、これまで日に1回は発生していた問題が発生していません。やった!
このまま問題が解決してくれれば・・・


あと、twitterで教えてもらった事があるので箇条書きにします。

■AWSのELBとApacheを使う際の注意点
・Timeoutは120以上が推奨
・ApacheのKeepAliveは有効にすべし。ELBとの接続効率があがる。

thanks for @iara !


【追記(2012-06-15)】
中の人より、詳しい説明を頂きました。
荒木さんありがとうございます!!

debiancdn : Amazon ELBをうまくつかうには、KeepAliveを有効にしよう。Timeoutは60秒よりだいぶ長くしよう。その背景。



2012年5月23日水曜日

href=# の時、ページトップに戻らないようにする


jqueryを修正していてハマったのでメモです。


■ハマった内容
<a href="#">をクリックすると、スクロールしていたとしてもページのトップに戻ってしまう。

リンクをクリックした後、htmlをappendする処理。
そこから動きたくないのに、どうしてもトップに戻ってしまってイラッっと…



■対応方法
$('a[href="#"]').click( function() {
// 処理
return false;
});