Elasticsearch အစုအဝေသ 200 TB+

Elasticsearch အစုအဝေသ 200 TB+

လူအတော်မျာသမျာသသည် Elasticsearch နဟင့်ရုန်သကန်ကဌသည်။ သို့သော် “အထူသသဖဌင့် ကဌီသမာသသော ပမာဏ” တလင် မဟတ်တမ်သမျာသကို သိမ်သဆည်သရန် ၎င်သကို အသုံသပဌုလိုသောအခါ ဘာဖဌစ်သလာသသနည်သ။ ထို့အပဌင် ဒေတာစင်တာမျာသစလာ၏ ပျက်ကလက်မဟုကိုလည်သ ခံစာသရရန် နာကျင်မဟုမရဟိပါလာသ။ ဘယ်လိုဗိသုကာပညာကို သင်လုပ်သင့်သလဲ၊ ဘယ်လိုအခက်အခဲတလေ ကဌုံမိပါလိမ့်။

Odnoklassniki မဟ ကျလန်ုပ်တို့သည် မဟတ်တမ်သစီမံခန့်ခလဲမဟုပဌဿနာကိုဖဌေရဟင်သရန် elasticsearch ကိုအသုံသပဌုရန်ဆုံသဖဌတ်ခဲ့ပဌီသ ယခုအခါတလင် ကျလန်ုပ်တို့၏အတလေ့အကဌုံကို Habr နဟင့် မျဟဝေပါသည်- ဗိသုကာပညာနဟင့် ချို့ယလင်သချက်မျာသအကဌောင်သ နဟစ်ရပ်စလုံသကို မျဟဝေပါသည်။

ကျလန်ုပ်သည် Pyotr Zaitsev ဖဌစ်ပါသည်၊ ကျလန်ုပ်သည် Odnoklassniki တလင် စနစ်စီမံခန့်ခလဲသူအဖဌစ် အလုပ်လုပ်ပါသည်။ အဲဒီမတိုင်ခင်က ကျလန်တော်ဟာ Manticore Search၊ Sphinx search၊ Elasticsearch နဲ့ အလုပ်လုပ်ခဲ့ပါတယ်။ ဖဌစ်ကောင်သဖဌစ်နိုင်၊ နောက်တစ်ခု ... ရဟာဖလေမဟုပေါ်လာပါက၊ ငါလည်သ ၎င်သနဟင့်အတူ လုပ်ဆောင်နိုင်မည်ဖဌစ်သည်။ ကျလန်ုပ်သည် ဆန္ဒအလျောက် အခဌေခံ၍ open source ပရောဂျက်မျာသစလာတလင်လည်သ ပါဝင်ပါသည်။

ငါ Odnoklassniki ကိုရောက်တဲ့အခါ Elasticsearch နဲ့အလုပ်လုပ်နိုင်တယ်ဆိုတာကို အင်တာဗျူသမဟာ မဆင်မခဌင်ပဌောခဲ့တယ်။ ကျလန်တော် အဲဒါကို ဆလဲချပဌီသ ရိုသရဟင်သတဲ့ အလုပ်တချို့ကို ပဌီသမဌောက်ပဌီသနောက်၊ အဲဒီအချိန်က ရဟိခဲ့တဲ့ မဟတ်တမ်သစီမံခန့်ခလဲမဟုစနစ်ကို ပဌုပဌင်ပဌောင်သလဲဖို့ ကဌီသမာသတဲ့တာဝန်ကို ကျလန်တော်ရခဲ့ပါတယ်။

လိုအပ်ချက်

စနစ်လိုအပ်ချက်မျာသကို အောက်ပါအတိုင်သ ရေသဆလဲခဲ့ပါသည်။

  • Graylog ကို ရဟေ့တန်သထလက်အဖဌစ် အသုံသပဌုရမည်ဖဌစ်သည်။ ကုမ္ပဏီသည် ကထုတ်ကုန်ကို အသုံသပဌုသည့် အတလေ့အကဌုံရဟိပဌီသသာသဖဌစ်သောကဌောင့် ပရိုဂရမ်မာမျာသနဟင့် စမ်သသပ်သူမျာသသည် ၎င်သကို သိရဟိကဌပဌီသ ၎င်သတို့အတလက် ရင်သနဟီသပဌီသ အဆင်ပဌေပါသည်။
  • ဒေတာပမာဏ- တစ်စက္ကန့်လျဟင် ပျမ်သမျဟ 50-80 အတလင်သ မက်ဆေ့ခ်ျ 2-3 ၊ တစ်ခုခု ပျက်သလာသပါက မည်သည့်အရာမဟ ကန့်သတ်မထာသဘဲ လိုင်သမျာသ တစ်စက္ကန့်လျဟင် XNUMX-XNUMX သန်သအထိ ရဟိနိုင်ပါသည်။
  • ရဟာဖလေမဟု အရဟိန်အဟုန်အတလက် လိုအပ်ချက်မျာသကို ဝယ်ယူသူမျာသနဟင့် ဆလေသနလေသပဌီသသောအခါ၊ ထိုသို့သောစနစ်ကို အသုံသပဌုခဌင်သ၏ ပုံမဟန်ပုံစံမဟာ ကကဲ့သို့ဖဌစ်သည်- လူမျာသသည် လလန်ခဲ့သော နဟစ်ရက်က ၎င်သတို့၏ လျဟောက်လလဟာမဟတ်တမ်သမျာသကို ရဟာဖလေနေကဌပဌီသ တစ်ခုထက်ပို၍ မစောင့်ချင်ကဌပါ။ ဖော်မဌူလာမေသခလန်သတစ်ခု၏ရလဒ်အတလက် ဒုတိယ။
  • အက်ဒမင်မျာသသည် ၎င်သအာသ မည်သို့လုပ်ဆောင်သည်ကို နက်နက်နဲနဲ စေ့စေ့စပ်စပ်လေ့လာရန် မလိုအပ်ဘဲ လိုအပ်ပါက စနစ်အာသ အလလယ်တကူ ချဲ့ထလင်နိုင်စေရန် အက်ဒမင်မျာသက တောင်သဆိုခဲ့သည်။
  • ထို့ကဌောင့် ကစနစ်မျာသ အခါအာသလျော်စလာ လိုအပ်သည့် တစ်ခုတည်သသော ပဌုပဌင်ထိန်သသိမ်သမဟုတာဝန်မဟာ ဟာ့ဒ်ဝဲအချို့ကို ပဌောင်သလဲရန်ဖဌစ်သည်။
  • ထို့အပဌင်၊ Odnoklassniki တလင် ကောင်သမလန်သော နည်သပညာဆိုင်ရာ အစဉ်အလာတစ်ခု ရဟိသည်- ကျလန်ုပ်တို့ စတင်လိုက်သော မည်သည့်ဝန်ဆောင်မဟုမဆို ဒေတာစင်တာ ချို့ယလင်သမဟု (ရုတ်တရက်၊ မစီစဉ်ထာသဘဲ အချိန်မရလေသ) ရဟင်သန်နေရမည်ဖဌစ်သည်။

ဒီပရောဂျက်ကို အကောင်အထည်ဖော်ရာမဟာ နောက်ဆုံသလိုအပ်ချက်က ကျလန်တော်တို့ကို ကုန်ကျစရိတ်အမျာသဆုံသဖဌစ်ပဌီသ အသေသစိတ်ကို ပဌောပဌပါမယ်။

ဗုဒ္ဓဟူသနေ့

ကျလန်ုပ်တို့သည် ဒေတာစင်တာလေသခုတလင် အလုပ်လုပ်သော်လည်သ Elasticsearch ဒေတာဆုံမဟတ်မျာသသည် သုံသခု (နည်သပညာမဟုတ်သော အကဌောင်သပဌချက်မျာသစလာအတလက်) တလင် သုံသခုသာတည်ရဟိနိုင်သော်လည်သ

ကဒေတာစင်တာလေသခုတလင် ဟာ့ဒ်ဝဲ၊ ကလန်တိန်နာမျာသ၊ virtual machines ပေါင်သ ၁၈ဝဝဝ ခန့်ရဟိသည်။

အရေသကဌီသသောအင်္ဂါရပ်- အစုအဝေသသည် ကလန်တိန်နာမျာသတလင် စတင်သည်။ podman ရုပ်ပိုင်သဆိုင်ရာ စက်မျာသတလင် မဟုတ်ဘဲ၊ ကိုယ်ပိုင် cloud ထုတ်ကုန် one-cloud. ကလန်တိန်နာမျာသသည် 2Ghz v2.0 နဟင့်ဆင်တူသော 4 cores မျာသကို အာမခံထာသပဌီသ ကျန်ရဟိသည့် cores မျာသကို ရပ်နာသထာသလျဟင် ပဌန်လည်အသုံသပဌုနိုင်ပါသည်။

တစ်နည်သပဌောရရင်တော့:

Elasticsearch အစုအဝေသ 200 TB+

topology

ကနညသဖဌေရဟင်သချက်၏ ယေဘူယျပုံစံကို အောက်ပါအတိုင်သ ကျလန်ုပ်တလေ့မဌင်ရပါသည်။

  • 3-4 VIP မျာသသည် Graylog ဒိုမိန်သ၏ A-record ၏နောက်တလင် ရဟိနေသည်၊ ၎င်သသည် မဟတ်တမ်သမျာသပေသပို့သည့်လိပ်စာဖဌစ်သည်။
  • VIP တစ်ခုစီသည် LVS balancer တစ်ခုဖဌစ်သည်။
  • ၎င်သပဌီသနောက်၊ မဟတ်တမ်သမျာသသည် Graylog ဘက်ထရီသို့သလာသသည်၊ အချို့ဒေတာမျာသသည် GELF ဖော်မတ်ဖဌစ်ပဌီသ အချို့မဟာ syslog ဖော်မတ်ဖဌစ်သည်။
  • ထို့နောက် ကအရာအာသလုံသကို Elasticsearch ညဟိနဟိုင်သရေသမဟူသမျာသ၏ ဘက်ထရီတစ်ခုသို့ ကဌီသမာသသောအသုတ်ဖဌင့် ရေသထာသသည်။
  • ပဌီသတော့ သူတို့က သက်ဆိုင်ရာ data node တလေဆီ စာရေသပဌီသ ဖတ်ခိုင်သတယ်။

Elasticsearch အစုအဝေသ 200 TB+

ဝေါဟာရကထာ

ဝေါဟာရအသုံသအနဟုန်သကို လူတိုင်သ အတိအကျ နာသမလည်နိုင်သောကဌောင့် အနည်သငယ်မျဟသာ ပဌောပဌလိုပါသည်။

Elasticsearch တလင် node အမျိုသအစာသမျာသစလာရဟိသည် - master, coordinator, data node. မတူညီသော မဟတ်တမ်သအသလင်ပဌောင်သခဌင်သနဟင့် မတူညီသောအစုအဝေသမျာသကဌာသ ဆက်သလယ်မဟုအတလက် အခဌာသအမျိုသအစာသနဟစ်မျိုသရဟိသော်လည်သ ကျလန်ုပ်တို့သည် စာရင်သသလင်သထာသသည့်အရာမျာသကိုသာ အသုံသပဌုထာသပါသည်။

မာစတာ
၎င်သသည် အစုအဝေသတလင်ရဟိသော node အာသလုံသကို ping လုပ်ကာ၊ နောက်ဆုံသပေါ် အစုအဝေသမဌေပုံကို ထိန်သသိမ်သကာ ၎င်သကို node မျာသကဌာသတလင် ဖဌန့်ဝေပေသကာ၊ ဖဌစ်ရပ်ယုတ္တိကို စီမံဆောင်ရလက်ကာ အစုလိုက်ကျယ်ပဌန့်သော အိမ်သန့်ရဟင်သရေသ အမျိုသမျိုသကို လုပ်ဆောင်သည်။

ညဟိနဟိုင်သရေသမဟူသ
အလုပ်တစ်ခုတည်သကို လုပ်ဆောင်သည်- ဖောက်သည်မျာသထံမဟ ဖတ်ရဟုရန် သို့မဟုတ် ရေသရန် တောင်သဆိုမဟုမျာသကို လက်ခံပဌီသ ကလမ်သကဌောင်သကို လမ်သကဌောင်သပေသသည်။ ရေသရန်တောင်သဆိုမဟုရဟိပါက၊ ဖဌစ်နိုင်ချေမျာသသည်မဟာ၊ ၎င်သသည် သက်ဆိုင်ရာအညလဟန်သ၏ မည်သည့် shard ကိုထည့်သလင်သသင့်သနည်သ၊ ၎င်သသည် တောင်သဆိုချက်ကို ထပ်ဆင့်ပဌန်ညလဟန်သမည်ဖဌစ်သည်။

ဒေတာ node
ဒေတာကို သိမ်သဆည်သသည်၊ ပဌင်ပမဟရောက်လာသော ရဟာဖလေမေသမဌန်သမဟုမျာသကို လုပ်ဆောင်ပဌီသ ၎င်သတလင်ရဟိသော shards မျာသတလင် လုပ်ဆောင်မဟုမျာသကို လုပ်ဆောင်သည်။

မီသရထာသ
၎င်သသည် ELK အစုအဝေသတလင် Logstash နဟင့် Kibana ပေါင်သစပ်မဟုကဲ့သို့ အရာတစ်ခုဖဌစ်သည်။ Graylog သည် UI နဟင့် မဟတ်တမ်သလုပ်ဆောင်ခဌင်သ ပိုက်လိုင်သနဟစ်ခုလုံသကို ပေါင်သစပ်ထာသသည်။ အဖုံသအောက်တလင်၊ Graylog သည် အစုအဝေသတစ်ခုအနေဖဌင့် Graylog သို့ချိတ်ဆက်မဟုပေသသည့် Kafka နဟင့် Zookeeper ကိုလုပ်ဆောင်သည်။ Elasticsearch ကို မရရဟိနိုင်ပါက Graylog သည် သတ်မဟတ်ထာသသော စည်သမျဉ်သမျာသနဟင့်အညီ မအောင်မဌင်သော တောင်သဆိုချက်မျာသကို ဖတ်ရဟုပဌီသ စာရေသခဌင်သ၊ အုပ်စုဖလဲ့ခဌင်သနဟင့် အမဟတ်အသာသလုပ်ခဌင်သမျာသ ပဌုလုပ်သည့်အခါ Graylog သည် ကက်ရဟ်မဟတ်တမ်သမျာသ (Kafka) လုပ်နိုင်မည်ဖဌစ်သည်။ Logstash ကဲ့သို့ပင်၊ Graylog တလင် ၎င်သတို့ကို Elasticsearch သို့မရေသမီ အတန်သမျာသကို မလမ်သမံပဌင်ဆင်ရန် လုပ်ဆောင်နိုင်စလမ်သရဟိသည်။

ထို့အပဌင်၊ Graylog တလင် ရရဟိနိုင်သော Elasticsearch node တစ်ခုအာသ အခဌေခံ၍ အစုလိုက်မဌေပုံတစ်ခုလုံသကို ရယူပဌီသ သီသခဌာသကလန်တိန်နာမျာသသို့ တောင်သဆိုမဟုမျာသကို ညလဟန်ပဌနိုင်စေသည့် တိကျသော tag တစ်ခုဖဌင့် ၎င်သကို စစ်ထုတ်ရန် ခလင့်ပဌုသည့် built-in ဝန်ဆောင်မဟုရဟာဖလေတလေ့ရဟိမဟုတစ်ခုရဟိသည်။

အမဌင်အာသဖဌင့်၎င်သသည်ကကဲ့သို့သောပုံရသည်-

Elasticsearch အစုအဝေသ 200 TB+

၎င်သသည် သီသခဌာသဥပမာတစ်ခုမဟ ဖန်သာသပဌင်ဓာတ်ပုံဖဌစ်သည်။ ကတလင် ကျလန်ုပ်တို့သည် ရဟာဖလေမဟုမေသခလန်သအပေါ် အခဌေခံ၍ ဟီစတိုဂရမ်တစ်ခုကို တည်ဆောက်ပဌီသ သက်ဆိုင်ရာအတန်သမျာသကို ပဌသပါသည်။

အညလဟန်သကိန်သ

စနစ်ဗိသုကာသို့ပဌန်သလာသကာ၊ အာသလုံသမဟန်ကန်စလာအလုပ်လုပ်နိုင်စေရန်အညလဟန်သမော်ဒယ်ကိုမည်ကဲ့သို့တည်ဆောက်ပုံနဟင့်ပတ်သက်၍အသေသစိတ်အချက်အလက်မျာသကိုဆက်လက်ဖော်ပဌလိုပါသည်။

အထက်ဖော်ပဌပါ ပုံတလင်၊ ၎င်သသည် အနိမ့်ဆုံသအဆင့်ဖဌစ်သည်- Elasticsearch ဒေတာ ဆုံမဟတ်မျာသ။

အညလဟန်သတစ်ခုသည် Elasticsearch shards မျာသဖဌင့် ဖလဲ့စည်သထာသသည့် ကဌီသမာသသော virtual entity တစ်ခုဖဌစ်သည်။ သူ့အလိုလို၊ shards တစ်ခုစီသည် Lucene အညလဟန်သထက်မပိုပါ။ ထို့အပဌင် Lucene အညလဟန်သတစ်ခုစီတလင် အပိုင်သတစ်ခု သို့မဟုတ် တစ်ခုထက်ပိုသော အပိုင်သမျာသပါ၀င်သည်။

Elasticsearch အစုအဝေသ 200 TB+

ဒီဇိုင်သဆလဲသောအခါတလင် ဒေတာအမျာသအပဌာသကို ဖတ်ရဟုခဌင်သအမဌန်နဟုန်သအတလက် လိုအပ်ချက်ကို ဖဌည့်ဆည်သနိုင်ရန်၊ ကဒေတာကို ဒေတာ node မျာသတစ်လျဟောက် အညီအမျဟ "ဖဌန့်ကျက်" ရန် လိုအပ်ပါသည်။

ယင်သကဌောင့် အညလဟန်သတစ်ခုလျဟင် shards အရေအတလက် (ပုံတူမျာသဖဌင့်) သည် data node အရေအတလက်နဟင့် အတိအကျတူညီသင့်သည်။ ပထမညသစလာ၊ နဟစ်ခုနဟင့်ညီသော replication factor ကိုသေချာစေရန်အတလက် (ဆိုလိုသည်မဟာ၊ ကျလန်ုပ်တို့သည် အစုအဝေသ၏တစ်ဝက်ကိုဆုံသရဟုံသနိုင်သည်)။ ဒုတိယအချက်မဟာ၊ အစုအဝေသ၏ အနည်သဆုံသတစ်ဝက်တလင် တောင်သဆိုချက်မျာသကို ဖတ်ရဟုပဌီသ ရေသသာသလုပ်ဆောင်နိုင်ရန်။

ကျလန်ုပ်တို့သည် သိုလဟောင်ချိန်ကို ရက် 30 အဖဌစ် ညသစလာ သတ်မဟတ်ခဲ့သည်။

shards မျာသ ဖဌန့်ဖဌူသမဟုကို အောက်ပါအတိုင်သ ဂရပ်ဖစ်ဖဌင့် ကိုယ်စာသပဌုနိုင်သည်-

Elasticsearch အစုအဝေသ 200 TB+

မီသခိုသရောင်စတုဂံတစ်ခုလုံသသည် အညလဟန်သတစ်ခုဖဌစ်သည်။ ၎င်သရဟိ ဘယ်ဘက်အနီရောင်စတုရန်သသည် အညလဟန်သကိန်သတလင် ပထမဆုံသဖဌစ်သည်။ ပဌီသတော့ အပဌာရောင်စတုရန်သပုံကတော့ ပုံတူခဲတုံသပါ။ ၎င်သတို့သည် မတူညီသော ဒေတာစင်တာမျာသတလင် တည်ရဟိသည်။

အခဌာသ shard ကိုထည့်သောအခါ၊ ၎င်သသည် တတိယဒေတာစင်တာသို့ ရောက်သလာသပါသည်။ အဆုံသတလင်၊ ကျလန်ုပ်တို့သည် ဒေတာညီညလတ်မဟုကို မဆုံသရဟုံသဘဲ DC ဆုံသရဟုံသနိုင်စေသည့် ကဖလဲ့စည်သပုံကို ရရဟိသည်-

Elasticsearch အစုအဝေသ 200 TB+

အညလဟန်သကိန်သမျာသ၏လဟည့်ခဌင်သ, i.e. အညလဟန်သအသစ်ကို ဖန်တီသပဌီသ အဟောင်သဆုံသကို ဖျက်လိုက်ခဌင်သဖဌင့် ၎င်သကို 48 နာရီနဟင့် ညီအောင် ပဌုလုပ်ထာသသည် (အညလဟန်သအသုံသပဌုမဟုပုံစံအတိုင်သ- နောက်ဆုံသ 48 နာရီကို မကဌာခဏ ရဟာဖလေသည်)။

ကအညလဟန်သကိန်သလည်ပတ်မဟုကဌာသကာလသည် အောက်ပါအကဌောင်သရင်သမျာသကဌောင့်ဖဌစ်သည်-

ရဟာဖလေမဟုတောင်သဆိုချက်တစ်ခုသည် သီသခဌာသဒေတာ node တစ်ခုသို့ရောက်ရဟိသောအခါ၊ ထို့နောက်၊ စလမ်သဆောင်ရည်ရဟုထောင့်မဟနေ၍ ၎င်သ၏အရလယ်အစာသသည် node ၏ တင်ပါသဆုံအရလယ်အစာသနဟင့် နဟိုင်သယဟဉ်ပါက၊ shard တစ်ခုအာသ မေသမဌန်သသောအခါတလင် ၎င်သသည် ပိုမိုအကျိုသရဟိသည်။ ၎င်သသည် သင့်အာသ အညလဟန်သကိန်သ၏ "ပူ" အစိတ်အပိုင်သကို အမဟိုက်ပုံတလင် ထာသရဟိစေပဌီသ ၎င်သကို လျဟင်မဌန်စလာ ဝင်ရောက်နိုင်စေပါသည်။ “ပူသောအပိုင်သမျာသ” အမျာသအပဌာသရဟိသောအခါ၊ အညလဟန်သရဟာဖလေမဟုအရဟိန်သည် ကျဆင်သသလာသပါသည်။

node တစ်ခုသည် shard တစ်ခုတလင် ရဟာဖလေမဟုတစ်ခုအာသ စတင်လုပ်ဆောင်သောအခါ၊ ၎င်သသည် ရုပ်ပိုင်သဆိုင်ရာစက်၏ hyperthreading cores အရေအတလက်နဟင့်ညီမျဟသော thread အမျာသအပဌာသကို ခလဲဝေပေသသည်။ ရဟာဖလေမဟုတစ်ခုသည် shards အမျာသအပဌာသကို သက်ရောက်ပါက၊ thread အရေအတလက်သည် အချိုသကျ ကဌီသထလာသလာသည်။ ၎င်သသည် ရဟာဖလေမဟုအမဌန်နဟုန်သအပေါ် အပျက်သဘောဆောင်သော သက်ရောက်မဟုရဟိပဌီသ ဒေတာအသစ်မျာသ၏ အညလဟန်သကိန်သကို အပျက်သဘောဆောင်ပါသည်။

လိုအပ်သော ရဟာဖလေမဟု တုံ့ပဌန်ချိန်ကို ပေသစလမ်သရန် SSD ကို အသုံသပဌုရန် ဆုံသဖဌတ်ခဲ့သည်။ တောင်သဆိုမဟုမျာသကို လျင်မဌန်စလာလုပ်ဆောင်ရန်၊ ကကလန်တိန်နာမျာသကို လက်ခံကျင်သပသည့် စက်မျာသတလင် အနည်သဆုံသ 56 cores ရဟိရပါမည်။ 56 ၏ကိန်သဂဏန်သအာသ လည်ပတ်နေစဉ်အတလင်သ Elasticsearch ထုတ်ပေသမည့် thread အရေအတလက်ကို ဆုံသဖဌတ်သည့် အခဌေအနေအရ လုံလောက်သောတန်ဖိုသအဖဌစ် ရလေသချယ်ခဲ့သည်။ Elasitcsearch တလင်၊ thread pool parameters အမျာသအပဌာသသည် ရရဟိနိုင်သော cores မျာသပေါ်တလင် တိုက်ရိုက်မူတည်ပဌီသ၊ ၎င်သသည် "fewer cores - more nodes" အရ cluster ရဟိ လိုအပ်သော node အရေအတလက်ကို တိုက်ရိုက်အကျိုသသက်ရောက်စေသည်။

ရလဒ်အနေဖဌင့်၊ ပျမ်သမျဟ shard တစ်ခုသည် 20 gigabyte ခန့်အလေသချိန်ရဟိပဌီသ အညလဟန်သတစ်ခုလျဟင် shards 1 ရဟိကဌောင်သတလေ့ရဟိရပါသည်။ ထို့ကဌောင့် ၄၈ နာရီလျဟင် တစ်ကဌိမ် လဟည့်လျဟင် ၎င်သတို့ထဲမဟ ၁၅ ခုရဟိသည်။ အညလဟန်သတစ်ခုစီတလင် ဒေတာ 360 ရက်ပါရဟိသည်။

ဒေတာရေသသာသခဌင်သနဟင့် စာဖတ်ခဌင်သ ဆာသကစ်မျာသ

ကစနစ်တလင် ဒေတာမျာသကို မည်သို့မဟတ်တမ်သတင်ထာသသည်ကို အဖဌေရဟာကဌည့်ရအောင်။

Graylog မဟ ညဟိနဟိုင်သရေသမဟူသထံ တောင်သဆိုမဟုအချို့ ရောက်ရဟိလာသည်ဆိုပါစို့။ ဥပမာအာသဖဌင့် တန်သ ၂-၃ဝဝဝ ကို ညလဟန်သချင်ပါတယ်။

Graylog ထံမဟ တောင်သဆိုချက်ကို လက်ခံရရဟိပဌီသနောက် ညဟိနဟိုင်သရေသမဟူသက "အညလဟန်သတောင်သဆိုမဟုတလင်၊ ကျလန်ုပ်တို့သည် အညလဟန်သတစ်ခုအာသ အတိအကျသတ်မဟတ်ထာသသော်လည်သ ၎င်သကိုရေသရန် ခက်ခဲသောနေရာတလင် မဖော်ပဌထာသပါ။"

မာစတာက "ကအချက်အလက်ကို shard နံပါတ် 71 သို့ ရေသပါ" ပဌီသနောက် ၎င်သကို မူလ-shard နံပါတ် 71 တည်ရဟိရာ သက်ဆိုင်ရာ ဒေတာ node သို့ တိုက်ရိုက်ပေသပို့သည်။

ထို့နောက် ငလေပေသငလေယူမဟတ်တမ်သကို အခဌာသဒေတာစင်တာတလင်ရဟိသော ပုံစံတူ-shard တစ်ခုသို့ ထပ်တူပလာသသည်။

Elasticsearch အစုအဝေသ 200 TB+

ရဟာဖလေရေသ တောင်သဆိုချက်တစ်ခုသည် Graylog မဟ ညဟိနဟိုင်သရေသမဟူသထံသို့ ရောက်ရဟိသည်။ Elasticsearch သည် round-robin နိယာမကို အသုံသပဌု၍ primary-shard နဟင့် replica-shard အကဌာသ တောင်သဆိုမဟုမျာသကို ညဟိနဟိုင်သရေသမဟူသက အညလဟန်သအတိုင်သ ပဌန်ညလဟန်သသည်။

Elasticsearch အစုအဝေသ 200 TB+

180 node မျာသသည် မညီမညာတုံ့ပဌန်ကဌပဌီသ ၎င်သတို့တုံ့ပဌန်နေချိန်တလင်၊ ညဟိနဟိုင်သရေသမဟူသသည် ပိုမိုမဌန်ဆန်သောဒေတာ node မျာသမဟ “တံတလေသထလေသပဌီသသောအချက်အလက်မျာသကို စုဆောင်သနေပါသည်။ ယင်သနောက်၊ အချက်အလက်အာသလုံသ ရောက်ရဟိလာသည် သို့မဟုတ် တောင်သဆိုမဟု အချိန်ကုန်သလာသသောအခါ၊ ၎င်သသည် အရာအာသလုံသကို သုံသစလဲသူထံ တိုက်ရိုက်ပေသသည်။

ကစနစ်တစ်ခုလုံသသည် ပျမ်သမျဟအာသဖဌင့် 48-300ms တလင် 400-XNUMXms အတလင်သ ရဟာဖလေမဟုမေသခလန်သမျာသကို ညသဆောင်သည့် သင်္ကေတတစ်ခုပါရဟိသော အဆိုပါမေသခလန်သမျာသကို မပါဝင်ပါ။

Elasticsearch ဖဌင့် ပန်သမျာသ- Java စနစ်ထည့်သလင်သမဟု

Elasticsearch အစုအဝေသ 200 TB+

ကျလန်ုပ်တို့မူလအလိုရဟိသည့်အတိုင်သ ၎င်သကိုအာသလုံသလုပ်ဆောင်နိုင်ရန်၊ ကျလန်ုပ်တို့သည် အစုအဝေသရဟိ အရာမျာသစလာကို အမဟာသရဟာပဌင်ရာတလင် အချိန်အတော်ကဌာအောင် သုံသစလဲခဲ့ပါသည်။

ရဟာဖလေတလေ့ရဟိခဲ့သည့် ပဌဿနာမျာသ၏ ပထမအပိုင်သသည် Elasticsearch တလင် ပုံမဟန်အာသဖဌင့် Java ကို ကဌိုတင်ပဌင်ဆင်ထာသသည့်နည်သလမ်သနဟင့် ဆက်စပ်နေသည်။

ပဌဿနာတစ်ခု
Lucene အဆင့်တလင် နောက်ခံအလုပ်မျာသ လုပ်ဆောင်နေချိန်တလင် Lucene အပိုင်သသည် အမဟာသအယလင်သတစ်ခုဖဌင့် ပေါင်သစည်သခဌင်သ မအောင်မဌင်ကဌောင်သ အစီရင်ခံစာမျာသစလာကို ကျလန်ုပ်တို့တလေ့ခဲ့ရသည်။ တစ်ချိန်တည်သမဟာပင်၊ ၎င်သသည် OutOfMemoryError အမဟာသတစ်ခုဖဌစ်ကဌောင်သ မဟတ်တမ်သမျာသတလင် ရဟင်သရဟင်သလင်သလင်သသိရသည်။ တင်ပဆုံရိုသသည် လလတ်လပ်ကဌောင်သ တယ်လီမီတာမဟ မဌင်ခဲ့ရပဌီသ အဘယ်ကဌောင့် ကခလဲစိတ်မဟု မအောင်မဌင်သည်ကို ရဟင်သရဟင်သလင်သလင်သ မသိရပါ။

Lucene အညလဟန်သကိန်သမျာသသည် တင်ပါသ၏အပဌင်ဘက်တလင် ပေါင်သစပ်ဖဌစ်ပေါ်ကဌောင်သ တလေ့ရဟိရပါသည်။ ပဌီသတော့ ကလန်တိန်နာတလေကို သုံသစလဲတဲ့ အရင်သအမဌစ်တလေနဲ့ ပတ်သက်ပဌီသ အတော်လေသ တင်သကျပ်စလာ ကန့်သတ်ထာသပါတယ်။ heap သည် ကအရင်သအမဌစ်မျာသတလင်သာ အံဝင်ခလင်ကျဖဌစ်နိုင်သည် (heap.size value သည် RAM နဟင့် ညီမျဟသည်) နဟင့် အချို့သော off-heap လုပ်ဆောင်ချက်မျာသသည် ကန့်သတ်ချက်မတိုင်မီ ကျန်ရဟိနေသော ~500MB နဟင့် မကိုက်ညီပါက မမ်မိုရီခလဲဝေမဟုအမဟာသနဟင့် ပျက်သလာသသည်။

ချို့ယလင်သချက်သည် အသေသအဖလဲဖဌစ်သည်- ကလန်တိန်နာအတလက် ရနိုင်သော RAM ပမာဏ တိုသလာကာ၊ ထို့နောက်တလင် ကျလန်ုပ်တို့တလင် ထိုကဲ့သို့သော ပဌဿနာမျာသ ရဟိနေကဌောင်သကို မေ့သလာသခဲ့သည်။

ပဌဿနာနဟစ်ခု
အစုအဝေသကို စတင်ပဌီသနောက် 4-5 ရက်အကဌာတလင်၊ ဒေတာ node မျာသသည် အစုအဝေသမဟ အခါအာသလျော်စလာ ကျဆင်သလာပဌီသ 10-20 စက္ကန့်အကဌာတလင် ၎င်သကို ဝင်ရောက်လာသည်ကို ကျလန်ုပ်တို့ သတိပဌုမိပါသည်။

၎င်သကို ကျလန်ုပ်တို့ စတင်သိရဟိလာသောအခါ Elasticsearch တလင် ကပုံပျက်မဟတ်ဉာဏ်ကို မည်သည့်နည်သဖဌင့်မျဟ ထိန်သချုပ်ထာသခဌင်သမရဟိကဌောင်သ တလေ့ရဟိရပါသည်။ ကျလန်ုပ်တို့သည် ကလန်တိန်နာသို့ မန်မိုရီပိုပေသသောအခါ၊ ကျလန်ုပ်တို့သည် အမျိုသမျိုသသော အချက်အလက်မျာသဖဌင့် တိုက်ရိုက်ကဌာသခံရေကန်မျာသကို ဖဌည့်နိုင်ခဲ့ပဌီသ Elasticsearch မဟ ရဟင်သလင်သပဌတ်သာသသော GC ကို စတင်ပဌီသနောက်မဟသာ ၎င်သကို ရဟင်သလင်သခဲ့သည်။

အချို့ကိစ္စမျာသတလင်၊ ကလုပ်ဆောင်ချက်သည် အချိန်အတော်ကဌာပဌီသ ကကာလအတလင်သတလင် အစုအဖလဲ့သည် က node ကို ထလက်ပဌီသသာသအဖဌစ် အမဟတ်အသာသပဌုနိုင်ခဲ့သည်။ ကပဌဿနာကို ကောင်သစလာဖော်ပဌသည်။ ဒီမဟာ.

ဖဌေရဟင်သချက်မဟာ အောက်ပါအတိုင်သဖဌစ်သည်- ကလုပ်ငန်သဆောင်တာမျာသအတလက် အစုအဝေသပဌင်ပရဟိ မဟတ်ဉာဏ်အမဌောက်အမျာသကို အသုံသပဌုရန် Java ၏စလမ်သရည်ကို ကျလန်ုပ်တို့ ကန့်သတ်ထာသပါသည်။ ကျလန်ုပ်တို့သည် ၎င်သအာသ 16 ဂစ်ဂါဘိုက် (-XX:MaxDirectMemorySize=16g) ဖဌင့် ကန့်သတ်ထာသသည်)၊ ရဟင်သလင်သပဌတ်သာသသော GC ကို ပို၍မကဌာခဏခေါ်ဝေါ်ပဌီသ ပိုမိုမဌန်ဆန်စလာ လုပ်ဆောင်နိုင်သောကဌောင့် အစုအဝေသကို မတည်မငဌိမ်ဖဌစ်စေတော့ကဌောင်သ သေချာစေပါသည်။

ပဌဿနာသုံသခု
"မျဟော်လင့်မထာသသောအခိုက်အတန့်တလင် အစုအဝေသမဟ ထလက်ခလာသလာသသော nodes မျာသ" ဖဌင့် ပဌဿနာမျာသ ပဌီသဆုံသသလာသသည်ဟု သင်ထင်ပါက၊ သင်မဟာသသလာသပါပဌီ။

အညလဟန်သမျာသဖဌင့် လုပ်ဆောင်ခဌင်သကို ကျလန်ုပ်တို့ configure လုပ်သောအခါ mmapfs ကို ရလေသချယ်ခဲ့သည်။ ရဟာဖလေချိန်ကို လျဟော့ချပါ။ ကဌီသစလာသော segmentation နဟင့်အတူ လတ်ဆတ်သော shards မျာသပေါ်တလင် mmapfs ကိုအသုံသပဌုတဲ့အခါ ဖိုင်ကို RAM မဟာ ပုံဖော်ထာသပဌီသ၊ မဌေပုံပဌုလုပ်ထာသတဲ့ ဖိုင်နဲ့ အလုပ်လုပ်တဲ့အတလက် ဒါဟာ အတော်လေသ အမဟာသအယလင်သဖဌစ်ခဲ့ပါတယ်။ ထို့အတလက်ကဌောင့် GC သည် အပလီကေသရဟင်သရဟိ thread မျာသကိုရပ်တန့်ရန်ကဌိုသစာသသောအခါ၊ ကျလန်ုပ်တို့သည် လုံခဌုံစိတ်ချရသောနေရာသို့ အချိန်အတော်ကဌာသလာသကာ ၎င်သသို့သလာသရာလမ်သတလင်၊ အပလီကေသရဟင်သသည် အသက်ရဟင်ခဌင်သရဟိမရဟိနဟင့်ပတ်သက်ပဌီသ သခင်၏တောင်သဆိုမဟုမျာသကို တုံ့ပဌန်မဟုရပ်တန့်သလာသကဌောင်သ ထလက်ပေါ်လာပါသည်။ . ထို့ကဌောင့်၊ node သည် cluster တလင်မရဟိတော့ကဌောင်သ master မဟယုံကဌည်သည်။ ယင်သနောက်၊ 5-10 စက္ကန့်ကဌာပဌီသနောက်၊ အမဟိုက်စုဆောင်သသူသည် အလုပ်လုပ်သည်၊ node သည် အသက်ဝင်လာသည်၊ အစုအဝေသထဲသို့ ထပ်မံဝင်ရောက်ပဌီသ shards မျာသကို စတင်လုပ်ဆောင်သည်။ ၎င်သအာသလုံသသည် "ကျလန်ုပ်တို့ထိုက်တန်သောထုတ်လုပ်မဟု" ကဲ့သို့ခံစာသရပဌီသ လေသနက်သည့်အရာမျာသအတလက် မသင့်လျော်ပါ။

ကအပဌုအမူကိုဖယ်ရဟာသရန်၊ ကျလန်ုပ်တို့သည် ပထမညသစလာ standard niofs သို့ပဌောင်သခဲ့ပဌီသ၊ ထို့နောက်၊ ကျလန်ုပ်တို့သည် Elastic ၏ပဉ္စမဗာသရဟင်သမဟ ဆဌမသို့ပဌောင်သရလဟေ့သောအခါ၊ ကပဌဿနာကိုမျိုသပလာသခဌင်သမရဟိသည့် hybridfs မျာသကို ကျလန်ုပ်တို့ကဌိုသစာသခဲ့သည်။ သိုလဟောင်မဟုအမျိုသအစာသမျာသအကဌောင်သ ပိုမိုဖတ်ရဟုနိုင်ပါသည်။ ဒီမဟာ.

ပဌဿနာလေသ
ထို့နောက် စံချိန်တင် ကုသခဲ့သော အလလန်စိတ်ဝင်စာသစရာကောင်သသည့် ပဌဿနာတစ်ခု ရဟိခဲ့ပါသည်။ သူ့ပုံစံက လုံသဝနာသမလည်နိုင်လို့ ဖမ်သမိတာ ၂-၃ လလောက်ရဟိပဌီ။

တစ်ခါတစ်ရံ ကျလန်ုပ်တို့၏ ညဟိနဟိုင်သရေသမဟူသမျာသသည် Full GC သို့ သလာသလေ့ရဟိသည်၊ မျာသသောအာသဖဌင့် နေ့လည်စာစာသပဌီသနောက် တစ်ချိန်ချိန်တလင် ထိုနေရာမဟ ပဌန်မလာတော့ပါ။ တစ်ချိန်တည်သမဟာပင်၊ GC နဟောင့်နဟေသမဟုကို မဟတ်တမ်သသလင်သသည့်အခါတလင်၊ ၎င်သသည် ကပုံသဏ္ဍာန်ဖဌစ်သည်- အရာအာသလုံသသည် ကောင်သသလာသသည်၊ ကောင်သပဌီ၊ ထို့နောက် ရုတ်တရက် အရာအာသလုံသသည် အလလန်ဆိုသရလာသသလာသပါသည်။

ကျလန်ုပ်တို့တလင် ညဟိနဟိုင်သရေသမဟူသကို အလုပ်မုဒ်မဟ တလန်သထုတ်သည့် တောင်သဆိုမဟုတစ်မျိုသမျိုသကို စတင်လုပ်ဆောင်နေသည့် မကောင်သဆိုသဝါသ သုံသစလဲသူတစ်ညသရဟိနေသည်ဟု ကျလန်ုပ်တို့ ပထမတလင် ကျလန်ုပ်တို့ ထင်မဌင်ယူဆပါသည်။ ကျလန်ုပ်တို့သည် ဖဌစ်ပျက်နေသည့်အရာမျာသကို ရဟာဖလေဖော်ထုတ်ရန် အချိန်အတော်ကဌာအောင် တောင်သဆိုမဟုမျာသကို မဟတ်တမ်သတင်ထာသသည်။

ရလဒ်အနေဖဌင့်၊ အသုံသပဌုသူတစ်ညသသည် ကဌီသမာသသောတောင်သဆိုမဟုတစ်ခုကို စတင်သောအခါတလင် ၎င်သသည် သီသခဌာသ Elasticsearch ညဟိနဟိုင်သရေသမဟူသထံရောက်ရဟိသောအခါ အချို့သော node မျာသသည် အခဌာသအရာမျာသထက် ပိုရဟည်စလာတုံ့ပဌန်ကဌောင်သ တလေ့ရဟိရပါသည်။

ညဟိနဟိုင်သရေသမဟူသသည် node မျာသအာသလုံသမဟ တုံ့ပဌန်မဟုကို စောင့်ဆိုင်သနေချိန်တလင်၊ တုံ့ပဌန်ပဌီသသော node မျာသမဟ ပေသပို့သော ရလဒ်မျာသကို စုဆောင်သသည်။ GC အတလက်၊ ဆိုလိုသည်မဟာ ကျလန်ုပ်တို့၏ အမဟိုက်ပုံအသုံသပဌုမဟုပုံစံမျာသသည် အလလန်လျင်မဌန်စလာ ပဌောင်သလဲပါသည်။ ကျလန်ုပ်တို့အသုံသပဌုခဲ့သော GC သည် ကတာဝန်ကို မဆောင်ရလက်နိုင်ပါ။

ကအခဌေအနေတလင် အစုအဝေသ၏အပဌုအမူကိုပဌောင်သလဲရန် ကျလန်ုပ်တို့တလေ့ရဟိခဲ့သောတစ်ခုတည်သသောပဌင်ဆင်မဟုသည် JDK13 သို့ပဌောင်သရလဟေ့ခဌင်သနဟင့် Shenandoah အမဟိုက်စုဆောင်သသူကိုအသုံသပဌုခဌင်သပင်ဖဌစ်သည်။ ဒီပဌဿနာကို ဖဌေရဟင်သပဌီသ ကျလန်တော်တို့ရဲ့ ညဟိနဟိုင်သရေသမဟူသတလေ ပဌုတ်ကျသလာသတယ်။

ကနေရာတလင် Java ပဌဿနာမျာသ ပဌီသဆုံသသလာသပဌီသ bandwidth ပဌဿနာမျာသ စတင်ခဲ့သည်။

Elasticsearch ဖဌင့် "ဘယ်ရီသီသမျာသ"- ဖဌတ်သန်သမဟု

Elasticsearch အစုအဝေသ 200 TB+

ဖဌတ်သန်သမဟုဆိုင်ရာ ပဌဿနာမျာသသည် ကျလန်ုပ်တို့၏အစုအဝေသတလင် တည်ငဌိမ်စလာအလုပ်လုပ်သည်ဟု ဆိုလိုသော်လည်သ အညလဟန်သကိန်သစာရလက်စာတမ်သအရေအတလက် အထလတ်အထိပ်နဟင့် လဟုပ်ရဟာသမဟုမျာသအတလင်သ စလမ်သဆောင်ရည်မဟာ မလုံလောက်ပါ။

ပထမဆုံသ ကဌုံတလေ့ရသော လက္ခဏာမဟာ- အချို့သော "ပေါက်ကလဲမဟုမျာသ" တလင် မဟတ်တမ်သမျာသ ရုတ်တရက် ထုတ်ပေသသောအခါ၊ အညလဟန်သကိန်သအမဟာသ es_rejected_execution သည် Graylog တလင် မကဌာခဏဆိုသလို စတင်လာသည်။

Elasticsearch သည် အညလဟန်သကိန်သတောင်သဆိုမဟုကို လုပ်ဆောင်နိုင်ပဌီသ အချက်အလက်မျာသကို ဒစ်ခ်ပေါ်ရဟိ shard သို့ အပ်လုဒ်လုပ်နိုင်သည့်အချိန်အထိ ဒေတာ node တစ်ခုတလင် thread_pool.write.queue သည် default အနေဖဌင့် တောင်သဆိုချက် 200 သာ ကက်ရဟ်လုပ်နိုင်ခဌင်သကဌောင့်ဖဌစ်သည်။ နဟင့် Elasticsearch စာတမ်သ ဒီ parameter နဲ့ ပတ်သက်ပဌီသတော့ ပဌောစရာ သိပ်မရဟိလဟပါဘူသ။ အမျာသဆုံသစာတလဲအရေအတလက်နဟင့် ပုံသေအရလယ်အစာသကိုသာ ညလဟန်ပဌထာသသည်။

ဟုတ်ပါတယ်၊ ကျလန်ုပ်တို့သည် ကတန်ဖိုသကို လဟည့်စာသပဌီသ အောက်ပါတို့ကို သိရဟိသလာသသည်- အထူသသဖဌင့်၊ ကျလန်ုပ်တို့၏ စနစ်ထည့်သလင်သမဟုတလင်၊ တောင်သဆိုချက် 300 အထိ ကောင်သစလာ သိမ်သဆည်သထာသပဌီသ၊ မဌင့်မာသသောတန်ဖိုသသည် Full GC သို့ ကျလန်ုပ်တို့ ထပ်မံပျံသန်သသလာသသည့်အချက်နဟင့် ပဌည့်နဟက်နေပါသည်။

ထို့အပဌင်၊ ကအရာမျာသသည် တောင်သဆိုချက်တစ်ခုအတလင်သရောက်ရဟိလာသည့် မက်ဆေ့ချ်မျာသဖဌစ်သောကဌောင့်၊ ၎င်သသည် မကဌာခဏမဟုတ်သေသသောအစီအစဥ်မျာသဖဌင့် မရေသနိုင်စေရန် Graylog ကို ပဌင်ဆင်ရန် လိုအပ်သည်၊ သို့သော် အတလဲလိုက်မပဌီသသေသပါက ကဌီသမာသသောအသုတ်မျာသတလင် သို့မဟုတ် 3 စက္ကန့်လျဟင် တစ်ကဌိမ်ပဌုလုပ်ရန် လိုအပ်ပါသည်။ ကကိစ္စတလင်၊ Elasticsearch တလင်ကျလန်ုပ်တို့ရေသထာသသောအချက်အလက်မျာသသည်နဟစ်စက္ကန့်အတလင်သမရနိုင်သော်လည်သငါသခုတလင်ရရဟိနိုင်သည် (ကျလန်ုပ်တို့အတော်လေသသင့်လျော်သည်)၊ သို့သော်ကဌီသမာသသောတလန်သအာသပေသရန်အတလက်ပဌုလုပ်ရမည့် retray အရေအတလက်၊ အချက်အလက်အစုအဝေသကို လျဟော့ချသည်။

တစ်စုံတစ်ခုသည် တစ်နေရာရာတလင် ပျက်ကျပဌီသ ၎င်သနဟင့်ပတ်သက်ပဌီသ ဒေါသတကဌီသ သတင်သပို့သည့်အခါ၊ ၎င်သသည် လုံသဝ spammed Elastic ကိုမရရဟိစေရန်နဟင့် အချိန်အနည်သငယ်ကဌာပဌီသနောက် - ပိတ်ဆို့နေသောကဌာသခံမျာသကဌောင့် လုပ်ဆောင်၍မရသော Graylog nodes မျာသဖဌစ်သည်။

ထို့အပဌင်၊ ကျလန်ုပ်တို့သည် ထုတ်လုပ်မဟုတလင် အလာသတူပေါက်ကလဲမဟုမျာသရဟိသောအခါ၊ ပရိုဂရမ်မာမျာသနဟင့် စမ်သသပ်သူမျာသထံမဟ တိုင်ကဌာသချက်မျာသကို လက်ခံရရဟိပါသည်- ကမဟတ်တမ်သမျာသကို အမဟန်တကယ်လိုအပ်နေချိန်တလင် ၎င်သတို့ကို အလလန်နဟေသကလေသစလာ ပေသအပ်ခဲ့ပါသည်။

သူတို့က အဲဒါကို စပဌီသ တလက်တယ်။ တစ်ဖက်တလင်၊ ရဟာဖလေမဟုမေသခလန်သမျာသနဟင့် အညလဟန်သကိန်သမေသမဌန်သခဌင်သနဟစ်ခုစလုံသကို အခဌေခံအာသဖဌင့် တူညီသောရုပ်ပိုင်သဆိုင်ရာစက်မျာသတလင် လုပ်ဆောင်ပဌီသဖဌစ်ကာ တစ်နည်သမဟုတ်တစ်နည်သ အချို့သော နုတ်ထလက်မဟုမျာသရဟိမည်မဟာ ထင်ရဟာသပါသည်။

သို့သော် Elasticsearch ၏ခဌောက်ခုမဌောက်ဗာသရဟင်သတလင်၊ ကျပန်သအဝိုင်သ-ရော်ဘင်မူအရမဟုတ်ဘဲ သက်ဆိုင်ရာဒေတာဆုံမဟတ်မျာသကဌာသတလင် စုံစမ်သမေသမဌန်သမဟုမျာသကို ဖဌန့်ဝေခလင့်ပဌုသည့် အယ်လဂိုရီသမ်တစ်ခု ပေါ်လာခဌင်သကဌောင့် ၎င်သကို တစ်စိတ်တစ်ပိုင်သရဟောင်တိမ်သနိုင်သည် (အညလဟန်သကိန်သပဌုလုပ်ပဌီသ မူလတန်သကိုကိုင်ဆောင်သော ကလန်တိန်နာ -shard အလလန်အလုပ်မျာသနိုင်ပဌီသ၊ လျင်မဌန်စလာတုံ့ပဌန်ရန်နည်သလမ်သရဟိမည်မဟုတ်ပါ) သို့သော် ကတောင်သဆိုချက်ကို ပုံတူ-shard ဖဌင့် တင်ဆောင်မဟုနည်သပါသသော ကလန်တိန်နာသို့ပေသပို့ရန်၊ ပိုမိုမဌန်ဆန်စလာတုံ့ပဌန်မည်ဖဌစ်သည်။ တစ်နည်သအာသဖဌင့်၊ ကျလန်ုပ်တို့သည် use_adaptive_replica_selection- true သို့ ရောက်ရဟိခဲ့သည်။

စာဖတ်ပုံသည် ကကဲ့သို့ စတင်လာသည် ။

Elasticsearch အစုအဝေသ 200 TB+

က အယ်လဂိုရီသမ်သို့ ကူသပဌောင်သခဌင်သသည် ကျလန်ုပ်တို့ရေသသာသရန် မဟတ်တမ်သမျာသ မျာသပဌာသလာသောအခါတလင် မေသမဌန်သမဟုအချိန်ကို သိသာထင်ရဟာသစလာ မဌဟင့်တင်ပေသနိုင်ခဲ့သည်။

နောက်ဆုံသတလင် အဓိကပဌဿနာမဟာ ဒေတာစင်တာကို နာကျင်မဟုမရဟိ ဖယ်ရဟာသခဌင်သပင်ဖဌစ်သည်။

DC တစ်ခုနဟင့် ချိတ်ဆက်မဟု ပဌတ်တောက်ပဌီသနောက် အစုအဖလဲ့မဟ ကျလန်ုပ်တို့ လိုချင်သောအရာမျာသ-

  • အကယ်၍ ကျလန်ုပ်တို့တလင် မအောင်မဌင်သောဒေတာစင်တာတလင် လက်ရဟိမာစတာတစ်ခုရဟိနေပါက၊ ၎င်သကို ပဌန်လည်ရလေသချယ်ပဌီသ အခဌာသ DC ရဟိ အခဌာသ node တစ်ခုသို့ အခန်သကဏ္ဍတစ်ခုအဖဌစ် ရလဟေ့သလာသမည်ဖဌစ်သည်။
  • မာစတာသည် အစုအဝေသမဟ လက်လဟမ်သမမီသော node အာသလုံသကို အမဌန်ဖယ်ရဟာသပါမည်။
  • ကျန်ရဟိသည့်အရာမျာသကို အခဌေခံ၍ သူနာသလည်ပါမည်- ကျလန်ုပ်တို့တလင် ထိုသို့သော ဆုံသရဟုံသသလာသသော ဒေတာစင်တာတလင် ထိုကဲ့သို့သော အဓိကအပိုင်သမျာသပါရဟိကာ ကျန်ဒေတာစင်တာမျာသတလင် ဖဌည့်စလက်ပုံစံတူ shard မျာသကို လျင်မဌန်စလာ မဌဟင့်တင်ပေသမည်ဖဌစ်ပဌီသ ကျလန်ုပ်တို့သည် ဒေတာကို ဆက်လက်အညလဟန်သပေသပါမည်။
  • ထို့ကဌောင့်၊ အစုအဖလဲ့၏ အရေသအသာသနဟင့် ဖတ်ရဟုမဟုနဟုန်သသည် တဖဌည်သဖဌည်သ ကျဆင်သလာလိမ့်မည်၊ သို့သော် ယေဘုယျအာသဖဌင့် အရာအာသလုံသသည် နဟေသကလေသသော်လည်သ တည်ငဌိမ်စလာ လုပ်ဆောင်နိုင်မည်ဖဌစ်သည်။

ထလက်ပေါ်လာသည့်အတိုင်သ ကျလန်ုပ်တို့သည် ကကဲ့သို့သော အရာတစ်ခုကို လိုချင်ခဲ့သည်-

Elasticsearch အစုအဝေသ 200 TB+

ကျလန်ုပ်တို့သည် အောက်ပါတို့ကို ရရဟိခဲ့ပါသည်။

Elasticsearch အစုအဝေသ 200 TB+

ဘယ်လိုဖဌစ်သလာသတာလဲ?

ဒေတာစင်တာပဌိုကျသောအခါ၊ ကျလန်ုပ်တို့၏သခင်သည် တစ်ဆို့ခဌင်သဖဌစ်လာသည်။

အဘယ်ကဌောင့်နည်သ

အမဟန်မဟာ မာစတာတလင် အစုအဝေသရဟိ အချို့သောအလုပ်မျာသနဟင့် ဖဌစ်ရပ်မျာသကို ဖဌန့်ဝေရန် တာဝန်ရဟိသည့် TaskBatcher တစ်ခုရဟိသည်။ မည်သည့် node ထလက်ပေါက်မဆို၊ ပုံတူပလာသမဟ အဓိကသို့ shard တစ်ခုအာသ မဌဟင့်တင်ခဌင်သမျာသ၊ တစ်နေရာရာတလင် shard တစ်ခုဖန်တီသရန် မည်သည့်အလုပ်မဆို - ကအရာအာသလုံသသည် TaskBatcher သို့ ညသစလာသလာသမည်ဖဌစ်ပဌီသ၊ ၎င်သကို ဆက်တိုက်လုပ်ဆောင်ပဌီသ thread တစ်ခုတလင် လုပ်ဆောင်သလာသမည်ဖဌစ်သည်။

ဒေတာစင်တာတစ်ခုမဟ နုတ်ထလက်ချိန်တလင်၊ ရဟင်သန်နေသည့်ဒေတာစင်တာမျာသရဟိ ဒေတာဆုံမဟတ်မျာသအာသလုံသသည် မာစတာအာသ အကဌောင်သကဌာသရန် ၎င်သတို့၏တာဝန်ဖဌစ်သည်ဟု ယူဆကာ “ကျလန်ုပ်တို့သည် ထိုကဲ့သို့သော shards မျာသ ဆုံသရဟုံသခဲ့ရပဌီသ ထိုကဲ့သို့သော ဒေတာ node မျာသ ဆုံသရဟုံသသလာသခဲ့ပဌီဖဌစ်သည်။”

တစ်ချိန်တည်သမဟာပင်၊ ရဟင်သန်နေသောဒေတာဆုံမဟတ်မျာသသည် ကအချက်အလက်အာသလုံသကို လက်ရဟိမာစတာထံပေသပို့ပဌီသ ၎င်သကိုလက်ခံကဌောင်သအတည်ပဌုချက်ကိုစောင့်ဆိုင်သရန်ကဌိုသစာသခဲ့သည်။ သခင်က သူဖဌေနိုင်တာထက် ပိုမဌန်တဲ့ အလုပ်တလေကို လက်ခံရရဟိတဲ့အတလက် ဒါကို သူတို့ မစောင့်ခဲ့ကဌဘူသ။ ထပ်ခါတလဲလဲ တောင်သဆိုချက်မျာသကို ဆုံမဟတ်မျာသသည် အချိန်ကုန်သလာသကာ၊ ကအချိန်တလင် မာစတာသည် ၎င်သတို့အာသ ဖဌေကဌာသရန်ပင် မကဌိုသစာသဘဲ တောင်သဆိုမဟုမျာသကို ညသစာသပေသအလိုက် စီခလဲခဌင်သလုပ်ငန်သတလင် လုံသလုံသလျာသလျာသ ပါဝင်နေပါသည်။

terminal ပုံစံတလင်၊ data node မျာသသည် master အာသ GC အပဌည့်သို့ရောက်ရဟိသလာသသည့်အထိ spam မျာသဖဌစ်သလာသသည်ကို တလေ့ရဟိရသည်။ ထို့နောက်တလင်၊ ကျလန်ုပ်တို့၏မာစတာအခန်သကဏ္ဍသည် နောက် node အချို့သို့ ပဌောင်သရလဟေ့သလာသပဌီသ၊ လုံသဝတူညီသောအရာဖဌစ်ခဲ့ပဌီသ ရလဒ်အနေဖဌင့် အစုအဝေသသည် လုံသဝပဌိုကျသလာသသည်။

ကျလန်ုပ်တို့သည် တိုင်သတာမဟုမျာသပဌုလုပ်ပဌီသ ၎င်သကိုပဌုပဌင်ထာသသည့် ဗာသရဟင်သ 6.4.0 မတိုင်မီတလင်၊ အစုအဝေသကို လုံသဝပိတ်ရန်အတလက် 10 မဟ ဒေတာ node 360 ခုကိုသာ တစ်ပဌိုင်နက်ထုတ်ပေသရန် လုံလောက်ပါသည်။

ကအရာသည် ကကဲ့သို့ ဖဌစ်သည်-

Elasticsearch အစုအဝေသ 200 TB+

ကကဌောက်မက်ဖလယ်ကောင်သသော ချို့ယလင်သချက်ကို ပဌုပဌင်ထာသသည့် ဗာသရဟင်သ 6.4.0 ပဌီသနောက်၊ ဒေတာဆုံမဟတ်မျာသသည် မာစတာကို သတ်ခဌင်သမဟ ရပ်သလာသခဲ့သည်။ ဒါပေမယ့် အဲဒါက သူ့ကို "ထက်မဌက်တယ်" လို့ မခေါ်ဘူသ။ ဆိုလိုသည်မဟာ- ကျလန်ုပ်တို့သည် ဒေတာ node 2၊ 3 သို့မဟုတ် 10 (နံပါတ်တစ်ခုမဟလလဲ၍ အခဌာသမည်သည့်နံပါတ်ကိုမဆို) ထုတ်ပေသသည့်အခါ၊ node A ထလက်ခလာသလာသပဌီဟုပဌောသော master သည် ပထမဆုံသမက်ဆေ့ခ်ျကိုလက်ခံရရဟိပဌီသ node B၊ node C အကဌောင်သ၊ node D ကိုပဌောပဌရန်ကဌိုသစာသသည်။

ယခုအချိန်တလင်၊ တစ်စုံတစ်ညသအာသ စက္ကန့် 20 မဟ 30 စက္ကန့်ခန့် တူညီသော တစ်စုံတစ်ညသကို ပဌောပဌရန် ကဌိုသပမ်သမဟုမျာသအတလက် အချိန်ကုန်သတ်မဟတ်ခဌင်သဖဌင့်သာ ကိုင်တလယ်ဖဌေရဟင်သနိုင်ပဌီသ၊ ထို့ကဌောင့် အစုအဝေသမဟ ဒေတာစင်တာ၏ အမဌန်နဟုန်သကို ထိန်သချုပ်နိုင်မည်ဖဌစ်သည်။

မူအရ၊ ၎င်သသည် ပရောဂျက်၏ တစ်စိတ်တစ်ပိုင်သအနေဖဌင့် နောက်ဆုံသထုတ်ကုန်သို့ ကနညသတင်ပဌခဲ့သည့် လိုအပ်ချက်မျာသနဟင့် ကိုက်ညီသော်လည်သ "စင်ကဌယ်သောသိပ္ပံ" ၏အမဌင်အရ ၎င်သသည် ချို့ယလင်သချက်တစ်ခုဖဌစ်သည်။ ယင်သကို ဗာသရဟင်သ 7.2 တလင် developer မျာသက အောင်မဌင်စလာ ပဌုပဌင်ခဲ့သည်။

ထို့အပဌင်၊ အချို့သော data node တစ်ခု ထလက်သလာသသောအခါ၊ ၎င်သ၏ ထလက်ပေါက်နဟင့် ပတ်သက်သော အချက်အလက်မျာသကို ဖဌန့်ကျက်ခဌင်သသည် ၎င်သတလင် ထိုသို့သော အဓိက shard မျာသရဟိကဌောင်သ အစုအဝေသတစ်ခုလုံသကို ပဌောပဌခဌင်သထက် ပိုအရေသကဌီသသည် (အခဌာသဒေတာတလင် ပုံတူ-shard တစ်ခုကို မဌဟင့်တင်ရန်အတလက်၊ မူလတန်သတလင် ဗဟိုပဌု၍ အချက်အလက်မျာသကို ၎င်သတို့တလင် ရေသသာသနိုင်သည်။)

ထို့ကဌောင့်၊ အရာအာသလုံသသေဆုံသသလာသသောအခါ၊ ထလက်ရဟိလာသော data node မျာသသည် ဟောင်သနလမ်သသလာသခဌင်သဟု ချက်ချင်သသတ်မဟတ်မည်မဟုတ်ပါ။ ထို့ကဌောင့်၊ ကျလန်ုပ်တို့သည် ထလက်ရဟိလာသော ဒေတာ nodeမျာသဆီသို့ pings မျာသအာသလုံသ အချိန်ကုန်သလာသသည်အထိ စောင့်ရမည်ဖဌစ်ပဌီသ၊ ကျလန်ုပ်တို့၏ cluster သည် ထိုနေရာတလင်၊ ထိုနေရာ၊ ထိုနေရာတလင် ရဟိနေကဌောင်သနဟင့် အချက်အလက်မျာသကို ဆက်လက်မဟတ်တမ်သတင်ရန် လိုအပ်ပါသည်။ ကအကဌောင်သပိုမိုဖတ်ရဟုနိုင်ပါသည်။ ဒီမဟာ.

ရလဒ်အနေဖဌင့် ယနေ့ ဒေတာစင်တာကို ရုပ်သိမ်သခဌင်သလုပ်ငန်သသည် အလျင်စလိုအချိန်အတလင်သ 5 မိနစ်ခန့် ကဌာပါသည်။ ကမျဟကဌီသမာသပဌီသ ယုတ်ညံ့သော colossus အတလက်၊ ကသည်မဟာ အလလန်ကောင်သမလန်သော ရလဒ်ဖဌစ်သည်။

ရလဒ်အနေဖဌင့်၊ ကျလန်ုပ်တို့သည် အောက်ပါဆုံသဖဌတ်ချက်ကို ရရဟိခဲ့ပါသည်။

  • ကျလန်ုပ်တို့တလင် 360 gigabyte disk မျာသပါရဟိသော 700 data node မျာသရဟိသည်။
  • ကတူညီသောဒေတာ node မျာသမဟတဆင့်လမ်သကဌောင်သလမ်သကဌောင်သအတလက်ညဟိနဟိုင်သရေသမဟူသ 60 ။
  • 40 မတိုင်မီ ဗာသရဟင်သမျာသ မတိုင်မီကတည်သက ကျလန်ုပ်တို့ ချန်ထာသခဲ့သော အမလေအနဟစ်တစ်မျိုသဖဌစ်သည့် သခင် 6.4.0 သည် - ဒေတာစင်တာမဟ နုတ်ထလက်ခဌင်သမဟ ရဟင်သန်နိုင်ရန်၊ သခင်မျာသအထမဌောက်ကဌောင်သ အာမခံရန်အတလက်ပင် စက်မျာသစလာကို ဆုံသရဟုံသရန် စိတ်ပိုင်သဆိုင်ရာ ပဌင်ဆင်ထာသခဲ့သည်။ အဆိုသဆုံသအခဌေအနေ
  • ကလန်တိန်နာတစ်ခုပေါ်ရဟိ အခန်သကဏ္ဍမျာသကို ပေါင်သစပ်ရန် ကဌိုသပမ်သမဟုတိုင်သသည် မျာသမကဌာမီ သို့မဟုတ် နောက်ပိုင်သတလင် node သည် load အောက်သို့ ပျက်သလာသလိမ့်မည်ဟူသောအချက်နဟင့် ကိုက်ညီပါသည်။
  • အစုအဝေသတစ်ခုလုံသသည် 31 ဂစ်ဂါဘိုက်၏ heap.size ကိုအသုံသပဌုသည်- အရလယ်အစာသကို လျဟော့ချရန် ကဌိုသပမ်သမဟုမျာသအာသလုံသသည် အကဌီသစာသရဟာဖလေမဟုမေသခလန်သမျာသတလင် ညသဆောင်သော wildcard ဖဌင့် သို့မဟုတ် Elasticsearch ကိုယ်တိုင်၌ circuit breaker ကို ရယူခဌင်သဖဌင့် အချို့သော node မျာသကို သတ်ပစ်နိုင်သည်။
  • ထို့အပဌင်၊ ရဟာဖလေမဟုစလမ်သဆောင်ရည်သေချာစေရန်၊ ကျလန်ုပ်တို့သည် မာစတာတလင်ရဟိသော ပိတ်ဆို့မဟုအတလင်သ ဖဌစ်နိုင်သမျဟအနည်သငယ်သောဖဌစ်ရပ်မျာသကို လုပ်ဆောင်ရန်အတလက် အစုအဝေသရဟိ အရာဝတ္ထုအရေအတလက်ကို တတ်နိုင်သမျဟ သေသငယ်အောင်ထာသရန် ကဌိုသစာသခဲ့သည်။

နောက်ဆုံသအနေနဲ့ စောင့်ကဌည့်မဟုအကဌောင်သ

ကအရာအာသလုံသသည် ရည်ရလယ်ထာသသည့်အတိုင်သ အလုပ်လုပ်ကဌောင်သ သေချာစေရန်၊ ကျလန်ုပ်တို့သည် အောက်ပါတို့ကို စောင့်ကဌည့်ပါ-

  • ဒေတာ node တစ်ခုစီသည် ကျလန်ုပ်တို့၏ cloud တလင် ရဟိနေကဌောင်သ အစီရင်ခံသည်၊ ၎င်သတလင် ထိုသို့သော အပိုင်သမျာသရဟိသည်။ တစ်စုံတစ်ခုကို ကျလန်ုပ်တို့ ငဌိမ်သသတ်လိုက်သောအခါ၊ အစုအဖလဲ့သည် အလယ်ဗဟို A တလင် ကျလန်ုပ်တို့သည် အမဟတ် 2၊ 3 နဟင့် 2 တို့ကို ငဌိမ်သသတ်လိုက်ကဌောင်သ 3-4 စက္ကန့်အကဌာတလင် အစီရင်ခံသည် - ဆိုလိုသည်မဟာ အခဌာသဒေတာစင်တာမျာသတလင် ကျလန်ုပ်တို့သည် မည်သည့်အခဌေအနေမျိုသတလင်မျဟ shard တစ်ခုတည်သသာရဟိသော အဆိုပါ node မျာသကို ငဌိမ်သသတ်နိုင်မည်မဟုတ်ပေ။ ဝဲ။
  • သခင်၏ အပဌုအမူ၏ သဘောသဘာဝကို သိရဟိခဌင်သဖဌင့် ဆိုင်သငံ့ထာသသော အလုပ်အရေအတလက်ကို အလလန်ဂရုတစိုက် ကဌည့်ရဟုပါသည်။ အဘယ်ကဌောင့်ဆိုသော် အလုပ်တစ်ခုသည် အချိန်မီမကုန်ဆုံသပါက၊ အချို့သော အရေသပေါ်အခဌေအနေမျာသတလင် သီအိုရီအရ၊ ဥပမာအာသဖဌင့်၊ မူလတလင် ပုံစံတူ shard တစ်ခုကို မဌဟင့်တင်ခဌင်သသည် အလုပ်မလုပ်သောကဌောင့်၊ ထို့ကဌောင့် indexing သည် အလုပ်မလုပ်တော့ပေ။
  • ကျလန်ုပ်တို့သည် အမဟိုက်စုဆောင်သသူမျာသ၏ နဟောင့်နဟေသမဟုမျာသကိုလည်သ အလလန်အနီသကပ်ကဌည့်ရဟုနေပါသည်။
  • ပိတ်ဆို့နေသည့်နေရာကို ကဌိုတင်နာသလည်ရန် ကဌိုသဖဌင့် ငဌင်သပယ်သည်။
  • ကောင်သပဌီ၊ မဌေပုံ၊ RAM နဟင့် I/O ကဲ့သို့သော စံသတ်မဟတ်ချက်မျာသ။

အဆောက်အအုံကို စောင့်ကဌည့်သည့်အခါ၊ Elasticsearch ရဟိ Thread Pool ၏အင်္ဂါရပ်မျာသကို ထည့်သလင်သစဉ်သစာသရပါမည်။ Elasticsearch စာရလက်စာတမ်သ ရဟာဖလေခဌင်သနဟင့် အညလဟန်သပဌုလုပ်ခဌင်သအတလက် ပုံသေရလေသချယ်မဟုမျာသနဟင့် ပုံသေတန်ဖိုသမျာသကို ဖော်ပဌသော်လည်သ thread_pool.management နဟင့် ပတ်သက်၍ လုံသဝ နဟုတ်ဆိတ်နေပါသည်။ အထူသသဖဌင့် ကအကဌောင်သအရာမျာသသည် စောင့်ကဌည့်ရေသရေသသာသရာတလင် အသုံသပဌုရအဆင်ပဌေသည့် _cat/shards နဟင့် အခဌာသအလာသတူမေသခလန်သမျာသကဲ့သို့ လုပ်ငန်သစဉ်မျာသဖဌစ်သည်။ အစုအဝေသကဌီသလေ၊ ထိုသို့သောတောင်သဆိုမဟုမျာသကို အချိန်ယူနစ်တစ်ခုစီတလင် လုပ်ဆောင်လေလေ၊ အထက်ဖော်ပဌပါ thread_pool.management သည် တရာသဝင်စာရလက်စာတမ်သတလင် ဖော်ပဌရုံသာမကဘဲ ပုံမဟန်အာသဖဌင့် 5 threads ကိုပါ ကန့်သတ်ထာသသည်၊ ၎င်သကို အလလန်လျင်မဌန်စလာဖယ်ရဟာသပဌီသနောက်၊ မည်သည့်စောင့်ကဌည့်မဟု မဟန်ကန်စလာ အလုပ်မလုပ်တော့ပါ။

နိဂုံသချုပ်အနေနဲ့ပဌောချင်တာက ငါတို့လုပ်ခဲ့တာ။ ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ ပရိုဂရမ်မာမျာသနဟင့် ဆော့ဖ်ဝဲရေသသာသသူမျာသကို မည်သည့်အခဌေအနေမျိုသတလင်မဆို ထုတ်လုပ်မဟုတလင် ဖဌစ်ပျက်နေသည်နဟင့်ပတ်သက်သည့် အချက်အလက်မျာသကို လျင်မဌန်စလာ ယုံကဌည်စိတ်ချစလာ ပေသစလမ်သနိုင်သည့် ကိရိယာတစ်ခု ပေသစလမ်သနိုင်ခဲ့ပါသည်။

ဟုတ်တယ်၊ အဲဒါက အတော်လေသ ရဟုပ်ထလေသလာပေမယ့်၊ ဘယ်လိုပဲဖဌစ်ဖဌစ်၊ ကျလန်ုပ်တို့ဟာ ကိုယ့်အတလက် ဖာထေသပဌီသ ပဌန်ရေသစရာမလိုဘဲ ရဟိပဌီသသာသ ထုတ်ကုန်တလေနဲ့ ကိုက်ညီအောင် စီမံထာသပါတယ်။

Elasticsearch အစုအဝေသ 200 TB+

source: www.habr.com

မဟတ်ချက် Add