Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Elasticsearch x AutoScaling
Search
mats
June 02, 2015
Technology
73
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Elasticsearch x AutoScaling
第10回elasticsearch勉強会で使用した資料です。
mats
June 02, 2015
More Decks by mats
See All by mats
「生成系AI」と「ソフトウェアライセンス」の今 / Generative AI and OSS License
mats16
4
2.8k
🦜️🔗LangChain入門 / LangChain 101
mats16
1
710
Supabase - AWS DevDay 2022
mats16
3
2.3k
AWS スタートアップ支援プログラム / AWS Activate
mats16
0
1.3k
AWS Startup ゼミ 2021 秋期講習 / AWS Startup Seminar 2021 Autumn class - AWS Dev Day
mats16
4
2.7k
Unicorns run on AWS
mats16
0
330
AWS Startup tech Meetup Online 6
mats16
0
1.1k
シードスタートアップに知っておいてほしいこと / What seed startups need to know
mats16
0
410
Introduction to AWS App Runner
mats16
0
1.1k
Other Decks in Technology
See All in Technology
はじめてのWDM
miyukichi_ospf
1
140
Genie Ontologyは銀の弾丸かを考える / Is Genie Ontology a Silver Bullet?
nttcom
0
280
「ちゃんとやっている」は独りよがりだった ― 不安に寄り添うインシデント対応へ / Towards incident response that addresses anxieties
chmikata
1
5.3k
“それは自分の仕事じゃない"を越えて行け
yuukiyo
0
300
LLM/Agent評価:トップ営業の発言を「正解」にする 〜暗黙的正解による評価を営業資産に変える〜
takkuhiro
1
220
Amazon EVS で VCF 9.0 / 9.1 のサポート開始まとめ
mtoyoda
0
300
AIと共生する開発者プラットフォーム:バクラクのモノレポ×マイクロサービス基盤
sakajunquality
2
3.5k
ヘルスケア領域における AI 活用と その安全性担保のための取り組み (Leveraging AI in Healthcare and Our Efforts to Ensure Its Safety) - Google I/O Extended Tokyo 2026, July 11, 2026
zettaittenani
0
340
個人開発で育てる「大規模設計の苗床」 - AI時代の1人開発から始める業務への知識接続 / The Seedbed for Large-Scale Design - From AI-Era Solo Projects to Professional Knowledge
bitkey
PRO
1
230
AICoEでAIネイティブ組織への進化
yukiogawa
0
170
Oracle Exadata Database Service on Cloud@Customer X11M (ExaDB-C@C) サービス概要
oracle4engineer
PRO
2
8.4k
環境凍結という Toil を倒す -セルフサービス型 Ephemeral テスト環境の 設計と実践
shirouz
1
2.4k
Featured
See All Featured
Build your cross-platform service in a week with App Engine
jlugia
234
18k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
KATA
mclloyd
PRO
35
15k
Writing Fast Ruby
sferik
630
63k
A Soul's Torment
seathinner
6
3.1k
Mind Mapping
helmedeiros
PRO
1
280
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.1k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
340
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
260
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Transcript
Amazon Web Searvice Ͱ࣮ݱ͢Δ elasticsearchͷେنӡ༻ × גࣜձࣾΠϯςΟϝʔτɾϚʔδϟʔɹদాथ
ࣗݾհ দా थ גࣜձࣾΠϯςΟϝʔτɾϚʔδϟʔʢࣾһ໊̕ʣ ։ൃຊ෦ • ύϒϦοΫDMPʮAudienceSearchʯͷ։ൃ • ओʹΠϯϑϥपΓΛ୲
ΞδΣϯμ • IMʹ͓͚ΔelasticsearchͷΘΕํ • elasticsearchͷߏ • ߏͷܾΊํ • AutoScalingͷϙΠϯτ •
ͦͷଞઃఆͷϙΠϯτ
elasticsearchͷΘΕํ ̐ԯͷϢχʔΫIDʹର༷ͯ͠ʑͳଐੑใΛ༩ • Ӿཡཤྺʹجͮ͘Ωʔϫʔυ • ֤ϝσΟΞΑΓఏڙ͞ΕΔηάϝϯτ • User Agent •
ΞΫηεݩIPʹجͮ͘ॅॴاۀใ ҙͷ݅ͰIDΛߜΓࠐΉͨΊʹɺɹɹɹɹɹɹɹɹɹɹɹɹΛ ར༻͍ͯ͠·͢ɻ
AudienceSearchʹ͍ͭͯ ϝσΟΞདྷ๚ऀ ωοτϦαʔν ࠂ৴πʔϧ ˞ɹਤҰྫͰ͢ ཱྀߦʹڵຯ ऩສ ԣࢢॴ
ঁੑ
શମߏ • શͯAWSڥ • Cluster: 1, Type: 1, Node: 86
• master: 3 (master:true, data: false) • data: 80 (master:false, data:true) • searcher: 2 (master:false, data: false) • indexer: 1 (master:false, data: false)ɹ˞όονॲཧ • version: 1.3.8 → 1.5.2 (5/26Ξοϓσʔτ)
શମߏ master data searcher x2 indexer indexerҎ֎ɺશAutoScalingͰӡ༻ x3 x80 ELB
ߏܾఆʹ͍ͭͯ
Cluster Size • Shard = Node ʹݻఆͯ͠ݕূ • 10 ʙ
200 ͱΛมߋ͠ɺԠ࣌ؒΛൺֱ • ʙ100Ґ·ͰʹԠͯ͡ύϑΥʔϚϯε্͕ • 200نͰAggregationͷύϑΥʔϚϯε͕ྼԽ →ɹूܭ݁ՌͷϚʔδίετͷ૿Ճʁ • σʔλ༰ྔΛՃຯ͠ɺ80Ͱελʔτ
Shard • Node = 80 ʹݻఆͯ͠ݕূʢc3.largeʣ (1) shard: 40, replica:
1 ʢshard/node = 0.5ʣ (2) shard: 80, reprica: 1 ʢshard/node = 1ʣ (3) shard: 160, replica:1 ʢshard/node = 2ʣ • shard/node ͕̍Λ͑Δͱܹ͘͠ύϑΥʔϚϯε͕ྼԽ ※ shard/nodeͰͳ͘ɺshard/cpuͷํ͕ॏཁ͔͠Εͳ͍ɾɾ
Instance Size • ΠϯσΫγϯάߴԽͷͨΊɺϩʔΧϧSSDͷੑೳΛॏࢹ →ɹEphemeral DiskΛ̎ͭੵΊΔc3ϑΝϛϦʔ͔Βબ • σʔλྔ͕ଟ͍߹xlargeҎ্ͷํ͕CPʹ༏ΕΔ →ɹجຊతʹՁ͕֨ഒʹͳΔͱɺ༰ྔഒʹͳΔ͕ɺ ɹɹlarge→xlargeͷ࣌ͷΈ30GB→80GB
• JVMͷϝϞϦͷׂྔશମͷ̎ʙׂ̏ʢdoc_valueʣ
AutoScallingͷϙΠϯτ
Why AutoScaling ? AutoScaling͍ͤͯ͞Δཧ༝ • ̍̌̌نͷαʔόΛ̍̍ཧͯ͠ӡ༻͢Δ͜ͱ͕ɺ ਓతʹݫ͔ͬͨ͠ • terminate͢Εݩͷڥ͕࠶ݱՄೳ •
εϙοτΠϯελϯε͕ར༻ՄೳʹͳΔ • ύϥϝʔλΛ͍͡Δ͚ͩͰεέʔϧΞτՄೳ
recoveryͷνϡʔχϯά • LifeCycleʹΑΓఆظతʹΠϯελϯε͕ೖΕସΘΔ͜ͱ͕͋Δ • ଳҬಉ࣌ҠಈՄೳͳγϟʔυΛௐ͠ɺrecoveryʹ͔͔Δ ࣌ؒΛॖ͍ͯ͠Δ • ϨϓϦΧ̍Ͱӡ༻ʢ0ͰΔͱ࣌ʑσʔλ͕ແ͘ͳΓ·͢ʣ indices: recovery:
max_bytes_per_sec: 500mb concurrent_streams: 4
recoveryͷνϡʔχϯά • LifeCycleʹΑΓՃ͞ΕͨΠϯελϯεͷෛՙ • σʔλྔ: 40GB Ͱ10ఔʢc3.xlargeʣ
ΫϥελϦϯάͷߴԽ • elasticsearch-cloud-awsϓϥάΠϯΛར༻ • λάࢦఆͰdiscoveryΛߦ͍ɺmaster nodeʹͷΈλάΛઃఆ͢Δ • SGࢦఆͰର͕ଟ͕͔͔͗ͯ࣌ؒ͢Δ discovery: type:
ec2 ec2: tag: es_cluster: production
ΫϥελϦϯάͷߴԽ • master nodeͷΦʔτεέʔϧͷઃఆ࣌ʹλάΛࢦఆ • ʮaws:autoscaling:groupNameʯλάར༻Մೳʁ
ELBʹΑΔࢹ • ݕࡧΛड͚ͳ͍ϊʔυʹؔͯ͠ɺࢮ׆ࢹ༻ʹELBͱͷ ඥ͚Λઃఆʢmaster, dataʣ • ࢹର9200൪ϙʔτʢ9300ͷํ͕͍͍͔ʣ
ͦͷଞͷϙΠϯτ
Խ • Multi-AZߏͰߏஙʢ˞3ڌҎ্ͷ߹ෆ໌ʣ • ԼهઃఆͰɺࣗϊʔυͷอ࣋͢ΔshardͷreplicaΛɺҟͳΔAZ ͷϊʔυ্ʹஔ͢Δ cluster: routing: allocation: awareness:
attributes: aws_availability_zone
Խ • ”aws_availability_zone”ʹࣗϊʔυͷஔ͞Ε͍ͯΔAZ͕ύϥ ϝʔλͱͯ͠༩͑ΒΕΔʢelasticsearch-cloud-awsʣ • Ұɺյͨ͠ࡍແࣄͰͨ͠ { "attributes" : {
"aws_availability_zone" : "ap-northeast-1c", "master" : "false" } }
ϊʔυ໊Λhostnameʹ͢Δ • ࣗಈͰઃఆ͞ΕΔhostname(ip-10-0-0-1)ʹɺES্ͷϊʔυ໊Λ ߹ΘͤΔ • ΕͯAMIʹݻΊͨΓ͢Δͱɺશϊʔυಉ໊͡લʹɾɾ node: name: ${HOSTNAME} export
HOSTNAME=$(hostname -s) /etc/sysconfig/elasticsearch /etc/elasticsearch/elasticsearch.yml
ࢹ ࢹͷ̏ຊபʢΦʔτεέʔϧͱͷ૬ੑॏࢹʣ • ELBͷϔϧενΣοΫ • MackerelʢϦιʔεɾϓϩηεࢹʣ • Papertrailʢϩάࢹʣ • ʢىಈ/ఀࢭ࣌ͷSlackͷwebhookʣ
ʢࢀߟʣPapertrail master data searcher x2 x3 x80 αʔόʹSSHෆཁͰɺରͷϩάΛtailՄೳ syslog
·ͱΊ • εέʔϧΞτͷ͠қ͞ͰɺAWSͱES૬ੑ͕ྑ͍ • ઃఆ࣍ୈͰ͋Δ͕ɺAutoScallingຊ൪Ͱͷӡ༻ʹ͑͏Δ • Cluster SizeҰఆҎ্͕ඞཁ • ϊʔυͷೖΕସΘΓΛߟྀ͢Δ͜ͱ͕ඞཁ
• 1ͭͷindex͕ԯ݅ϨϕϧͰ͋ͬͯɺelasticsearch࣮༻ʹ ͑ΒΕΔ
ΤϯδχΞืू ࠷৽ͷٕज़ʹڵຯͷ͋Δ৽ϝϯόʔΛืूதͰ͢ʂ ࠾༻ٕज़ ։ൃج൫
͋Γ͕ͱ͏͍͟͝·ͨ͠