Spiderノードをもう1台(spider2)追加します。テーブルはspider1と同じ内容にします。100でoffsetを1,2でずらします。これについては、別の記事で触れています。mysqlってなんじゃ?(マルチマスタでauto_increment)http://memocra.blogspot.jp/2013/05/mysqlautoincrement.htmlまた、spiderを複数にした場合、appからの接続は1つにまとめます。Proxy系のソフトウェアを入れるのも1つの方法ですが、ここでは内部ELBを利用してみます。ヘルスチェックは3306ではなく別のポート経由でMySQL監視プロセスに接続スべきですが、ここではとりいそぎhttpdを立ちあげ80番に対してヘルスチェックします。それではappで投入プログラムを実行します。対象のホストは内部ELBのDNSNameになります。internal-spider-2040122974.ap-northeast-1.elb.amazonaws.com........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................spider1でデータを見てみます。|+----------+順調に入っていってるみたいです。あとはSpiderノードを必要に応じて追加していき、my.cnfでoffsetをずらして起動するだけです。offsetずらしの処理はcloud-initなどで行うと、AutoScalingすることもできそうです。spidermysqlってなんじゃ?(マルチマスタでauto_increment)MySQLでマルチマスタやシャーディングなどを行った場合、auto_incrementを使いたい場合があります。spiderだとすると、複数台のSpiderノードを経由してデータが投入されると、データノードでauto_increment値が競合してしまうことがあるため、auto_incrementのオフセットをspiderノードごとにずらします。2auto_increment_incrementはカウントアップされる単位です。上の例では100ずつ増えていきます。auto_increment_offsetはauto_incrementのスタート時点の値です。これによって、各spiderノードのauto_increment値は以下のように増えていきます。spider11101201301401.....123401spider22102202302402....123402つまり3桁目以上は全体で同じ値をカウントアップしていきますが、下2桁は重複しなくなります。これを元に投入されたデータはspider上で抽出すると以下のようになります。12101102201202301302401402.....123401123402随分値を飛ばしているように感じますが、ビットずらしのような感覚でとらえれば違和感はなくなると思います。この場合は、Spiderノードを99台まで増やしても値が重複しません。将来的に何台まで増えるかわからない場合はこのようにするとよさそうです。spider2013年5月22日水曜日jqってなんじゃ?(containsで簡単APIテスト)jqはsedのjson版のようなコマンドラインツールで、jsonデータをフィルタしたり切り取ったり整形したりが簡単にできます。cliがjsonを返すことで話題になったようで、以下の記事などで紹介されています。EC2の価格のJSONを"jq"でいじってみたjqの1.2では、containsという関数が追加されたようで、jsonに特定の要素が含まれているかどうかの真偽値を返すようです。これをつかって簡単なAPIテストが出来るんじゃないかと思い、試してみました。こんな感じのJSONがあったとします。'.config.regions[].region'"us-east""us-west-2""us-west""eu-ireland""apac-sin""apac-tokyo""apac-syd""sa-east-1"containsで指定(config.regions[].region)の要素にap-northeast-1があるかどうかを検査します。"ap-northeast-1"}]}})'false無いようです。apac-tokyoがあるかどうかを検査します。"apac-tokyo"}]}})'trueありました!わざわざ導入に手間がかかるツールを使うまでもない簡単な検査であれば、ワンライナーで終わるコマンドラインをシェルにいくつか書いてまとめて実行するというのも手段としてありかもしれません。jq2013年5月20日月曜日mroongaってなんじゃ?(Spiderで分散全文検索)前回の記事でmroongaを使用しましたが、全文検索のデータは大きくなりがちなので、Spiderを利用して書き込み負荷やストレージ容量を分散してみます。設定mroongaデータノード前回と同じようにmroongaテーブルを作りますが、Spiderノードからアクセスするためにユーザー権限を登録します。今回はホストは特に絞りません。'memorycraft_pass';新しくデータベースをつくり、blogテーブルを作ります。utf8;SpiderノードSpiderのインストールは以前の記事のとおりです。同じように権限を登録し、データベースを作成します。memorycraft;Spiderテーブルを作成します。ここでは、2つのノードにKEYパーティションで分散してみます。);これで設定は完了です。次にデータを登録してみます。登録の仕方は前回と同様です。Intelligence)ツールを利用することが多いようです。エンジニアの観点からすると複雑なSQLを書くだけでいいかもしれませんが、経営者などの立場からするとBIツールなどを使って画面上でポチポチやって分析できることが重要なようです。今回はそのBIツールの中で、Redshiftにいち早く対応しているJaspersoftという製品を使ってRedshiftに接続してみたいと思います。("久しぶりにnagiosの話題です。アプリログ内容の監視の仕方には様々な要件がありますが、特定の間隔でログを監視し「error」などの文言があったらアラートする。あるケースで、以前の記事にも書きました。その逆に、例えば、多量のアクセスがあるにも関わらず頻繁に出力されるはずの重要なキーワードがでていない場合は、不測の事態がおこっているかも知れません。今回は特定の間隔でログを監視し、その中にキーワードが含まれていなかったらアラートするというものです。("S3のwebホスティングで、ログ出力の設定をしていた場合、ログファイルが大量に出力されます。ログの記録時間は標準時で出力されていてわかりづらいです。今回はEMRのHiveを利用して、日本時間の0時〜翌日の0時までのログを1ファイルにまとめてみたいと思います。("久しぶりのSpiderの話題です。今回はtpcc-mysqlというベンチマークツールを使ってSpiderのベンチマークをとってみました。mysqlにかぎらずDBのベンチマークツールの多くは、TPCという団体の定めたベンチマーク仕様に基いて実装されていて、トランザクションやアクセスなどのDB用途によっていくつかのベンチマークタイプに分かれていて、OLTP向けのTPC-Eや意思決定システム向けのTPC-HやTPC-DSなど色々あるようです。sec)うまく分散されているようです。これで沢山データがあっても分散されます。(mroongaでmysql全文検索)mysqlで全文検索といえばTritonnが有名でした。現在ではmysqlで全文検索をするときにmroongaというプロダクトが有望なようです。Tritonnとの違いは以下のサイトが詳しいです。#1」参加メモ簡単にいうと、Tritonn:Sennaという全文検索エンジンをMySQL用に組み込んだものです。MyISAMを前提に組み込まれていることもあり、更新が遅く、また更新時の検索が重くなるなど、ベストなパフォーマンスが得られにくかったようです。mroonga:groongaという全文検索エンジンをMySQL用にストレージエンジンにしたものです。MyISAMに依存しないため更新時の参照に影響を与えず、更新も速いようです。