Elasticsearch_ebs
opsworks と elasticsearch についてのメモ
elasticsearch についての memo
- クラスタリングした時に master-slave みたいになるのか?
- ならない。すべてがマスタになる模様
- 複数台立てておいて、片方落としておいて、立っている方にデータPUT して落としておいた方を立ててGETできる
- elastic search s3 gateway はパフォーマンスの問題で deprecated になっている模様
- なので EBS でやることになる。
- chef の recipe を見ると、設定しておけば ebs を自動で作ってマウントまでしてくれる感じになっている
- elasticsearch::ebs, elasticsearch::data のレシピを実行すれば良い感じ。
- opsworks では, layers に elasticsearch::ebs, elasticsearch::data の順で登録すればおk
- README に書いてある通りに設定が必要。具体的には data_bags/elasticsearch/data.json と aws の認証周りの設定が必要
- elasticsearch::ebs, elasticsearch::data のレシピを実行すれば良い感じ。
- 各アベイラビリティゾーンに分散しておいておいて、 internal loadbalancer に紐付ければ、片方が死んでも大丈夫
- 災害時の復旧については、たぶん snapshot からの復旧に加えて、 index の再作成(upsert なAPI 叩きまくる) が必要
- discovery については aws-instance プラグインみたいなのがあって、api 叩いてリスト取得してきている。
elasticsearch についての memo2
- elasticsearch って aws のサービス名かと思ってたけど、別にそういうわけじゃない
elasticsearch についての memo3
opsworks のレイヤーで、internal LB をひもづけることはできると思うけど、
新しく作った elasticsearch node のインデックス作成とかしている時に紐づくとまずいので
いったん手動でやるようにする。(たぶんELBの死活監視を工夫すればうまいこと行ける)
opsworks の chef で役立つコマンド例
## setup サイクルを retry
opsworks-cli-agent run_command setup
## custom.json を dump
opsworks-cli-agent get_json > hoge.json
## ログをみる
opsworks-cli-agent show_log
## hoge.json を指定すれば、楽にもう一度ライフサイクルを指定できる
"/opt/aws/opsworks/current/bin/chef-solo" -j "hoge.json" -c "/opt/aws/opsworks/current/conf/solo.rb" -L "/var/lib/aws/opsworks/chef/2014-01-09-05-28-54-01.log" > "/var/lib/aws/opsworks/chef/2014-01-09-05-28-54-01.log.out" 2>&1
### 役に立つディレクトリ
## opsworks の chef-solo が走るときにログが出たり、走るときの json が出たりする
/var/lib/aws/opsworks
## opsworks の chef-solo のクックブックとかがこのへんにある。
/opt/aws/opsworks
use_iam_profile がうまく行かない件
gem の fog を使うところで use_iam_profile => true で渡しても全然うまく動かない問題があって、
ライブラリのバグかもと思ったけどなんか違うっぽくて、時間がなかったので custom.json で大人しく accesskey とかを指定した。
おそらく _request の時に credential の作成をしているんだけど、そこでミスっているんじゃないかなぁという予想。