Submit Search
Upload
はじめてのElasticsearchクラスタ
•
Download as PPTX, PDF
•
29 likes
•
39,653 views
Satoyuki Tsukano
Follow
The First Elasticsearch Cluster 2018-07-25 JJUG ナイトセミナー「Elasticsearch特集」
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 63
Download now
Recommended
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
Etsuji Nakai
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
Tetsutaro Watanabe
Elasticsearchを使うときの注意点 公開用スライド
Elasticsearchを使うときの注意点 公開用スライド
崇介 藤井
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Akihiro Suda
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
NTT DATA Technology & Innovation
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
NTT DATA Technology & Innovation
Recommended
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
Etsuji Nakai
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
Tetsutaro Watanabe
Elasticsearchを使うときの注意点 公開用スライド
Elasticsearchを使うときの注意点 公開用スライド
崇介 藤井
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Akihiro Suda
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
NTT DATA Technology & Innovation
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
NTT DATA Technology & Innovation
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
NTT DATA OSS Professional Services
SolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみよう
Shinsuke Sugaya
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
Hibino Hisashi
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
Yoshiyasu SAEKI
Elasticsearch as a Distributed System
Elasticsearch as a Distributed System
Satoyuki Tsukano
分散システムについて語らせてくれ
分散システムについて語らせてくれ
Kumazaki Hiroki
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
Docker Compose 徹底解説
Docker Compose 徹底解説
Masahito Zembutsu
Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編
Yuki Morishita
Vacuum徹底解説
Vacuum徹底解説
Masahiko Sawada
インフラCICDの勘所
インフラCICDの勘所
Toru Makabe
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
NTT DATA Technology & Innovation
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するか
Shogo Wakayama
PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題
NTT DATA OSS Professional Services
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
NTT DATA OSS Professional Services
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTT DATA Technology & Innovation
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
NTT DATA Technology & Innovation
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Amazon Web Services Japan
ついにリリース!! MySQL 8.0 最新情報
ついにリリース!! MySQL 8.0 最新情報
yoyamasaki
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
YusukeKuramata
More Related Content
What's hot
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
NTT DATA OSS Professional Services
SolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみよう
Shinsuke Sugaya
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
Hibino Hisashi
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
Yoshiyasu SAEKI
Elasticsearch as a Distributed System
Elasticsearch as a Distributed System
Satoyuki Tsukano
分散システムについて語らせてくれ
分散システムについて語らせてくれ
Kumazaki Hiroki
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
Docker Compose 徹底解説
Docker Compose 徹底解説
Masahito Zembutsu
Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編
Yuki Morishita
Vacuum徹底解説
Vacuum徹底解説
Masahiko Sawada
インフラCICDの勘所
インフラCICDの勘所
Toru Makabe
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
NTT DATA Technology & Innovation
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するか
Shogo Wakayama
PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題
NTT DATA OSS Professional Services
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
NTT DATA OSS Professional Services
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTT DATA Technology & Innovation
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
NTT DATA Technology & Innovation
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Amazon Web Services Japan
What's hot
(20)
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
SolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみよう
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
Elasticsearch as a Distributed System
Elasticsearch as a Distributed System
分散システムについて語らせてくれ
分散システムについて語らせてくれ
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
Docker Compose 徹底解説
Docker Compose 徹底解説
Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編
Vacuum徹底解説
Vacuum徹底解説
インフラCICDの勘所
インフラCICDの勘所
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するか
PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Similar to はじめてのElasticsearchクラスタ
ついにリリース!! MySQL 8.0 最新情報
ついにリリース!! MySQL 8.0 最新情報
yoyamasaki
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
YusukeKuramata
solr勉強会資料
solr勉強会資料
Atsushi Takayasu
オタク×Node.js勉強会
オタク×Node.js勉強会
虎の穴 開発室
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
Akihiro Kuwano
20211209 lt runtime_field
20211209 lt runtime_field
Nomura Yuta
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
オラクルエンジニア通信
アプリケーション開発における暗号化
アプリケーション開発における暗号化
Hironori Sakamoto
技術勉強会(Solr入門編)
技術勉強会(Solr入門編)
Atsushi Takayasu
ツイートID生成とツイッターリアルタイム検索システムの話
ツイートID生成とツイッターリアルタイム検索システムの話
Preferred Networks
Sparkパフォーマンス検証
Sparkパフォーマンス検証
BrainPad Inc.
APEX UG Japan meetup 2018#3 - APEX18.1大特集
APEX UG Japan meetup 2018#3 - APEX18.1大特集
Yosuke Arai
Oracle code one 2018 報告会概要
Oracle code one 2018 報告会概要
Chihiro Ito
Pydata Amazon Kinesisのご紹介
Pydata Amazon Kinesisのご紹介
Toshiaki Enami
Pydata Amazon Kinesisのご紹介
Pydata Amazon Kinesisのご紹介
Amazon Web Services Japan
blogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べ
Masahiro Nagano
Developers.IO 2019 Effective Datalake
Developers.IO 2019 Effective Datalake
Satoru Ishikawa
Elasticsaerch Runtime Field
Elasticsaerch Runtime Field
Nomura Yuta
デモとディスカッションで体験するOracle DBトラブル対応
デモとディスカッションで体験するOracle DBトラブル対応
歩 柴田
インメモリーで超高速処理を実現する場合のカギ
インメモリーで超高速処理を実現する場合のカギ
Masaki Yamakawa
Similar to はじめてのElasticsearchクラスタ
(20)
ついにリリース!! MySQL 8.0 最新情報
ついにリリース!! MySQL 8.0 最新情報
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
solr勉強会資料
solr勉強会資料
オタク×Node.js勉強会
オタク×Node.js勉強会
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
20211209 lt runtime_field
20211209 lt runtime_field
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
アプリケーション開発における暗号化
アプリケーション開発における暗号化
技術勉強会(Solr入門編)
技術勉強会(Solr入門編)
ツイートID生成とツイッターリアルタイム検索システムの話
ツイートID生成とツイッターリアルタイム検索システムの話
Sparkパフォーマンス検証
Sparkパフォーマンス検証
APEX UG Japan meetup 2018#3 - APEX18.1大特集
APEX UG Japan meetup 2018#3 - APEX18.1大特集
Oracle code one 2018 報告会概要
Oracle code one 2018 報告会概要
Pydata Amazon Kinesisのご紹介
Pydata Amazon Kinesisのご紹介
Pydata Amazon Kinesisのご紹介
Pydata Amazon Kinesisのご紹介
blogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べ
Developers.IO 2019 Effective Datalake
Developers.IO 2019 Effective Datalake
Elasticsaerch Runtime Field
Elasticsaerch Runtime Field
デモとディスカッションで体験するOracle DBトラブル対応
デモとディスカッションで体験するOracle DBトラブル対応
インメモリーで超高速処理を実現する場合のカギ
インメモリーで超高速処理を実現する場合のカギ
More from Satoyuki Tsukano
あなたのスキルを量子技術に活かそう!
あなたのスキルを量子技術に活かそう!
Satoyuki Tsukano
オープンソースの量子コンピュータ・クラウド基盤開発
オープンソースの量子コンピュータ・クラウド基盤開発
Satoyuki Tsukano
Quantum Computer: Now and Future
Quantum Computer: Now and Future
Satoyuki Tsukano
Quantum computer applications in serverless architecture and challenges
Quantum computer applications in serverless architecture and challenges
Satoyuki Tsukano
How to Contributet o Quantum Computer
How to Contributet o Quantum Computer
Satoyuki Tsukano
a story about an application that uses a real quantum computer
a story about an application that uses a real quantum computer
Satoyuki Tsukano
Introduction to Quantum Programming Studio
Introduction to Quantum Programming Studio
Satoyuki Tsukano
量子コンピュータのプログラミング・コンテスト体験記
量子コンピュータのプログラミング・コンテスト体験記
Satoyuki Tsukano
数学好きから見た量子コンピュータ~57を因数分解した話~
数学好きから見た量子コンピュータ~57を因数分解した話~
Satoyuki Tsukano
Packetbeatの基礎から、IoTデバイス異常検知への応用まで
Packetbeatの基礎から、IoTデバイス異常検知への応用まで
Satoyuki Tsukano
More from Satoyuki Tsukano
(10)
あなたのスキルを量子技術に活かそう!
あなたのスキルを量子技術に活かそう!
オープンソースの量子コンピュータ・クラウド基盤開発
オープンソースの量子コンピュータ・クラウド基盤開発
Quantum Computer: Now and Future
Quantum Computer: Now and Future
Quantum computer applications in serverless architecture and challenges
Quantum computer applications in serverless architecture and challenges
How to Contributet o Quantum Computer
How to Contributet o Quantum Computer
a story about an application that uses a real quantum computer
a story about an application that uses a real quantum computer
Introduction to Quantum Programming Studio
Introduction to Quantum Programming Studio
量子コンピュータのプログラミング・コンテスト体験記
量子コンピュータのプログラミング・コンテスト体験記
数学好きから見た量子コンピュータ~57を因数分解した話~
数学好きから見た量子コンピュータ~57を因数分解した話~
Packetbeatの基礎から、IoTデバイス異常検知への応用まで
Packetbeatの基礎から、IoTデバイス異常検知への応用まで
はじめての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
Download now