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
0
68
Elasticsearch x AutoScaling
第10回elasticsearch勉強会で使用した資料です。
mats
June 02, 2015
Tweet
Share
More Decks by mats
See All by mats
「生成系AI」と「ソフトウェアライセンス」の今 / Generative AI and OSS License
mats16
4
1.8k
🦜️🔗LangChain入門 / LangChain 101
mats16
1
630
Supabase - AWS DevDay 2022
mats16
3
1.9k
AWS スタートアップ支援プログラム / AWS Activate
mats16
0
1.2k
AWS Startup ゼミ 2021 秋期講習 / AWS Startup Seminar 2021 Autumn class - AWS Dev Day
mats16
4
2.5k
Unicorns run on AWS
mats16
0
280
AWS Startup tech Meetup Online 6
mats16
0
1k
シードスタートアップに知っておいてほしいこと / What seed startups need to know
mats16
0
360
Introduction to AWS App Runner
mats16
0
1k
Other Decks in Technology
See All in Technology
Rubyの国のPerlMonger
anatofuz
3
730
AIエージェントを現場で使う / 2025.08.07 著者陣に聞く!現場で活用するためのAIエージェント実践入門(Findyランチセッション)
smiyawaki0820
6
1k
Claude Codeは仕様駆動の夢を見ない
gotalab555
23
6.5k
風が吹けばWHOISが使えなくなる~なぜWHOIS・RDAPはサーバー証明書のメール認証に使えなくなったのか~
orangemorishita
15
5.7k
LLMで構造化出力の成功率をグンと上げる方法
keisuketakiguchi
0
800
AWS DDoS攻撃防御の最前線
ryutakondo
1
150
結局QUICで通信は速くなるの?
kota_yata
1
220
LLM 機能を支える Langfuse / ClickHouse のサーバレス化
yuu26
9
1.9k
「AIと一緒にやる」が当たり前になるまでの奮闘記
kakehashi
PRO
3
140
Agent Development Kitで始める生成 AI エージェント実践開発
danishi
0
150
【新卒研修資料】数理最適化 / Mathematical Optimization
brainpadpr
27
13k
Findy Freelance 利用シーン別AI活用例
ness
0
480
Featured
See All Featured
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.4k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Why Our Code Smells
bkeepers
PRO
337
57k
Why You Should Never Use an ORM
jnunemaker
PRO
58
9.5k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
[RailsConf 2023] Rails as a piece of cake
palkan
56
5.8k
Rails Girls Zürich Keynote
gr2m
95
14k
Facilitating Awesome Meetings
lara
54
6.5k
It's Worth the Effort
3n
185
28k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
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࣮༻ʹ ͑ΒΕΔ
ΤϯδχΞืू ࠷৽ͷٕज़ʹڵຯͷ͋Δ৽ϝϯόʔΛืूதͰ͢ʂ ࠾༻ٕज़ ։ൃج൫
͋Γ͕ͱ͏͍͟͝·ͨ͠