SlideShare a Scribd company logo
1 of 52
Download to read offline
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
ユーザー
HTTP
Droonga 移行後の世界 Powered by Rabbit 2.1.2
ポイント
SPOFなし
管理ノードなし
すべてのエンジンは同列
管理情報はすべてのエンジンが持つ
ユーザーはHTTPでアクセス
Droonga 移行後の世界 Powered by Rabbit 2.1.2
HTTPサーバー図
クラスター
Droongaエンジンクラスター
Droongaクラスター
エンジン
Droonga
ユーザー
HTTP
サーバー
Droonga
HTTP
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
サーバー
DroongaHTTPを
話せるか?
プロキシ
できているか?
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
サーバー
DroongaHTTPを
話せるか?
プロキシ
できているか?
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エンジンクラスター
クラスター
生存レプリカ数は?
2つ以上
障害なし
サービスレベル低下なしで復旧可
or
1つだけ
サービスレベル低下するが復旧可
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
ユーザー
HTTP
Droonga 移行後の世界 Powered by Rabbit 2.1.2
HTTPサーバーの監視
クラスター
Droongaエンジンクラスター
Droongaクラスター
エンジン
Droonga
ユーザー
HTTP
サーバー
DroongaHTTPを
話せるか?
プロキシ
できているか?
Droonga 移行後の世界 Powered by Rabbit 2.1.2
エンジンクラスターの監視
Droongaクラスター
エンジン
Droonga
HTTP
サーバー
Droonga
ユーザー
HTTP
Droongaエンジンクラスター
クラスター
生存レプリカ数は?
2つ以上
障害なし
サービスレベル低下なしで復旧可
or
1つだけ
サービスレベル低下するが復旧可
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使用率
既存の統計情報可視化ツール
例:Munin
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
サーバー
Droonga
サーバー追加
ロードバランス
+
プロセス追加
リバースプロキシ
+
Droonga 移行後の世界 Powered by Rabbit 2.1.2
エンジンの負荷分散
クラスター
Droongaエンジンクラスター
Droongaクラスター
HTTP
サーバー
Droonga
ユーザー
HTTP
エンジン
Droonga
エンジンを分散
リクエスト受信
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のコアができることを解放
今後の開発
いろいろ
ユーザーの声を考慮して優先度決定

More Related Content

What's hot

Androidクラウドブック DynabookAZでLinuxを色々と遊んでみよう
Androidクラウドブック DynabookAZでLinuxを色々と遊んでみようAndroidクラウドブック DynabookAZでLinuxを色々と遊んでみよう
Androidクラウドブック DynabookAZでLinuxを色々と遊んでみようNetwalker lab kapper
 
Report for porting Tizen to Galaxy S2
Report  for porting Tizen to Galaxy S2Report  for porting Tizen to Galaxy S2
Report for porting Tizen to Galaxy S2Yuya Adachi
 
Android 4.x CyanobenModの 移植方法を調査してみた
Android 4.x CyanobenModの 移植方法を調査してみたAndroid 4.x CyanobenModの 移植方法を調査してみた
Android 4.x CyanobenModの 移植方法を調査してみたNetwalker lab kapper
 
NetwalkerとARM Linuxのカスタマイズ情報
NetwalkerとARM Linuxのカスタマイズ情報NetwalkerとARM Linuxのカスタマイズ情報
NetwalkerとARM Linuxのカスタマイズ情報Netwalker lab kapper
 
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成Izumi Tsutsui
 
最近のスマートウォッチについて
最近のスマートウォッチについて最近のスマートウォッチについて
最近のスマートウォッチについてNetwalker lab kapper
 
LUNA-88K, emulators, and me
LUNA-88K, emulators, and meLUNA-88K, emulators, and me
LUNA-88K, emulators, and meKenji Aoyama
 
Recently Mobile Linux Hacking after Kernel4.16RC 最近のKernel4.16RC以降の ガジェットLin...
Recently Mobile Linux Hacking after Kernel4.16RC  最近のKernel4.16RC以降の ガジェットLin...Recently Mobile Linux Hacking after Kernel4.16RC  最近のKernel4.16RC以降の ガジェットLin...
Recently Mobile Linux Hacking after Kernel4.16RC 最近のKernel4.16RC以降の ガジェットLin...Netwalker lab kapper
 
Beginner for Power Control on Linux はじめてのLinuxバッテリー省エネ設定
Beginner for Power Control on Linux  はじめてのLinuxバッテリー省エネ設定 Beginner for Power Control on Linux  はじめてのLinuxバッテリー省エネ設定
Beginner for Power Control on Linux はじめてのLinuxバッテリー省エネ設定 Netwalker lab kapper
 
Android Nexus7でLinuxを色々と遊んでみよう Hacking of Android Nexus7 by Linux
Android Nexus7でLinuxを色々と遊んでみよう Hacking of Android Nexus7 by LinuxAndroid Nexus7でLinuxを色々と遊んでみよう Hacking of Android Nexus7 by Linux
Android Nexus7でLinuxを色々と遊んでみよう Hacking of Android Nexus7 by LinuxNetwalker lab kapper
 
Windows10タブレットに各種Linuxディストリを入れて遊ぼう 2017年度東京Spring版
Windows10タブレットに各種Linuxディストリを入れて遊ぼう 2017年度東京Spring版Windows10タブレットに各種Linuxディストリを入れて遊ぼう 2017年度東京Spring版
Windows10タブレットに各種Linuxディストリを入れて遊ぼう 2017年度東京Spring版Netwalker lab kapper
 
Windows10タブレットにUbuntu16.04を色々入れてみた 2016年度版 Install Ubuntu16.04 on Windows10 T...
Windows10タブレットにUbuntu16.04を色々入れてみた 2016年度版 Install Ubuntu16.04 on Windows10 T...Windows10タブレットにUbuntu16.04を色々入れてみた 2016年度版 Install Ubuntu16.04 on Windows10 T...
Windows10タブレットにUbuntu16.04を色々入れてみた 2016年度版 Install Ubuntu16.04 on Windows10 T...Netwalker lab kapper
 

What's hot (12)

Androidクラウドブック DynabookAZでLinuxを色々と遊んでみよう
Androidクラウドブック DynabookAZでLinuxを色々と遊んでみようAndroidクラウドブック DynabookAZでLinuxを色々と遊んでみよう
Androidクラウドブック DynabookAZでLinuxを色々と遊んでみよう
 
Report for porting Tizen to Galaxy S2
Report  for porting Tizen to Galaxy S2Report  for porting Tizen to Galaxy S2
Report for porting Tizen to Galaxy S2
 
Android 4.x CyanobenModの 移植方法を調査してみた
Android 4.x CyanobenModの 移植方法を調査してみたAndroid 4.x CyanobenModの 移植方法を調査してみた
Android 4.x CyanobenModの 移植方法を調査してみた
 
NetwalkerとARM Linuxのカスタマイズ情報
NetwalkerとARM Linuxのカスタマイズ情報NetwalkerとARM Linuxのカスタマイズ情報
NetwalkerとARM Linuxのカスタマイズ情報
 
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
 
最近のスマートウォッチについて
最近のスマートウォッチについて最近のスマートウォッチについて
最近のスマートウォッチについて
 
LUNA-88K, emulators, and me
LUNA-88K, emulators, and meLUNA-88K, emulators, and me
LUNA-88K, emulators, and me
 
Recently Mobile Linux Hacking after Kernel4.16RC 最近のKernel4.16RC以降の ガジェットLin...
Recently Mobile Linux Hacking after Kernel4.16RC  最近のKernel4.16RC以降の ガジェットLin...Recently Mobile Linux Hacking after Kernel4.16RC  最近のKernel4.16RC以降の ガジェットLin...
Recently Mobile Linux Hacking after Kernel4.16RC 最近のKernel4.16RC以降の ガジェットLin...
 
Beginner for Power Control on Linux はじめてのLinuxバッテリー省エネ設定
Beginner for Power Control on Linux  はじめてのLinuxバッテリー省エネ設定 Beginner for Power Control on Linux  はじめてのLinuxバッテリー省エネ設定
Beginner for Power Control on Linux はじめてのLinuxバッテリー省エネ設定
 
Android Nexus7でLinuxを色々と遊んでみよう Hacking of Android Nexus7 by Linux
Android Nexus7でLinuxを色々と遊んでみよう Hacking of Android Nexus7 by LinuxAndroid Nexus7でLinuxを色々と遊んでみよう Hacking of Android Nexus7 by Linux
Android Nexus7でLinuxを色々と遊んでみよう Hacking of Android Nexus7 by Linux
 
Windows10タブレットに各種Linuxディストリを入れて遊ぼう 2017年度東京Spring版
Windows10タブレットに各種Linuxディストリを入れて遊ぼう 2017年度東京Spring版Windows10タブレットに各種Linuxディストリを入れて遊ぼう 2017年度東京Spring版
Windows10タブレットに各種Linuxディストリを入れて遊ぼう 2017年度東京Spring版
 
Windows10タブレットにUbuntu16.04を色々入れてみた 2016年度版 Install Ubuntu16.04 on Windows10 T...
Windows10タブレットにUbuntu16.04を色々入れてみた 2016年度版 Install Ubuntu16.04 on Windows10 T...Windows10タブレットにUbuntu16.04を色々入れてみた 2016年度版 Install Ubuntu16.04 on Windows10 T...
Windows10タブレットにUbuntu16.04を色々入れてみた 2016年度版 Install Ubuntu16.04 on Windows10 T...
 

Similar to Droonga移行後の世界

Droonga as-groonga-with-replication-droonga-as-groonga-with-replication
Droonga as-groonga-with-replication-droonga-as-groonga-with-replicationDroonga as-groonga-with-replication-droonga-as-groonga-with-replication
Droonga as-groonga-with-replication-droonga-as-groonga-with-replicationHiroshi Yuki
 
Groongaを支える取り組み
Groongaを支える取り組みGroongaを支える取り組み
Groongaを支える取り組みkenhys
 
Mroonga開発者が来たぞ!
Mroonga開発者が来たぞ!Mroonga開発者が来たぞ!
Mroonga開発者が来たぞ!Kouhei Sutou
 
Droongaのはじめかた
DroongaのはじめかたDroongaのはじめかた
DroongaのはじめかたKouhei Sutou
 
Trema の紹介とネットワーク仮想化への応用
Trema の紹介とネットワーク仮想化への応用Trema の紹介とネットワーク仮想化への応用
Trema の紹介とネットワーク仮想化への応用kazuyas
 
第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込み
第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込み第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込み
第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込みKouhei Sutou
 

Similar to Droonga移行後の世界 (9)

Droonga as-groonga-with-replication-droonga-as-groonga-with-replication
Droonga as-groonga-with-replication-droonga-as-groonga-with-replicationDroonga as-groonga-with-replication-droonga-as-groonga-with-replication
Droonga as-groonga-with-replication-droonga-as-groonga-with-replication
 
Groonga族2016
Groonga族2016Groonga族2016
Groonga族2016
 
Groongaを支える取り組み
Groongaを支える取り組みGroongaを支える取り組み
Groongaを支える取り組み
 
Mroonga開発者が来たぞ!
Mroonga開発者が来たぞ!Mroonga開発者が来たぞ!
Mroonga開発者が来たぞ!
 
Droongaのはじめかた
DroongaのはじめかたDroongaのはじめかた
Droongaのはじめかた
 
Trema の紹介とネットワーク仮想化への応用
Trema の紹介とネットワーク仮想化への応用Trema の紹介とネットワーク仮想化への応用
Trema の紹介とネットワーク仮想化への応用
 
HerokuでGroonga
HerokuでGroongaHerokuでGroonga
HerokuでGroonga
 
第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込み
第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込み第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込み
第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込み
 
Groonga族2013
Groonga族2013Groonga族2013
Groonga族2013
 

More from Kouhei Sutou

RubyKaigi 2022 - Fast data processing with Ruby and Apache Arrow
RubyKaigi 2022 - Fast data processing with Ruby and Apache ArrowRubyKaigi 2022 - Fast data processing with Ruby and Apache Arrow
RubyKaigi 2022 - Fast data processing with Ruby and Apache ArrowKouhei Sutou
 
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021Kouhei Sutou
 
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache ArrowRubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache ArrowKouhei Sutou
 
Rubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェアRubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェアKouhei Sutou
 
Apache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのかApache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのかKouhei Sutou
 
Apache Arrow 1.0 - A cross-language development platform for in-memory data
Apache Arrow 1.0 - A cross-language development platform for in-memory dataApache Arrow 1.0 - A cross-language development platform for in-memory data
Apache Arrow 1.0 - A cross-language development platform for in-memory dataKouhei Sutou
 
Redmine検索の未来像
Redmine検索の未来像Redmine検索の未来像
Redmine検索の未来像Kouhei Sutou
 
Apache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory dataApache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory dataKouhei Sutou
 
Better CSV processing with Ruby 2.6
Better CSV processing with Ruby 2.6Better CSV processing with Ruby 2.6
Better CSV processing with Ruby 2.6Kouhei Sutou
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームKouhei Sutou
 
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システムMySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システムKouhei Sutou
 
MySQL 8.0でMroonga
MySQL 8.0でMroongaMySQL 8.0でMroonga
MySQL 8.0でMroongaKouhei Sutou
 
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!Kouhei Sutou
 
MariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システムMariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システムKouhei Sutou
 
PGroonga 2 – Make PostgreSQL rich full text search system backend!
PGroonga 2 – Make PostgreSQL rich full text search system backend!PGroonga 2 – Make PostgreSQL rich full text search system backend!
PGroonga 2 – Make PostgreSQL rich full text search system backend!Kouhei Sutou
 

More from Kouhei Sutou (20)

RubyKaigi 2022 - Fast data processing with Ruby and Apache Arrow
RubyKaigi 2022 - Fast data processing with Ruby and Apache ArrowRubyKaigi 2022 - Fast data processing with Ruby and Apache Arrow
RubyKaigi 2022 - Fast data processing with Ruby and Apache Arrow
 
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
 
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache ArrowRubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
 
Rubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェアRubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェア
 
Apache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのかApache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのか
 
Apache Arrow 1.0 - A cross-language development platform for in-memory data
Apache Arrow 1.0 - A cross-language development platform for in-memory dataApache Arrow 1.0 - A cross-language development platform for in-memory data
Apache Arrow 1.0 - A cross-language development platform for in-memory data
 
Apache Arrow 2019
Apache Arrow 2019Apache Arrow 2019
Apache Arrow 2019
 
Redmine検索の未来像
Redmine検索の未来像Redmine検索の未来像
Redmine検索の未来像
 
Apache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory dataApache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory data
 
Better CSV processing with Ruby 2.6
Better CSV processing with Ruby 2.6Better CSV processing with Ruby 2.6
Better CSV processing with Ruby 2.6
 
Apache Arrow
Apache ArrowApache Arrow
Apache Arrow
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォーム
 
Apache Arrow
Apache ArrowApache Arrow
Apache Arrow
 
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システムMySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
 
MySQL 8.0でMroonga
MySQL 8.0でMroongaMySQL 8.0でMroonga
MySQL 8.0でMroonga
 
My way with Ruby
My way with RubyMy way with Ruby
My way with Ruby
 
Red Data Tools
Red Data ToolsRed Data Tools
Red Data Tools
 
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
 
MariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システムMariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システム
 
PGroonga 2 – Make PostgreSQL rich full text search system backend!
PGroonga 2 – Make PostgreSQL rich full text search system backend!PGroonga 2 – Make PostgreSQL rich full text search system backend!
PGroonga 2 – Make PostgreSQL rich full text search system backend!
 

Droonga移行後の世界

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