Droonga 移行後の世界 Powered by Rabbit 2.1.2
Droonga
移行後の世界
須藤功平 株式会社クリアコード
Droonga Meetup 1
2014/07/30
Droonga 移行後の世界 Powered by Rabbit 2.1.2
目指すこと
Droonga移行後の
システムを
想像できること
Droonga 移行後の世界 Powered by Rabbit 2.1.2
話題
運用方法(重点的に説明)
特有の機能(軽く説明)
今後の開発(軽く説明)
Droonga 移行後の世界 Powered by Rabbit 2.1.2
質疑応答時間アリ
気になったら…
メモ→最後に質問
その場で質問
気になることは聞いて欲しい
何が気になるか知りたい
Droonga 移行後の世界 Powered by Rabbit 2.1.2
話題1
運用方法
特有の機能
今後の開発
Droonga 移行後の世界 Powered by Rabbit 2.1.2
運用方法
死活監視
パフォーマンス監視
ノード構成の変更方法
Droonga 移行後の世界 Powered by Rabbit 2.1.2
死活監視
システムが正常動作しているか
継続的に確認
→システムの構成要素は?
→正常動作とは?
Droongaの場合
クラスターの構成要素は?
それぞれの提供サービ...
Droonga 移行後の世界 Powered by Rabbit 2.1.2
Droongaクラスター
クラスター
Droongaエンジンクラスター
Droongaクラスター
エンジン
Droonga
HTTP
サーバー
Droonga
ユーザ...
Droonga 移行後の世界 Powered by Rabbit 2.1.2
ポイント
SPOFなし
管理ノードなし
すべてのエンジンは同列
管理情報はすべてのエンジンが持つ
ユーザーはHTTPでアクセス
Droonga 移行後の世界 Powered by Rabbit 2.1.2
HTTPサーバー図
クラスター
Droongaエンジンクラスター
Droongaクラスター
エンジン
Droonga
ユーザー
HTTP
サーバー
Droonga
H...
Droonga 移行後の世界 Powered by Rabbit 2.1.2
HTTPサーバー
1番ユーザーに近い
ここで正常動作を確認
→Droongaクラスターは正常動作
n台構成推奨
冗長化・負荷分散
ロードバランス対象
Droonga 移行後の世界 Powered by Rabbit 2.1.2
HTTPサーバー:役割
HTTPのAPIを提供
実体はプロキシ
バックエンドは
Droongaエンジンクラスター
プロトコルを変換
データを持っていない
Droonga 移行後の世界 Powered by Rabbit 2.1.2
HTTPサーバー:監視図
クラスター
Droongaエンジンクラスター
Droongaクラスター
エンジン
Droonga
ユーザー
HTTP
サーバー
Droong...
Droonga 移行後の世界 Powered by Rabbit 2.1.2
HTTPサーバー:監視項目
HTTPを話せるか?
基本的な監視
"/"をGETして200か監視
プロキシできているか?
詳細な監視
検索してヒットするか監視
Droonga 移行後の世界 Powered by Rabbit 2.1.2
HTTPサーバー:監視効果
HTTPを話せるか?
サービスは生きている
役割を果たしているとは限らない
プロキシできているか?
役割を果たしている
実現方法はデータに...
Droonga 移行後の世界 Powered by Rabbit 2.1.2
HTTPサーバー:監視効果図
クラスター
Droongaエンジンクラスター
Droongaクラスター
エンジン
Droonga
ユーザー
HTTP
サーバー
Droo...
Droonga 移行後の世界 Powered by Rabbit 2.1.2
エンジンクラスター図
Droongaクラスター
エンジン
Droonga
HTTP
サーバー
Droonga
ユーザー
HTTP
Droongaエンジンクラスター
ク...
Droonga 移行後の世界 Powered by Rabbit 2.1.2
エンジンクラスター
エンジンが連携して動作
クラスター内にnレプリカ存在
障害度合いとサービスレベル
低: 100%サービス利用可
中: 構成変更中の書き込み不可
高...
Droonga 移行後の世界 Powered by Rabbit 2.1.2
監視項目
2つ以上のレプリカが生存?
障害度合い:低(100%サービス利用可)
構成を考慮した死活チェック
1つ以上のレプリカが生存?
障害度合い:中(構成変更中の書...
Droonga 移行後の世界 Powered by Rabbit 2.1.2
監視効果
2つ以上のレプリカが生存?
障害なし or
サービスレベル低下なしで復旧可能
1つ以上のレプリカが生存?
サービスは提供できている
サービスレベル低下するが...
Droonga 移行後の世界 Powered by Rabbit 2.1.2
監視効果図
Droongaクラスター
エンジン
Droonga
HTTP
サーバー
Droonga
ユーザー
HTTP
Droongaエンジンクラスター
クラスター
...
Droonga 移行後の世界 Powered by Rabbit 2.1.2
エンジン図
クラスター
Droongaエンジンクラスター
Droongaクラスター
HTTP
サーバー
Droonga
ユーザー
HTTP
エンジン
Droonga
Droonga 移行後の世界 Powered by Rabbit 2.1.2
エンジン
データを持ち、処理する
1エンジンnワーカー
マルチプロセス
自律的に構成変更を検知
管理ノードなし
あるエンジンがダウンしたら
自分が持つクラスター情報を...
Droonga 移行後の世界 Powered by Rabbit 2.1.2
監視項目
監視しなくてよい
エンジンクラスター監視で十分
Droonga 移行後の世界 Powered by Rabbit 2.1.2
死活監視のおさらい
目的
システムの正常動作を確認
システムの構成要素
HTTPサーバー(監視対象)
エンジンクラスター(監視対象)
エンジン
Droonga 移行後の世界 Powered by Rabbit 2.1.2
Droongaクラスター
クラスター
Droongaエンジンクラスター
Droongaクラスター
エンジン
Droonga
HTTP
サーバー
Droonga
ユーザ...
Droonga 移行後の世界 Powered by Rabbit 2.1.2
HTTPサーバーの監視
クラスター
Droongaエンジンクラスター
Droongaクラスター
エンジン
Droonga
ユーザー
HTTP
サーバー
Droonga...
Droonga 移行後の世界 Powered by Rabbit 2.1.2
エンジンクラスターの監視
Droongaクラスター
エンジン
Droonga
HTTP
サーバー
Droonga
ユーザー
HTTP
Droongaエンジンクラスター...
Droonga 移行後の世界 Powered by Rabbit 2.1.2
死活監視
HTTPサーバー
HTTPの機能をチェック
プロキシの機能をチェック
エンジンクラスター
生存レプリカ数をチェック
エンジン
死活監視しなくてよい
Droonga 移行後の世界 Powered by Rabbit 2.1.2
運用方法:死活監視
死活監視
パフォーマンス監視
クラスター構成の変更方法
Droonga 移行後の世界 Powered by Rabbit 2.1.2
パフォーマンス監視
死活監視
パフォーマンス監視
クラスター構成の変更方法
Droonga 移行後の世界 Powered by Rabbit 2.1.2
パフォーマンス監視
監視項目
監視方法
Droonga 移行後の世界 Powered by Rabbit 2.1.2
監視項目
検索時間
目的:スロークエリを発見
キャッシュヒット率
目的:検索処理の削減
CPU使用率
目的:ボトルネックの解消
Droonga 移行後の世界 Powered by Rabbit 2.1.2
監視方法
検索時間
アプリケーション側で計測
キャッシュヒット率
"/statistics/cache"をGET
CPU使用率
既存の統計情報可視化ツール
例:Mun...
Droonga 移行後の世界 Powered by Rabbit 2.1.2
検索時間:計測場所と粒度
アプリケーション
全体の時間
HTTPサーバー
Droonga側の処理全体の時間
(X-Response-Time HTTPヘッダー)
エン...
Droonga 移行後の世界 Powered by Rabbit 2.1.2
キャッシュヒット率
http://.../statistics/cache
{
"nGets": 8,
"nHits": 6,
"hitRatio": 0.75
}
Droonga 移行後の世界 Powered by Rabbit 2.1.2
CPU使用率
ボトルネックはCPUになるはず
HTTPサーバーの場合
数を増やして負荷分散
エンジンの場合
CPUのコア数までワーカーを増やす
リクエスト受信エンジン...
Droonga 移行後の世界 Powered by Rabbit 2.1.2
HTTPサーバーの負荷分散
クラスター
Droongaエンジンクラスター
Droongaクラスター
エンジン
Droonga
ユーザー
HTTP
サーバー
Droon...
Droonga 移行後の世界 Powered by Rabbit 2.1.2
エンジンの負荷分散
クラスター
Droongaエンジンクラスター
Droongaクラスター
HTTP
サーバー
Droonga
ユーザー
HTTP
エンジン
Droo...
Droonga 移行後の世界 Powered by Rabbit 2.1.2
おさらい
目的
高速化
ボトルネックの解消
監視項目
検索時間(ボトルネックの解消)
キャッシュヒット率(高速化)
CPU使用率(ボトルネックの解消)
Droonga 移行後の世界 Powered by Rabbit 2.1.2
構成変更
死活監視
パフォーマンス監視
クラスター構成の変更方法
Droonga 移行後の世界 Powered by Rabbit 2.1.2
Droongaクラスターの構成図
クラスター
レプリカ
(シャード)
スライス
Droonga 移行後の世界 Powered by Rabbit 2.1.2
Droongaクラスターの構成
シャーディング構成
レプリカ毎に設定可
シャーディング構成変更
運用しながら変更可
レプリカの増減
運用しながら変更可
Droonga 移行後の世界 Powered by Rabbit 2.1.2
構成変更の基本作戦図
クラスター
レプリカ
(シャード)
スライス
1 2
新レプリカ
データ
コピー
3
4
Droonga 移行後の世界 Powered by Rabbit 2.1.2
構成変更の基本作戦
レプリカを1つ外す
↑からデータをダンプ
↑を新しいレプリカに投入
外したレプリカを戻す
新しいレプリカを追加
Droonga 移行後の世界 Powered by Rabbit 2.1.2
運用方法のおさらい
死活監視
構成要素毎に紹介
パフォーマンス監視
項目と目的を紹介
クラスター構成の変更方法
特徴と流れを紹介
Droonga 移行後の世界 Powered by Rabbit 2.1.2
特有の機能
運用方法
特有の機能
今後の開発
Droonga 移行後の世界 Powered by Rabbit 2.1.2
特有の機能
多段ファセット
Solrでいうピボットファセット
Elasticseachでいうaggregations
ファセット内のレコードを取得
利用例:スレッドで...
Droonga 移行後の世界 Powered by Rabbit 2.1.2
今後の開発
運用方法
特有の機能
今後の開発
Droonga 移行後の世界 Powered by Rabbit 2.1.2
今後の開発1
Groongaとの互換性強化
未実装の機能を実装
よく使われている機能から順に
検索処理の高速化
通信量を減らす
ルーティング周りの処理の軽量化
Droonga 移行後の世界 Powered by Rabbit 2.1.2
今後の開発2
導入の簡易化
パッケージの提供
Chefとの連携
運用支援機能の開発
ダッシュボード
リクエスト受信エンジンを
自動で負荷分散
Droonga 移行後の世界 Powered by Rabbit 2.1.2
まとめ
運用方法
監視・構成変更方法
特有の機能
Groongaのコアができることを解放
今後の開発
いろいろ
ユーザーの声を考慮して優先度決定
Upcoming SlideShare
Loading in …5
×

Droonga移行後の世界

514
-1

Published on

GroongaからDroongaに移行した後、どんな世界が待っているかを説明します。例えば、どのように運用すればよいか、どのようなケースが得意か、今後どのような機能を強化していくなどです。

0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
514
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
2
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Droonga移行後の世界

  1. 1. Droonga 移行後の世界 Powered by Rabbit 2.1.2 Droonga 移行後の世界 須藤功平 株式会社クリアコード Droonga Meetup 1 2014/07/30
  2. 2. Droonga 移行後の世界 Powered by Rabbit 2.1.2 目指すこと Droonga移行後の システムを 想像できること
  3. 3. Droonga 移行後の世界 Powered by Rabbit 2.1.2 話題 運用方法(重点的に説明) 特有の機能(軽く説明) 今後の開発(軽く説明)
  4. 4. Droonga 移行後の世界 Powered by Rabbit 2.1.2 質疑応答時間アリ 気になったら… メモ→最後に質問 その場で質問 気になることは聞いて欲しい 何が気になるか知りたい
  5. 5. Droonga 移行後の世界 Powered by Rabbit 2.1.2 話題1 運用方法 特有の機能 今後の開発
  6. 6. Droonga 移行後の世界 Powered by Rabbit 2.1.2 運用方法 死活監視 パフォーマンス監視 ノード構成の変更方法
  7. 7. Droonga 移行後の世界 Powered by Rabbit 2.1.2 死活監視 システムが正常動作しているか 継続的に確認 →システムの構成要素は? →正常動作とは? Droongaの場合 クラスターの構成要素は? それぞれの提供サービスは?
  8. 8. Droonga 移行後の世界 Powered by Rabbit 2.1.2 Droongaクラスター クラスター Droongaエンジンクラスター Droongaクラスター エンジン Droonga HTTP サーバー Droonga ユーザー HTTP
  9. 9. Droonga 移行後の世界 Powered by Rabbit 2.1.2 ポイント SPOFなし 管理ノードなし すべてのエンジンは同列 管理情報はすべてのエンジンが持つ ユーザーはHTTPでアクセス
  10. 10. Droonga 移行後の世界 Powered by Rabbit 2.1.2 HTTPサーバー図 クラスター Droongaエンジンクラスター Droongaクラスター エンジン Droonga ユーザー HTTP サーバー Droonga HTTP
  11. 11. Droonga 移行後の世界 Powered by Rabbit 2.1.2 HTTPサーバー 1番ユーザーに近い ここで正常動作を確認 →Droongaクラスターは正常動作 n台構成推奨 冗長化・負荷分散 ロードバランス対象
  12. 12. Droonga 移行後の世界 Powered by Rabbit 2.1.2 HTTPサーバー:役割 HTTPのAPIを提供 実体はプロキシ バックエンドは Droongaエンジンクラスター プロトコルを変換 データを持っていない
  13. 13. Droonga 移行後の世界 Powered by Rabbit 2.1.2 HTTPサーバー:監視図 クラスター Droongaエンジンクラスター Droongaクラスター エンジン Droonga ユーザー HTTP サーバー DroongaHTTPを 話せるか? プロキシ できているか?
  14. 14. Droonga 移行後の世界 Powered by Rabbit 2.1.2 HTTPサーバー:監視項目 HTTPを話せるか? 基本的な監視 "/"をGETして200か監視 プロキシできているか? 詳細な監視 検索してヒットするか監視
  15. 15. Droonga 移行後の世界 Powered by Rabbit 2.1.2 HTTPサーバー:監視効果 HTTPを話せるか? サービスは生きている 役割を果たしているとは限らない プロキシできているか? 役割を果たしている 実現方法はデータに依存
  16. 16. Droonga 移行後の世界 Powered by Rabbit 2.1.2 HTTPサーバー:監視効果図 クラスター Droongaエンジンクラスター Droongaクラスター エンジン Droonga ユーザー HTTP サーバー DroongaHTTPを 話せるか? プロキシ できているか?
  17. 17. Droonga 移行後の世界 Powered by Rabbit 2.1.2 エンジンクラスター図 Droongaクラスター エンジン Droonga HTTP サーバー Droonga ユーザー HTTP Droongaエンジンクラスター クラスター
  18. 18. Droonga 移行後の世界 Powered by Rabbit 2.1.2 エンジンクラスター エンジンが連携して動作 クラスター内にnレプリカ存在 障害度合いとサービスレベル 低: 100%サービス利用可 中: 構成変更中の書き込み不可 高: サービス不可(参照も不可)
  19. 19. Droonga 移行後の世界 Powered by Rabbit 2.1.2 監視項目 2つ以上のレプリカが生存? 障害度合い:低(100%サービス利用可) 構成を考慮した死活チェック 1つ以上のレプリカが生存? 障害度合い:中(構成変更中の書き込み不 可) 検索してヒットするか監視
  20. 20. Droonga 移行後の世界 Powered by Rabbit 2.1.2 監視効果 2つ以上のレプリカが生存? 障害なし or サービスレベル低下なしで復旧可能 1つ以上のレプリカが生存? サービスは提供できている サービスレベル低下するが復旧可能
  21. 21. Droonga 移行後の世界 Powered by Rabbit 2.1.2 監視効果図 Droongaクラスター エンジン Droonga HTTP サーバー Droonga ユーザー HTTP Droongaエンジンクラスター クラスター 生存レプリカ数は? 2つ以上 障害なし サービスレベル低下なしで復旧可 or 1つだけ サービスレベル低下するが復旧可
  22. 22. Droonga 移行後の世界 Powered by Rabbit 2.1.2 エンジン図 クラスター Droongaエンジンクラスター Droongaクラスター HTTP サーバー Droonga ユーザー HTTP エンジン Droonga
  23. 23. Droonga 移行後の世界 Powered by Rabbit 2.1.2 エンジン データを持ち、処理する 1エンジンnワーカー マルチプロセス 自律的に構成変更を検知 管理ノードなし あるエンジンがダウンしたら 自分が持つクラスター情報を更新
  24. 24. Droonga 移行後の世界 Powered by Rabbit 2.1.2 監視項目 監視しなくてよい エンジンクラスター監視で十分
  25. 25. Droonga 移行後の世界 Powered by Rabbit 2.1.2 死活監視のおさらい 目的 システムの正常動作を確認 システムの構成要素 HTTPサーバー(監視対象) エンジンクラスター(監視対象) エンジン
  26. 26. Droonga 移行後の世界 Powered by Rabbit 2.1.2 Droongaクラスター クラスター Droongaエンジンクラスター Droongaクラスター エンジン Droonga HTTP サーバー Droonga ユーザー HTTP
  27. 27. Droonga 移行後の世界 Powered by Rabbit 2.1.2 HTTPサーバーの監視 クラスター Droongaエンジンクラスター Droongaクラスター エンジン Droonga ユーザー HTTP サーバー DroongaHTTPを 話せるか? プロキシ できているか?
  28. 28. Droonga 移行後の世界 Powered by Rabbit 2.1.2 エンジンクラスターの監視 Droongaクラスター エンジン Droonga HTTP サーバー Droonga ユーザー HTTP Droongaエンジンクラスター クラスター 生存レプリカ数は? 2つ以上 障害なし サービスレベル低下なしで復旧可 or 1つだけ サービスレベル低下するが復旧可
  29. 29. Droonga 移行後の世界 Powered by Rabbit 2.1.2 死活監視 HTTPサーバー HTTPの機能をチェック プロキシの機能をチェック エンジンクラスター 生存レプリカ数をチェック エンジン 死活監視しなくてよい
  30. 30. Droonga 移行後の世界 Powered by Rabbit 2.1.2 運用方法:死活監視 死活監視 パフォーマンス監視 クラスター構成の変更方法
  31. 31. Droonga 移行後の世界 Powered by Rabbit 2.1.2 パフォーマンス監視 死活監視 パフォーマンス監視 クラスター構成の変更方法
  32. 32. Droonga 移行後の世界 Powered by Rabbit 2.1.2 パフォーマンス監視 監視項目 監視方法
  33. 33. Droonga 移行後の世界 Powered by Rabbit 2.1.2 監視項目 検索時間 目的:スロークエリを発見 キャッシュヒット率 目的:検索処理の削減 CPU使用率 目的:ボトルネックの解消
  34. 34. Droonga 移行後の世界 Powered by Rabbit 2.1.2 監視方法 検索時間 アプリケーション側で計測 キャッシュヒット率 "/statistics/cache"をGET CPU使用率 既存の統計情報可視化ツール 例:Munin
  35. 35. Droonga 移行後の世界 Powered by Rabbit 2.1.2 検索時間:計測場所と粒度 アプリケーション 全体の時間 HTTPサーバー Droonga側の処理全体の時間 (X-Response-Time HTTPヘッダー) エンジン 各処理の時間 (クエリーログ:未実装)
  36. 36. Droonga 移行後の世界 Powered by Rabbit 2.1.2 キャッシュヒット率 http://.../statistics/cache { "nGets": 8, "nHits": 6, "hitRatio": 0.75 }
  37. 37. Droonga 移行後の世界 Powered by Rabbit 2.1.2 CPU使用率 ボトルネックはCPUになるはず HTTPサーバーの場合 数を増やして負荷分散 エンジンの場合 CPUのコア数までワーカーを増やす リクエスト受信エンジンを分散
  38. 38. Droonga 移行後の世界 Powered by Rabbit 2.1.2 HTTPサーバーの負荷分散 クラスター Droongaエンジンクラスター Droongaクラスター エンジン Droonga ユーザー HTTP サーバー Droonga サーバー追加 ロードバランス + プロセス追加 リバースプロキシ +
  39. 39. Droonga 移行後の世界 Powered by Rabbit 2.1.2 エンジンの負荷分散 クラスター Droongaエンジンクラスター Droongaクラスター HTTP サーバー Droonga ユーザー HTTP エンジン Droonga エンジンを分散 リクエスト受信
  40. 40. Droonga 移行後の世界 Powered by Rabbit 2.1.2 おさらい 目的 高速化 ボトルネックの解消 監視項目 検索時間(ボトルネックの解消) キャッシュヒット率(高速化) CPU使用率(ボトルネックの解消)
  41. 41. Droonga 移行後の世界 Powered by Rabbit 2.1.2 構成変更 死活監視 パフォーマンス監視 クラスター構成の変更方法
  42. 42. Droonga 移行後の世界 Powered by Rabbit 2.1.2 Droongaクラスターの構成図 クラスター レプリカ (シャード) スライス
  43. 43. Droonga 移行後の世界 Powered by Rabbit 2.1.2 Droongaクラスターの構成 シャーディング構成 レプリカ毎に設定可 シャーディング構成変更 運用しながら変更可 レプリカの増減 運用しながら変更可
  44. 44. Droonga 移行後の世界 Powered by Rabbit 2.1.2 構成変更の基本作戦図 クラスター レプリカ (シャード) スライス 1 2 新レプリカ データ コピー 3 4
  45. 45. Droonga 移行後の世界 Powered by Rabbit 2.1.2 構成変更の基本作戦 レプリカを1つ外す ↑からデータをダンプ ↑を新しいレプリカに投入 外したレプリカを戻す 新しいレプリカを追加
  46. 46. Droonga 移行後の世界 Powered by Rabbit 2.1.2 運用方法のおさらい 死活監視 構成要素毎に紹介 パフォーマンス監視 項目と目的を紹介 クラスター構成の変更方法 特徴と流れを紹介
  47. 47. Droonga 移行後の世界 Powered by Rabbit 2.1.2 特有の機能 運用方法 特有の機能 今後の開発
  48. 48. Droonga 移行後の世界 Powered by Rabbit 2.1.2 特有の機能 多段ファセット Solrでいうピボットファセット Elasticseachでいうaggregations ファセット内のレコードを取得 利用例:スレッドでグループ化し、 各スレッド内のコメントを数件表示
  49. 49. Droonga 移行後の世界 Powered by Rabbit 2.1.2 今後の開発 運用方法 特有の機能 今後の開発
  50. 50. Droonga 移行後の世界 Powered by Rabbit 2.1.2 今後の開発1 Groongaとの互換性強化 未実装の機能を実装 よく使われている機能から順に 検索処理の高速化 通信量を減らす ルーティング周りの処理の軽量化
  51. 51. Droonga 移行後の世界 Powered by Rabbit 2.1.2 今後の開発2 導入の簡易化 パッケージの提供 Chefとの連携 運用支援機能の開発 ダッシュボード リクエスト受信エンジンを 自動で負荷分散
  52. 52. Droonga 移行後の世界 Powered by Rabbit 2.1.2 まとめ 運用方法 監視・構成変更方法 特有の機能 Groongaのコアができることを解放 今後の開発 いろいろ ユーザーの声を考慮して優先度決定
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×