-Elasticsearchを独立させた。Solrと同じくLuceneベース *構成 [#k746709d] |INDEX|RDBのDatabaseに相当。この単位でSHADE数が決まるので、更新頻度が違うものはINDEXを分ける| |シャード|インデックスを何分割するか?作成時のみしか指定できず| |DOCUMENT|RDBの1レコード| |FIELD|列定義| |CLUSTER|NODEの集合| |NODE|ESの1プロセス| -更新は苦手なのでINDEX単位で日付を付与して、古くなったものはINDEX毎すてていく |RDB|Elasticsearch| |Databases|Indices| |Tables|Types| |Rows|Documents| |Fields|Columns| *AWS Elasticserach Service [#i8eac1c7] -基本的なプラグインはインストール済みだが、カスタムプラグインはインストールできない。 -バージョンが古い *Elastic Cloud(旧Found) [#xadb022d] -バージョン選択可能 -基本プラグイン導入済み -リージョンも選択可能 -高い! *運用 [#r3ccb3b1] **本番環境向け推奨マシンスペック [#m8867028] 実験用途で2GBのマシンに入れたが、結構な割合でOomKillerを発動させたり、落ちてたりする。 -メモリは64gbが理想だが、32−16GBでも大丈夫。8GB以下はインスタンスをたくさん用意しなければならぬ羽目に陥るので結局損。64GB以上でも問題があるので推奨範囲にとどめておくこと。 -CPUのスペックはマルチコアであれば特にハイスペックは要求しない。もしコアあたりの性能アップかコアを増やすかの選択に迫られた時はコアを増やす方向がベターである。 -ディスクはSSDベースにしておけばベター。NASはダメ! -ネットワークはデータセンター内部にとどめておき、仮に早い専用線があったとしても地理的に離れた場所に配置しない。 -HEAPは初期設定では実運用には適さない。マシンの実メモリの半分程度を最大としつつ、32GBは超えないように設定する。 **設定 [#d6110a6b] |JVM|1GB以上推奨。最小と最大を同じにしておく。| |File Descriptors|65535| |mmap|rpmであれば変更済みとなる| |swap|disable swap(swapoff -a)| **投入までの流れ [#f9fd33ac] +INDEX作成(curl -XPUT "${ES_URL}/${INDEX_NAME}") +検索で使う型を定義するmappingをJSONで指定(curl -XPUT "${ES_URL}/${INDEX_NAME}/_mapping/default" -d @${MAPPING_FILE}) **クラスターの可視化 [#u022dd5d] -elasticsearch-head インストール後以下のURLで参照可能。 http://133.18.30.106:9200/_plugin/head/ *プラグインインストール [#l778eff3] -インストール済みプラグイン確認 curl -XGET 'http://localhost:9200/_nodes?plugin=true&pretty' yumの場合はコマンドは以下の場所にある /usr/share/elasticsearch/bin plugin install プラグイン名 # kuromojiインストール /usr/share/elasticsearch/bin/plugin install analysis-kuromoji # watcherのためのライセンスプラグイン /usr/share/elasticsearch/bin/plugin install elasticsearch/license/latest # watcher /usr/share/elasticsearch/bin/plugin install elasticsearch/watcher/latest # bigdisk /usr/share/elasticsearch/bin/plugin install lukas-vlcek/bigdesk *アラート [#d37153b6] 無料ならelastalert(Yelp開発)。有料ならWatcher(サブスクリプション契約必要) https://github.com/Yelp/elastalert *情報 [#s19a4767] パフォーマンスチューニングの注意点 http://qiita.com/rjkuro/items/e79eec7ffb0511b7c678 **td-agentとの連携 [#t82cc0fa] -fluent-plugin-elasticsearchのインストール。1.0系だとfluent-gemのパスが違うので注意。 /opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-elasticsearch *Elasticsearch 2.2 [#ta64c66a] デフォルトはローカルからのみ接続可能なので、以下の変更を入れる。 -/etc/elasticsearch/elasticsearch.yml network.host: 0.0.0.0 *Kibana4.4 [#p135a5c4] 解凍して、host変えて、起動して5601ポートでアクセス。 *Beats [#xc90fcfb] エージェント型だが、マシンの情報を定期的に送ってくれる上にダッシュボードのテンプレートも併せて提供されている。 *トラブルシューティング [#f554ab0e] **fluentd + ElasticSearchServiceで時折「Cannot get new connection from pool」 [#a70427e7] -以下のパラメータを入れることにより再接続をするようになる。 reload_connections false *運用履歴 [#j608360a] **Kagoya 2G [#sfc328b3] 限界ぎりぎりまでメモリを使う。何もしてなくても自然に落ちるという・・ Apr 27 02:19:53 v9215 elasticsearch: # There is insufficient memory for the Java Runtime Environment to continue. Apr 28 09:11:22 v9215 elasticsearch: # There is insufficient memory for the Java Runtime Environment to continue. Apr 28 13:01:44 v9215 elasticsearch: # There is insufficient memory for the Java Runtime Environment to continue.