Skip to main content
Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Uploaded by
Satoyuki Tsukano
PPTX, PDF
40,156 views
はじめてのElasticsearchクラスタ
The First Elasticsearch Cluster 2018-07-25 JJUG ナイトセミナー「Elasticsearch特集」
Engineering
◦
Read more
More Related Content
PDF
これからSpringを使う開発者が知っておくべきこと
by
土岐 孝平
32 slides
27.3K views
PDF
実践 NestJS
by
Ayumi Goto
189 slides
1.8K views
PPTX
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
by
NTT DATA Technology & Innovation
53 slides
11.7K views
PPTX
システム間連携を担うSpring Integrationのエンタープライズ開発での活用
by
apkiban
61 slides
6.5K views
PPTX
初心者向けMongoDBのキホン!
by
Tetsutaro Watanabe
21 slides
53.4K views
PPTX
MongoDBが遅いときの切り分け方法
by
Tetsutaro Watanabe
46 slides
37.2K views
PDF
Serverless時代のJavaについて
by
Amazon Web Services Japan
90 slides
13.6K views
PDF
The Twelve-Factor Appで考えるAWSのサービス開発
by
Amazon Web Services Japan
68 slides
25.4K views
これからSpringを使う開発者が知っておくべきこと
by
土岐 孝平
32 slides
27.3K views
実践 NestJS
by
Ayumi Goto
189 slides
1.8K views
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
by
NTT DATA Technology & Innovation
53 slides
11.7K views
システム間連携を担うSpring Integrationのエンタープライズ開発での活用
by
apkiban
61 slides
6.5K views
初心者向けMongoDBのキホン!
by
Tetsutaro Watanabe
21 slides
53.4K views
MongoDBが遅いときの切り分け方法
by
Tetsutaro Watanabe
46 slides
37.2K views
Serverless時代のJavaについて
by
Amazon Web Services Japan
90 slides
13.6K views
The Twelve-Factor Appで考えるAWSのサービス開発
by
Amazon Web Services Japan
68 slides
25.4K views
What's hot
PDF
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
by
NTT DATA Technology & Innovation
62 slides
2K views
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
by
Takuto Wada
45 slides
174.7K views
PPTX
最近のやられアプリを試してみた
by
zaki4649
16 slides
26.4K views
PDF
AWSのログ管理ベストプラクティス
by
Akihiro Kuwano
57 slides
79.8K views
PDF
TLS, HTTP/2演習
by
shigeki_ohtsu
129 slides
14.5K views
PPTX
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
by
NTT DATA Technology & Innovation
35 slides
14.3K views
PPTX
ぱぱっと理解するSpring Cloudの基本
by
kazuki kumagai
94 slides
21K views
PDF
怖くないSpring Bootのオートコンフィグレーション
by
土岐 孝平
39 slides
5.3K views
PPTX
Redisの特徴と活用方法について
by
Yuji Otani
65 slides
109.5K views
PDF
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
by
Yahoo!デベロッパーネットワーク
49 slides
25.4K views
PDF
Tackling Complexity
by
Yoshitaka Kawashima
16 slides
3.4K views
PDF
ストリーム処理を支えるキューイングシステムの選び方
by
Yoshiyasu SAEKI
42 slides
41.4K views
PPTX
KeycloakでAPI認可に入門する
by
Hitachi, Ltd. OSS Solution Center.
49 slides
5.1K views
PDF
Dockerからcontainerdへの移行
by
Kohei Tokunaga
36 slides
19.4K views
PDF
Elasticsearchを使うときの注意点 公開用スライド
by
崇介 藤井
22 slides
30.8K views
PDF
ソーシャルゲームのためのデータベース設計
by
Yoshinori Matsunobu
33 slides
129.9K views
PDF
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
by
NTT DATA OSS Professional Services
43 slides
27.8K views
PDF
テスト文字列に「うんこ」と入れるな
by
Kentaro Matsui
16 slides
287.8K views
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021
by
Hiroshi Tokumaru
107 slides
112.2K views
PDF
Concurrent Mark-Sweep Garbage Collection #jjug_ccc
by
Yuji Kubota
93 slides
119.3K views
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
by
NTT DATA Technology & Innovation
62 slides
2K views
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
by
Takuto Wada
45 slides
174.7K views
最近のやられアプリを試してみた
by
zaki4649
16 slides
26.4K views
AWSのログ管理ベストプラクティス
by
Akihiro Kuwano
57 slides
79.8K views
TLS, HTTP/2演習
by
shigeki_ohtsu
129 slides
14.5K views
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
by
NTT DATA Technology & Innovation
35 slides
14.3K views
ぱぱっと理解するSpring Cloudの基本
by
kazuki kumagai
94 slides
21K views
怖くないSpring Bootのオートコンフィグレーション
by
土岐 孝平
39 slides
5.3K views
Redisの特徴と活用方法について
by
Yuji Otani
65 slides
109.5K views
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
by
Yahoo!デベロッパーネットワーク
49 slides
25.4K views
Tackling Complexity
by
Yoshitaka Kawashima
16 slides
3.4K views
ストリーム処理を支えるキューイングシステムの選び方
by
Yoshiyasu SAEKI
42 slides
41.4K views
KeycloakでAPI認可に入門する
by
Hitachi, Ltd. OSS Solution Center.
49 slides
5.1K views
Dockerからcontainerdへの移行
by
Kohei Tokunaga
36 slides
19.4K views
Elasticsearchを使うときの注意点 公開用スライド
by
崇介 藤井
22 slides
30.8K views
ソーシャルゲームのためのデータベース設計
by
Yoshinori Matsunobu
33 slides
129.9K views
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
by
NTT DATA OSS Professional Services
43 slides
27.8K views
テスト文字列に「うんこ」と入れるな
by
Kentaro Matsui
16 slides
287.8K views
SPAセキュリティ入門~PHP Conference Japan 2021
by
Hiroshi Tokumaru
107 slides
112.2K views
Concurrent Mark-Sweep Garbage Collection #jjug_ccc
by
Yuji Kubota
93 slides
119.3K views
Similar to はじめてのElasticsearchクラスタ
PPTX
Elasticsearch as a Distributed System
by
Satoyuki Tsukano
53 slides
6.8K views
PDF
Elasticsearchの基本動作まとめ
by
朋哉 池田
29 slides
358 views
PDF
Uniform indexing load with cluster reroute api
by
Hiroshi Yoshioka
29 slides
312 views
PDF
ElasticSearch勉強会 第6回
by
Naoyuki Yamada
24 slides
21.2K views
PDF
Integrating elasticsearch with asp dot net core
by
Shotaro Suzuki
58 slides
588 views
PDF
Elastic circle ci-co-webinar-20210127
by
Shotaro Suzuki
85 slides
470 views
PDF
Renewed using elasticsearchonaspnet-core5
by
Shotaro Suzuki
61 slides
578 views
PDF
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)
by
株式会社MonotaRO Tech Team
36 slides
1.1K views
PDF
20130927 adstir emr
by
AdStir
32 slides
1.5K views
PDF
Elastic 7.13-new-features-20210624
by
Shotaro Suzuki
105 slides
623 views
PDF
Elasticsearch入門 pyfes 201207
by
Jun Ohtani
41 slides
22K views
PDF
Building asp.net core blazor and elasticsearch elasticsearch using visual stu...
by
Shotaro Suzuki
63 slides
402 views
PPTX
Searchable Snapshot でコスト削減
by
shinhiguchi
16 slides
2.6K views
PDF
AWS Black Belt Online Seminar 2016 Amazon ElastiCache
by
Amazon Web Services Japan
68 slides
26.5K views
PDF
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 Fall
by
Shinpei Ohtani
47 slides
6.2K views
PDF
Elastic ML Introduction
by
Hiroshi Yoshioka
35 slides
1.2K views
PDF
Learn, build, and scale with elastic - realizing great programming experience...
by
Shotaro Suzuki
99 slides
2.9K views
PDF
Elasticsearch at CrowdWorks
by
佑介 九岡
37 slides
12.2K views
PDF
ElasticSearch+Kibanaでログデータの検索と視覚化を実現するテクニックと運用ノウハウ
by
Kentaro Yoshida
70 slides
65.7K views
PDF
Amazon ElastiCache - AWSマイスターシリーズ
by
SORACOM, INC
57 slides
7.8K views
Elasticsearch as a Distributed System
by
Satoyuki Tsukano
53 slides
6.8K views
Elasticsearchの基本動作まとめ
by
朋哉 池田
29 slides
358 views
Uniform indexing load with cluster reroute api
by
Hiroshi Yoshioka
29 slides
312 views
ElasticSearch勉強会 第6回
by
Naoyuki Yamada
24 slides
21.2K views
Integrating elasticsearch with asp dot net core
by
Shotaro Suzuki
58 slides
588 views
Elastic circle ci-co-webinar-20210127
by
Shotaro Suzuki
85 slides
470 views
Renewed using elasticsearchonaspnet-core5
by
Shotaro Suzuki
61 slides
578 views
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)
by
株式会社MonotaRO Tech Team
36 slides
1.1K views
20130927 adstir emr
by
AdStir
32 slides
1.5K views
Elastic 7.13-new-features-20210624
by
Shotaro Suzuki
105 slides
623 views
Elasticsearch入門 pyfes 201207
by
Jun Ohtani
41 slides
22K views
Building asp.net core blazor and elasticsearch elasticsearch using visual stu...
by
Shotaro Suzuki
63 slides
402 views
Searchable Snapshot でコスト削減
by
shinhiguchi
16 slides
2.6K views
AWS Black Belt Online Seminar 2016 Amazon ElastiCache
by
Amazon Web Services Japan
68 slides
26.5K views
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 Fall
by
Shinpei Ohtani
47 slides
6.2K views
Elastic ML Introduction
by
Hiroshi Yoshioka
35 slides
1.2K views
Learn, build, and scale with elastic - realizing great programming experience...
by
Shotaro Suzuki
99 slides
2.9K views
Elasticsearch at CrowdWorks
by
佑介 九岡
37 slides
12.2K views
ElasticSearch+Kibanaでログデータの検索と視覚化を実現するテクニックと運用ノウハウ
by
Kentaro Yoshida
70 slides
65.7K views
Amazon ElastiCache - AWSマイスターシリーズ
by
SORACOM, INC
57 slides
7.8K views
More from Satoyuki Tsukano
PPTX
あなたのスキルを量子技術に活かそう!
by
Satoyuki Tsukano
34 slides
561 views
PPTX
オープンソースの量子コンピュータ・クラウド基盤開発
by
Satoyuki Tsukano
16 slides
725 views
PDF
Quantum Computer: Now and Future
by
Satoyuki Tsukano
48 slides
1.7K views
PPTX
Quantum computer applications in serverless architecture and challenges
by
Satoyuki Tsukano
34 slides
1.6K views
PPTX
How to Contributet o Quantum Computer
by
Satoyuki Tsukano
16 slides
953 views
PPTX
a story about an application that uses a real quantum computer
by
Satoyuki Tsukano
17 slides
1.2K views
PDF
Introduction to Quantum Programming Studio
by
Satoyuki Tsukano
20 slides
1.1K views
PPTX
量子コンピュータのプログラミング・コンテスト体験記
by
Satoyuki Tsukano
14 slides
2.2K views
PPTX
数学好きから見た量子コンピュータ~57を因数分解した話~
by
Satoyuki Tsukano
17 slides
7.1K views
PPTX
Packetbeatの基礎から、IoTデバイス異常検知への応用まで
by
Satoyuki Tsukano
39 slides
5.5K views
あなたのスキルを量子技術に活かそう!
by
Satoyuki Tsukano
34 slides
561 views
オープンソースの量子コンピュータ・クラウド基盤開発
by
Satoyuki Tsukano
16 slides
725 views
Quantum Computer: Now and Future
by
Satoyuki Tsukano
48 slides
1.7K views
Quantum computer applications in serverless architecture and challenges
by
Satoyuki Tsukano
34 slides
1.6K views
How to Contributet o Quantum Computer
by
Satoyuki Tsukano
16 slides
953 views
a story about an application that uses a real quantum computer
by
Satoyuki Tsukano
17 slides
1.2K views
Introduction to Quantum Programming Studio
by
Satoyuki Tsukano
20 slides
1.1K views
量子コンピュータのプログラミング・コンテスト体験記
by
Satoyuki Tsukano
14 slides
2.2K views
数学好きから見た量子コンピュータ~57を因数分解した話~
by
Satoyuki Tsukano
17 slides
7.1K views
Packetbeatの基礎から、IoTデバイス異常検知への応用まで
by
Satoyuki Tsukano
39 slides
5.5K views
はじめてのElasticsearchクラスタ
1.
Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 1 JJUG ナイトセミナー「Elasticsearch特集」 はじめてのElasticsearchクラスタ 2018-07-25 Acroquest Technology 束野 仁政(つかの さとゆき)
2.
自己紹介 • 束野 仁政(つかの
さとゆき) • 仕事 1. Elasticsearch関連(コンサル, 設計, 構築, 運用) 800億件、100TBのクラスタ運用経験あり Elastic{ON} 2018 San Franciscoに参加 2. 分散処理・ビッグデータ関連(Hadoop, Spark等) 3. データ分析・機械学習関連 https://qiita.com/snuffkin Copyright © Acroquest Technology Co., Ltd. All rights reserved. 2 http://qiita.com/snuffkin/items/19b33797b8b5f828b1b6 Elasticsearch勉強会の 発表資料まとめ @snuffkin
3.
Acroquest Technology • Elastic社のパートナー http://www.acroquest.co.jp/elastic/ •
Elasticテクニカルワークショップ https://info.elastic.co/japan-technical-workshop.html • GPTW「働きがいのある会社」ランキング1位 • Java本格入門 ~モダンスタイルによる基礎から オブジェクト指向・実用ライブラリまで 技術評論社 現場で使える実践的な内容が詰まっています Copyright © Acroquest Technology Co., Ltd. All rights reserved. 3
4.
このセッションの内容 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 4 背景 1. Elasticsearchは分散型のデータストアで、 クラスタ化することにより大量のデータを高速に処理できる 2. Elasticsearchはカジュアルに動かせるが、 設計すべきことをやらずに本番運用に入るのはトラブルの元 前半 分散システムの視点から見たElasticsearchクラスタの仕組み 後半 安全なクラスタにするために本番運用前にやっておくべきこと この資料はElasticsearch6.3をベースに作成してます
5.
目次 前半: Elasticsearchクラスタの仕組み 1. ノードの種類 2.
シャードとレプリカ 3. インデクシングの流れ 4. 検索の流れ 5. Data nodeの障害検出 後半: 本番運用前にやっておくべきこと 1. シャード設計 2. レプリカ設計 3. マッピング設計 4. ディスクサイズ設計 5. スプリットブレイン対策 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 5
6.
Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 6 Elasticsearchクラスタの仕組み
7.
ノードの種類 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 7 Elasticsearchクラスタの仕組み 1. ノードの種類 2. シャードとレプリカ 3. インデクシングの流れ 4. 検索の流れ 5. Data nodeの障害検出
8.
ノードの種類 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 8 1. ノード=Elasticsearchのプロセス 2. その他にも何種類かありますが、今回は説明を省きます Shard 0 Primary Shard 2 Replica Data node 1 Shard 2 Primary Data node 2 Shard 1 Replica Data node 3 Shard 0 Replica Shard 1 Primary Data node 4 Coordinating node Master-eligible node Master
9.
ノードの種類 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 9 No. ノードの種類 役割 1 Master-eligible node クラスタ全体の処理(※)を行うノードをMaster nodeと 呼ぶ。 Master nodeの候補となるノードをMaster-eligible nodeと呼び、この中から1ノードがMaster nodeに選出 される。 ※クラスタの状態管理、シャードの割り当てなど 2 Data node Elasticsearchのデータを保持するノード。データを保持 し、クエリに対応した結果を返す。 3 Coordinating node 検索リクエストやインデクシングリクエストなどを受け 付けるノード。 すべてのノードはCoordinating nodeとしての機能を持 つ。 4 Coordinating only node(Client node) Coordinating nodeの役割のみのノード。 1ノードが複数の種類を兼任できます
10.
シャードとレプリカ Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 10 Elasticsearchクラスタの仕組み 1. ノードの種類 2. シャードとレプリカ 3. インデクシングの流れ 4. 検索の流れ 5. Data nodeの障害検出
11.
シャード、レプリカとは? Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 11 Elasticsearchのデータ階層 インデックス(RDBのテーブルに近い概念) シャード(RDBのパーティションに近い概念) 1インデックスを複数シャードで構成することにより、 次の効果がある。 1. 処理のスケール 2. 冗長化による耐障害性の確保
12.
シャード、レプリカとは?~処理のスケール Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 12 インデックスのデータをシャードに分散して保持して いるため、並列処理を行うことができる この例では3並列で検索が可能 Coordinating node Shard 0 Primary Shard 2 Replica Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Shard 2 Primary Data node 3
13.
シャード、レプリカとは? ~冗長化による耐障害性の確保 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 13 Data Node 3が故障しても、コピーがあるため、 別ノードのシャードを利用して処理を継続 Coordinating node Shard 0 Primary Shard 2 Replica Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Shard 2 Primary Data node 3
14.
シャード、レプリカに関連する主な機能 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 14 1. インデックス単位でシャード数、レプリカ数を 設定可能 シャード数はインデックス作成後に変更できない 2. レプリケーショングループ 同じシャード番号同士でレプリケーション 3. シャード単位で処理することの注意点 Aggregation等の処理はシャード単位で実行した結果をマ ージする
15.
インデックス単位でシャード数、レプリカ数を設 定可能 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 15 • シャード数はインデックス作成後に変更できない (再インデックスが必要) • レプリカ数はインデックス作成後でも変更可能 Shard 0 Primary Shard 2 Replica Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Shard 2 Primary Data node 3 • デフォルトではシャード数=5, レプリカ数=1 • REST APIで変更可能 インデックスA (シャード数=3, レプリカ数=1) Shard 0 Primary Shard 0 Replica Shard 0 Replica インデックスB (シャード数=1, レプリカ数=2)
16.
レプリケーショングループ Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 16 Shard 0のレプリケーショングループ (同一シャード番号) Coordinating node Shard 0 Primary Shard 2 Replica Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Shard 2 Primary Data node 3 • 同一レプリケーショングループのデータは別ノードに配置される • 「レプリカ数 ≧ ノード数」に設定しても、ディスクアクセスを並列化できなければ 性能を向上できない
17.
シャード単位で処理することの注意点 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 17 • Aggregation等は、まずシャード単位で実行し、各シャード の実行結果をマージし、クライアントに返す • そのため、処理によっては正確な結果にならない場合がある Coordinating node Shard 0 Primary Shard 2 Replica Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Shard 2 Primary Data node 3 各シャードの実行結果をマージ シャード単位の実行結果
18.
インデクシングの流れ Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 18 Elasticsearchクラスタの仕組み 1. ノードの種類 2. シャードとレプリカ 3. インデクシングの流れ 4. 検索の流れ 5. Data nodeの障害検出
19.
インデクシングの流れ~概要 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 19 Elasticseachクラスタ内でのインデクシング処理の流れ 1. クライアントからのリクエストを受けたCoordinating nodeはインデクシング先のシャード番号を決める 2. Coordinating nodeはPrimaryシャードにインデクシン グをリクエストする 3. Primaryシャードは、インデクシングを行う 4. Replicaシャードは、並列でインデクシングを行う 5. Replicaシャードは、Primaryシャードにレスポンスを返 す 6. Primaryシャードに全Replicaシャードからレスポンスが 返ってきたら、Coordinating nodeにレスポンスを返す 7. Coordinating nodeはクライアントにレスポンスを返す
20.
インデクシングの流れ(1/8) Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 20 • クライアントからのリクエストを受けたCoordinating nodeはインデクシング先のシャード番号を決める。 • シャード番号 = hash(document_id) % シャード数 この場合はシャード数=3 Coordinating node Shard 0 Primary Shard 2 Replica Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Shard 2 Primary Data node 3 ①シャード番号を決定
21.
インデクシングの流れ(2/8) Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 21 • Coordinating nodeはPrimaryシャードにインデク シングをリクエストする Coordinating node Shard 0 Primary Shard 2 Replica Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Shard 2 Primary Data node 3 ①シャード番号を決定②Primaryシャードにリクエスト
22.
インデクシングの流れ(3/8) Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 22 • Primaryシャードはインデクシングを行う Coordinating node Shard 0 Primary Shard 2 Replica Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Shard 2 Primary Data node 3 ①シャード番号を決定②Primaryシャードにリクエスト ③インデクシング
23.
インデクシングの流れ(4/8) Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 23 • Replicaシャードにインデクシングをリクエストする • 全Replicaシャードに並列でリクエストする (この場合は、Replica数=1なので、1並列) Coordinating node Shard 0 Primary Shard 2 Replica Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Shard 2 Primary Data node 3 ①シャード番号を決定②Primaryシャードにリクエスト ④Replicaシャードにリクエスト ③インデクシング
24.
インデクシングの流れ(5/8) Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 24 • Replicaシャードにインデクシングを行う Coordinating node Shard 0 Primary Shard 2 Replica Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Shard 2 Primary Data node 3 ①シャード番号を決定②Primaryシャードにリクエスト ④Replicaシャードにリクエスト ③インデクシング ⑤インデクシング
25.
インデクシングの流れ(6/8) Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 25 • Primaryシャードにレスポンスを返す Coordinating node Shard 0 Primary Shard 2 Replica Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Shard 2 Primary Data node 3 ①シャード番号を決定②Primaryシャードにリクエスト ④Replicaシャードにリクエスト ⑥レスポンス ③インデクシング ⑤インデクシング
26.
インデクシングの流れ(7/8) Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 26 • 全Replicaシャードからレスポンスが返ってきたら、 Coordinating nodeにレスポンスを返す Coordinating node Shard 0 Primary Shard 2 Replica Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Shard 2 Primary Data node 3 ①シャード番号を決定②Primaryシャードにリクエスト ④Replicaシャードにリクエスト ⑥レスポンス ⑦レスポンス ③インデクシング ⑤インデクシング
27.
インデクシングの流れ(8/8) Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 27 • Coordinating nodeはクライアントにレスポンスを 返す Coordinating node Shard 0 Primary Shard 2 Replica Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Shard 2 Primary Data node 3 ①シャード番号を決定②Primaryシャードにリクエスト ④Replicaシャードにリクエスト ⑥レスポンス ⑦レスポンス ③インデクシング ⑤インデクシング
28.
検索の流れ Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 28 Elasticsearchクラスタの仕組み 1. ノードの種類 2. シャードとレプリカ 3. インデクシングの流れ 4. 検索の流れ 5. Data nodeの障害検出
29.
検索の流れ~概要 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 29 Elasticseachクラスタ内での検索処理の流れ Query Phase 1. Coordinating nodeは各シャードにリクエスト 2. 各シャード内で検索を行う Fetch Phase 3. 各シャードの検索結果をCoordinating nodeに返す 4. Coordinating nodeが各シャードからの検索結果を マージし、クライアントにレスポンスを返す
30.
検索の流れ(1/4) Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 30 • Coordinating nodeは全レプリケーショングループ から1シャードずつ選び、リクエストする Coordinating node Shard 0 Primary Shard 2 Replica Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Shard 2 Primary Data node 3 ①各シャードにリクエスト ① ① Shard 0の レプリケーショングループ Shard 1の レプリケーショングループ Shard 2の レプリケーショングループ
31.
検索の流れ(2/4) Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 31 • 各シャード内で検索を行う Coordinating node Shard 0 Primary Shard 2 Replica Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Shard 2 Primary Data node 3 ①各シャードにリクエスト ① ① ②シャード内で検索 ②シャード内で検索 ②シャード内で検索
32.
検索の流れ(3/4) Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 32 • 各シャードの検索結果をCoordinating nodeに返す Coordinating node Shard 0 Primary Shard 2 Replica Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Shard 2 Primary Data node 3 ①各シャードにリクエスト ③検索結果 ③ ③① ① ②シャード内で検索 ②シャード内で検索 ②シャード内で検索
33.
検索の流れ(4/4) Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 33 • Coordinating nodeが各シャードからの検索結果を マージし、クライアントにレスポンスを返す Coordinating node Shard 0 Primary Shard 2 Replica Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Shard 2 Primary Data node 3 ④各シャードの検索結果をマージ ①各シャードにリクエスト ②シャード内で検索 ②シャード内で検索 ②シャード内で検索 ③ ③① ① ③検索結果
34.
検索にかかる時間 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 34 検索にかかる時間 • Query Phaseの時間 + Fetch Phaseの時間 = 検索が一番遅いシャードの処理時間 + マージ時間 Coordinating node Shard 0 Primary Shard 2 Replica Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Shard 2 Primary Data node 3 ④各シャードの検索結果をマージ ①各シャードにリクエスト ②シャード内で検索 ②シャード内で検索 ②シャード内で検索 ③ ③① ① ③検索結果
35.
DATA NODEの障害検出 Copyright ©
Acroquest Technology Co., Ltd. All rights reserved. 35 Elasticsearchクラスタの仕組み 1. ノードの種類 2. シャードとレプリカ 3. インデクシングの流れ 4. 検索の流れ 5. Data nodeの障害検出
36.
クラスタ状態 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 36 1. インデックス単位の状態には、次の種類がある 2. クラスタ全体の状態は、 インデックス単位の状態の最悪値になる 3. 具体的な状態(status)はREST APIで確認可能 状態 内容 green 正常な状態 yellow 割り当てられていないレプリカシャードあり red 割り当てられていないシャードあり GET _cluster/health/インデックス名 GET _cluster/health インデックス 単位 クラスタ 全体
37.
Data Nodeの障害検出の流れ(1/5) Copyright ©
Acroquest Technology Co., Ltd. All rights reserved. 37 • Master nodeは各ノードにヘルスチェックを行う • ヘルスチェック間隔は1s Shard 0 Primary Shard 2 Replica Data node 1 Shard 2 Primary Data node 2 Shard 0 Replica Shard 1 Primary Data node 4 Coordinating node Master-eligible node Master Shard 1 Replica Data node 3
38.
Data Nodeの障害検出の流れ(2/5) Copyright ©
Acroquest Technology Co., Ltd. All rights reserved. 38 • Data nodeに障害が発生する • タイムアウト30s×3回連続でヘルスチェックに失敗すると、 Master nodeは「Data nodeに障害が発生した」と認識する Shard 0 Primary Shard 2 Replica Data node 1 Shard 2 Primary Data node 2 Shard 0 Replica Shard 1 Primary Data node 4 Coordinating node Master-eligible node Master ①障害検知 Shard 1 Replica Data node 3
39.
Data Nodeの障害検出の流れ(3/5) Copyright ©
Acroquest Technology Co., Ltd. All rights reserved. 39 • 障害検出したノードが保持するデータを復旧させたい • ただ、Data nodeがすぐに復旧するケースに備え、 Master nodeは1分間待機する Shard 0 Primary Shard 2 Replica Data node 1 Shard 2 Primary Data node 2 Shard 0 Replica Shard 1 Primary Data node 4 Coordinating node Master-eligible node Master ①障害検知 ②1分間待機 Shard 1 Replica Data node 3
40.
Shard 1 R→P Data node
3 Data Nodeの障害検出の流れ(4/5) Copyright © Acroquest Technology Co., Ltd. All rights reserved. 40 • 障害により失われたプライマリシャード(ここではShard 1)を復旧させる • レプリカシャードの1つをプライマリシャードに変更する • これは状態更新のみのため、即完了する Shard 0 Primary Shard 2 Replica Data node 1 Shard 2 Primary Data node 2 Shard 0 Replica Shard 1 Primary Data node 4 Coordinating node Master-eligible node Master ①障害検知 ②1分間待機 ③プライマリシャードの復旧
41.
Shard 1 Primary Data node
3 Data Nodeの障害検出の流れ(5/5) Copyright © Acroquest Technology Co., Ltd. All rights reserved. 41 • 障害により失われたレプリカシャード(ここではShard 0, 1)を復旧させる • プライマリシャードを別ノードにコピーし、レプリカシャードとする • コピーに時間がかかる可能性あり Shard 0 Primary Shard 2 Replica Data node 1 Shard 2 Primary Data node 2 Shard 0 Replica Shard 1 Primary Data node 4 Coordinating node Master-eligible node Master ①障害検知 ②1分間待機 Shard 0 Replica ④レプリカシャードの復旧 ③プライマリシャードの復旧Shard 1 Replica
42.
Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 42 本番運用前にやっておくべきこと
43.
シャード設計 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 43 本番運用前にやっておくべきこと 1. シャード設計 2. レプリカ設計 3. マッピング設計 4. ディスクサイズ設計 5. スプリットブレイン対策
44.
問題 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 44 何ヶ月か本番運用していたら、不安定になってきた。 • レスポンスが遅くなることが増えた • FullGCが頻発するようになった • 毎朝9時頃に不安定になる シャード数が多すぎませんか?
45.
よくある原因と解決策 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 45 1. Elasticsearchはある程度シャード数に依存してメモリを使用する 2. シャード設計には経験則がある 多すぎる場合はシャード数を減らすこと ヒープサイズが30GBの場合の最大シャード数の目安 1ノードあたりの600-750個 How many shards should I have in my Elasticsearch cluster? https://www.elastic.co/blog/how-many-shards-should-i-have-in-my-elasticsearch-cluster 例) シャード数=5、レプリカ数=1で、5種類のインデックスを日毎に分けて 30日間運用した場合 5(シャード数)×2(プライマリとレプリカ)×5(種類)×30(日数)=1500
46.
レプリカ設計 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 46 本番運用前にやっておくべきこと 1. シャード設計 2. レプリカ設計 3. マッピング設計 4. ディスクサイズ設計 5. スプリットブレイン対策
47.
問題 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 47 1台のサーバで運用しているのですが、 クラスタ状態がいつもyellowになっています レプリカ数がデフォルト設定?
48.
よくある原因と解決策 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 48 1. プライマリシャードとレプリカシャードは別ノード に配置される 同一ノードに配置できない 2. Elasticsearchのレプリカ数はデフォルト1 デフォルト設定だと、レプリカを作ろうとする Shard 0 Primary Data node 1 Shard 0 Replica Data node 2 プライマリシャードとレプリカシャードの配置
49.
よくある原因と解決策 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 49 2. 1ノードで運用しているとレプリカを作成できない クラスタ状態がいつもyellowになる 3. 1ノードで運用する場合、レプリカ数=0にする インデックス毎の設定 index.number_of_replicas Shard 0 Primary Data node 1 Shard 0 Replica プライマリシャードとレプリカシャードの配置 Shard 0 Primary Data node 1
50.
マッピング設計 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 50 本番運用前にやっておくべきこと 1. シャード設計 2. レプリカ設計 3. マッピング設計 4. ディスクサイズ設計 5. スプリットブレイン対策
51.
問題 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 51 インデクシング時にパースエラーとなる • 文字列型のはずのフィールドでパースエラー マッピング定義していない?
52.
よくある原因と解決策 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 52 1. マッピング定義(RDBのスキーマ定義)を行わない場合、 最初にインデクシングするデータから、型を自動判定する (インデックス毎に行われる) 例) マッピング定義がないフィールドに「1230」というデータを インデクシングする 数値型と判定される その後、「123a」というデータ(16進数表記の文字列)をイ ンデクシングしようとしてパースエラーが発生 2. このような事故を防ぐには、 マッピング定義をしておいた方が良い
53.
ディスクサイズ設計 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 53 本番運用前にやっておくべきこと 1. シャード設計 2. レプリカ設計 3. マッピング設計 4. ディスクサイズ設計 5. スプリットブレイン対策
54.
問題 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 54 ディスクは余っているが、 Elasticsearchに書き込みできなくなった ディスクのサイジングは大丈夫?
55.
よくある原因と解決策 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 55 ディスク使用率には、3段階のwatermark設定がある 1. low デフォルト値は85% この値を超えると、そのノードには新規シャードを作成しない。 (既に存在するシャードには書き込みできる) 2. high デフォルト値は90% この値を超えると、別ノードにシャードを再配置する。 (「再配置する速度 < 書き込み速度」の場合、ディスク使用率は上昇する) 3. flood_stage デフォルト値は95% この値を超えると、read-onlyインデックスになる。 Shard 0 Primary Shard 2 Replica Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Shard 2 Primary Data node 3 ディスク使用率を考慮し、ディスクフルを防ぐ仕組みがある 82% 87% 92% 新規シャードを割り当て可能 新規シャードを割り当てない 別ノードにシャードを再配置
56.
よくある原因と解決策 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 56 1. レプリカを考慮に入れる 2. 1ノード停止しても、他のノードでデータを持てる 3. Elasticsearchの内部処理を行うための余裕が必要 ① シャード再配置 ② Elasticsearchのデータファイルは追記型のため、マー ジする領域が必要(≒データファイルのデフラグ) Shard 0 Primary Shard 2 Replica Data node 1 Shard 0 Replica Shard 1 Replica Data node 2 Shard 1 Primary Shard 2 Primary Data node 3 ディスクのサイジングを行うときの注意点 82% 87% 92% 新規シャードを割り当て可能 新規シャードを割り当てない 別ノードにシャードを再配置
57.
スプリットブレイン対策 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 57 本番運用前にやっておくべきこと 1. シャード設計 2. レプリカ設計 3. マッピング設計 4. ディスクサイズ設計 5. スプリットブレイン対策
58.
問題 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 58 一部のデータが消えた? ログを見たら、シャードが重複しているメッセージが出 ている スプリットブレイン対策していない?
59.
よくある原因と解決策 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 59 次のケースでは、Master nodeが2台になってしまい、 矛盾した処理を行う危険性がある Master Master Master Master Master nodeにヘルスチェック Master nodeは正常だが、ネッ トワーク障害により、ヘルスチェック が失敗 Master nodeに障害が発生し たと思い込み、別のノードが Master nodeになる このような現象を「スプリットブレイン」と言う Node 1 Node 2 Node 1 Node 2 Node 1 Node 2 ① ② ③
60.
よくある原因と解決策 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 60 過半数以上のMaster-eligible nodeを確認可能なとき だけ、Master nodeになれるようにする Master 過半数(この場合は2ノード)確認できず、 Node 2はMasterになれない Node 1はMasterのまま Master 過半数確認できず、 Masterになれない 過半数確認し、 Masterになる Master 過半数確認できず、 Masterをやめる Node 1 Node 2 Node 1 Node 2 Node 3 Node 3 過半数(この場合は2ノード)確認し、 Node 2(or Node 3)は Masterになる Node 1はMasterをやめる
61.
よくある原因と解決策 Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 61 1. Master-eligible nodeは3以上の奇数台用意する 2. 最低限必要なMaster-eligible nodeの台数を elasticsearch.ymlの discovery.zen.minimum_master_nodesに設定 する 3. 次の値を設定すること(小数点は切り捨て) (Master-eligible nodeの台数 / 2) + 1
62.
Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 62 Q & A
63.
Copyright © Acroquest
Technology Co., Ltd. All rights reserved. 63 ご清聴ありがとうございました。 Infrastructures Evolution