ကောင်စစ်ဝန်၏ဥပမာကို အသုံးပြု၍ ဖြန့်ဝေသည့်စနစ်များတွင် ဝန်ဆောင်မှုရှာဖွေခြင်း Alexander Sigachev

ဥပမာအနေနဲ့ Consul ကိုအသုံးပြုပြီး ဖြန့်ဝေတဲ့စနစ်တွေမှာ Alexander Sigachev ရဲ့ Service Discovery ရဲ့ မှတ်တမ်းကို ဖတ်ကြည့်ဖို့ အကြံပြုချင်ပါတယ်။

ဝန်ဆောင်မှု Discovery ကို အနည်းဆုံး ကုန်ကျစရိတ်ဖြင့် ကျွန်ုပ်တို့၏ ရှိရင်းစွဲ ပတ်ဝန်းကျင်သို့ အက်ပ်အသစ်တစ်ခု ချိတ်ဆက်နိုင်စေရန် ဖန်တီးထားပါသည်။ Service Discovery ကိုအသုံးပြုခြင်းဖြင့်၊ ကျွန်ုပ်တို့သည် docker container သို့မဟုတ် ၎င်းကိုလည်ပတ်နေသည့်ပတ်ဝန်းကျင်နှင့် virtual service တို့ကို ခွဲခြားနိုင်သည်။

လူတိုင်းကို ကြိုဆိုပါတယ်။ ကျွန်တော်က Alexander Sigachev ဖြစ်ပြီး Inventos မှာ အလုပ်လုပ်ပါတယ်။ ဒီနေ့မှာတော့ Service Discovery ဆိုတဲ့ သဘောတရားကို မိတ်ဆက်ပေးလိုက်ပါတယ်။ ဥပမာအနေနဲ့ Consul ကိုအသုံးပြုပြီး Service Discovery ကိုကြည့်ရအောင်။

ကောင်စစ်ဝန်၏ဥပမာကို အသုံးပြု၍ ဖြန့်ဝေသည့်စနစ်များတွင် ဝန်ဆောင်မှုရှာဖွေခြင်း Alexander Sigachev

Service Discovery သည် မည်သည့်ပြဿနာများကို ဖြေရှင်းပေးသနည်း။ ဝန်ဆောင်မှု Discovery ကို အနည်းဆုံး ကုန်ကျစရိတ်ဖြင့် ကျွန်ုပ်တို့၏ ရှိရင်းစွဲ ပတ်ဝန်းကျင်သို့ အက်ပ်အသစ်တစ်ခု ချိတ်ဆက်နိုင်စေရန် ဖန်တီးထားပါသည်။ Service Discovery ကိုအသုံးပြုခြင်းဖြင့်၊ ကျွန်ုပ်တို့သည် docker container သို့မဟုတ် ၎င်းကိုလည်ပတ်နေသည့်ပတ်ဝန်းကျင်နှင့် virtual service တို့ကို ခွဲခြားနိုင်သည်။

ဘယ်လိုပုံလဲ။ ဝဘ်ပေါ်ရှိ ဂန္တဝင်နမူနာတစ်ခုတွင်၊ ၎င်းသည် သုံးစွဲသူ၏တောင်းဆိုချက်ကို လက်ခံသည့် ရှေ့ဆုံးဖြစ်သည်။ ထို့နောက် ၎င်းကို backend သို့ ပို့ဆောင်ပေးသည်။ ဤဥပမာတွင်၊ ဤ load-balancer သည် backend နှစ်ခုကို ချိန်ညှိပေးသည်။

ကောင်စစ်ဝန်၏ဥပမာကို အသုံးပြု၍ ဖြန့်ဝေသည့်စနစ်များတွင် ဝန်ဆောင်မှုရှာဖွေခြင်း Alexander Sigachev

ဤနေရာတွင် ကျွန်ုပ်တို့သည် အပလီကေးရှင်း၏တတိယဥပမာကို စတင်လုပ်ဆောင်နေကြောင်း ကျွန်ုပ်တို့တွေ့မြင်ရပါသည်။ ထို့ကြောင့်၊ လျှောက်လွှာစတင်သောအခါ၊ ၎င်းသည် Service Discovery တွင်မှတ်ပုံတင်သည်။ ဝန်ဆောင်မှု Discovery သည် load-balancer ကို အသိပေးသည်။ Load-balancer သည် ၎င်း၏ config ကို အလိုအလျောက် ပြောင်းလဲပြီး backend အသစ်ကို လည်ပတ်စေသည်။ ဤနည်းအားဖြင့် backend များကို ထည့်နိုင်သည်၊ သို့မဟုတ် အပြန်အလှန်အားဖြင့် အလုပ်မှ ဖယ်ထုတ်နိုင်သည်။

ကောင်စစ်ဝန်၏ဥပမာကို အသုံးပြု၍ ဖြန့်ဝေသည့်စနစ်များတွင် ဝန်ဆောင်မှုရှာဖွေခြင်း Alexander Sigachev

Service Discovery နဲ့ လုပ်ဖို့ အဆင်ပြေမယ့် တခြားဘာတွေရှိလဲ။ ဝန်ဆောင်မှု Discovery သည် nginx configs၊ လက်မှတ်များနှင့် လက်ရှိ backend ဆာဗာများစာရင်းကို သိမ်းဆည်းနိုင်သည်။

ကောင်စစ်ဝန်၏ဥပမာကို အသုံးပြု၍ ဖြန့်ဝေသည့်စနစ်များတွင် ဝန်ဆောင်မှုရှာဖွေခြင်း Alexander SigachevService Discovery သည် သင့်အား ကျရှုံးမှုများကို ရှာဖွေနိုင်ပြီး ကျရှုံးမှုများကို ရှာဖွေနိုင်စေပါသည်။ ပျက်ကွက်မှုများကို ဖော်ထုတ်ရန် ဖြစ်နိုင်သည့် အစီအမံများကား အဘယ်နည်း။

  • ကျွန်ုပ်တို့တီထွင်ထားသော ဤအပလီကေးရှင်းသည် Service Discovery သည် အလုပ်လုပ်နေဆဲဖြစ်ကြောင်း အလိုအလျောက် အသိပေးပါသည်။
  • Service Discovery သည် ၎င်း၏ အစိတ်အပိုင်းအတွက် ရရှိနိုင်မှုအတွက် အပလီကေးရှင်းကို စစ်တမ်းကောက်ယူသည်။
  • သို့မဟုတ် ကျွန်ုပ်တို့သည် ကျွန်ုပ်တို့၏အပလီကေးရှင်းကိုရရှိနိုင်မှုကိုစစ်ဆေးပြီးအရာအားလုံးအဆင်ပြေပြီးအလုပ်လုပ်နိုင်သည်ဟု Service Discovery ကိုအသိပေးသည့်ပြင်ပကုမ္ပဏီ script သို့မဟုတ် အက်ပ်လီကေးရှင်းကိုအသုံးပြုပြီးအရာအားလုံးသည်မကောင်းကြောင်းနှင့်ဤအပလီကေးရှင်း၏ဥပမာအား ချိန်ခွင်လျှာညှိခြင်းမှဖယ်ထုတ်ရန်လိုအပ်ပါသည်။

အစီအစဥ်တစ်ခုစီကို ကျွန်ုပ်တို့အသုံးပြုသည့်ဆော့ဖ်ဝဲလ်ပေါ်မူတည်၍ အသုံးပြုနိုင်သည်။ ဥပမာအားဖြင့်၊ ကျွန်ုပ်တို့သည် ပရောဂျက်အသစ်တစ်ခုကို စတင်တည်ဆောက်နေပြီဖြစ်ပြီး၊ ထို့နောက် ကျွန်ုပ်တို့၏အက်ပ်လီကေးရှင်းမှ Service Discovery ကိုအကြောင်းကြားသောအခါတွင် အစီအစဥ်တစ်ခုကို အလွယ်တကူပေးဆောင်နိုင်ပါသည်။ ဒါမှမဟုတ် Service Discovery က စစ်ဆေးနေတယ်ဆိုတာကို ချိတ်ဆက်နိုင်ပါတယ်။

အကယ်၍ ကျွန်ုပ်တို့သည် အပလီကေးရှင်းကို အမွေဆက်ခံခြင်း သို့မဟုတ် အခြားသူတစ်ဦးမှ ဖန်တီးထားခြင်းဖြစ်ပါက၊ ကျွန်ုပ်တို့သည် ကိုင်တွယ်သူအား ရေးသားသည့်အခါ တတိယရွေးချယ်မှုသည် သင့်လျော်ပြီး ၎င်းအားလုံးသည် ကျွန်ုပ်တို့၏လုပ်ငန်းထဲသို့ အလိုအလျောက်ရောက်ရှိလာပါသည်။

ကောင်စစ်ဝန်၏ဥပမာကို အသုံးပြု၍ ဖြန့်ဝေသည့်စနစ်များတွင် ဝန်ဆောင်မှုရှာဖွေခြင်း Alexander Sigachev

ဒါက ဥပမာတစ်ခုပါ။ nginx ပုံစံဖြင့် Load-balancer ကို ပြန်လည်စတင်သည်။ ၎င်းသည် Consul မှပေးဆောင်ထားသော ရွေးချယ်နိုင်သော အသုံးဝင်မှုတစ်ခုဖြစ်သည်။ ဤသည်မှာ ကောင်စစ်ဝန်ပုံစံဖြစ်သည်။ စည်းကမ်းချက်ကို ဖော်ပြပါသည်။ ကျွန်ုပ်တို့သည် ပုံစံပလိတ် (Golang Template Engine) ကို အသုံးပြုနေသည်ဟု ဆိုပါသည်။ အဖြစ်အပျက်များ ဖြစ်ပေါ်လာသည့်အခါ၊ အပြောင်းအလဲများ ဖြစ်ပေါ်လာသည့်အခါ၊ ၎င်းကို ပြန်လည်ထုတ်ပေးပြီး "ပြန်လည်စတင်ခြင်း" အမိန့်ကို Service Discovery သို့ ပေးပို့ပါသည်။ အရိုးရှင်းဆုံးဥပမာမှာ nginx ကို ဖြစ်ရပ်တစ်ခုက ပြန်လည်ပြင်ဆင်ပြီး ပြန်လည်စတင်သည့်အခါ ဖြစ်သည်။

ကောင်စစ်ဝန်၏ဥပမာကို အသုံးပြု၍ ဖြန့်ဝေသည့်စနစ်များတွင် ဝန်ဆောင်မှုရှာဖွေခြင်း Alexander Sigachev

Consul ဆိုတာ ဘာလဲ။

  • ပထမဆုံးအနေနဲ့ ဒါက Service Discovery ဖြစ်ပါတယ်။

  • ၎င်းတွင်ရရှိနိုင်မှုစစ်ဆေးခြင်းယန္တရား - ကျန်းမာရေးစစ်ဆေးခြင်း။

  • KV Store လည်းရှိပါတယ်။

  • ၎င်းသည် Multi Datacenter အသုံးပြုနိုင်စွမ်းအပေါ်အခြေခံသည်။

ဒါတွေအားလုံးက ဘာအတွက်သုံးနိုင်မလဲ။ KV Store တွင် ဥပမာ configs များကို သိမ်းဆည်းနိုင်သည်။ ကျန်းမာရေးစစ်ဆေးခြင်းကို ကျွန်ုပ်တို့သည် ဒေသဆိုင်ရာဝန်ဆောင်မှုနှင့် အကြောင်းကြားနိုင်သည်။ ဝန်ဆောင်မှုမြေပုံတစ်ခုတည်ဆောက်နိုင်စေရန် Multi Datacenter ကိုအသုံးပြုသည်။ ဥပမာအားဖြင့်၊ Amazon တွင် ဒေသန္တရအသွားအလာမှ သီးခြားကောက်ခံသည့်ဒေတာစင်တာများကြားတွင် မလိုအပ်သောတောင်းဆိုမှုများမရှိစေရန် အကောင်းဆုံးနည်းလမ်းဖြင့် ဇုန်များနှင့်လမ်းကြောင်းများ အများအပြားရှိပြီး လမ်းကြောင်းများရှိသည်။

ကောင်စစ်ဝန်၏ဥပမာကို အသုံးပြု၍ ဖြန့်ဝေသည့်စနစ်များတွင် ဝန်ဆောင်မှုရှာဖွေခြင်း Alexander Sigachev

Consul မှာသုံးတဲ့ အသုံးအနှုန်းတွေအကြောင်း နည်းနည်းနားလည်ရအောင်။

  • ကောင်စစ်ဝန်သည် Go တွင်ရေးထားသောဝန်ဆောင်မှုတစ်ခုဖြစ်သည်။ Go ပရိုဂရမ်၏ အားသာချက်များထဲမှတစ်ခုမှာ သင်ဒေါင်းလုဒ်လုပ်ထားသည့် binary ဖိုင် 1 ခုဖြစ်သည်။ မည်သည့်နေရာမှ စတင်ခဲ့ပြီး သင့်တွင် မည်သည့်မှီခိုမှုမှ မရှိပါ။
  • ထို့နောက် သော့များကိုအသုံးပြု၍ ဤဝန်ဆောင်မှုကို client မုဒ်တွင်ဖြစ်စေ ဆာဗာမုဒ်တွင်ဖြစ်စေ ကျွန်ုပ်တို့ စတင်နိုင်ပါသည်။
  • ထို့အပြင်၊ "ဒေတာစင်တာ" ရည်ညွှန်းချက်သည် သင့်အား ဤဆာဗာပိုင်ဆိုင်သည့် ဒေတာစင်တာကို အလံတစ်ခု သတ်မှတ်ခွင့်ပြုသည်။
  • သဘောတူညီမှု - ဖောင်ပရိုတိုကောအပေါ် အခြေခံသည်။ စိတ်ဝင်စားတယ်ဆိုရင်တော့ Consul website မှာ ဒီအကြောင်း အသေးစိတ်ကို ဖတ်ရှုနိုင်ပါတယ်။ ၎င်းသည် ခေါင်းဆောင်ကို ဆုံးဖြတ်ရန်နှင့် မည်သည့်ငွေကို တရားဝင်ရနိုင်သည်ဟု ယူဆကြောင်း ဆုံးဖြတ်ရန် ခွင့်ပြုသည့် ပရိုတိုကောတစ်ခုဖြစ်သည်။
  • Gossip သည် node များကြား အပြန်အလှန်ဆက်သွယ်မှုကို လုပ်ဆောင်နိုင်သည့် ပရိုတိုကောတစ်ခုဖြစ်သည်။ ထို့အပြင်၊ ဤစနစ်သည် ဗဟိုချုပ်ကိုင်မှု လျှော့ချထားသည်။ ဒေတာစင်တာတစ်ခုအတွင်း၊ node အားလုံးသည် ၎င်းတို့၏အိမ်နီးနားချင်းများနှင့် ဆက်သွယ်သည်။ ထို့ကြောင့် လက်ရှိအခြေအနေနှင့် ပတ်သက်သည့် သတင်းအချက် အလတ်များကို အပြန်အလှန် ပေးပို့ကြသည်။ ဒါက အိမ်နီးချင်းတွေကြားမှာ အတင်းအဖျင်းပြောလို့ရတယ်။
  • LAN Gossip – တူညီသောဒေတာစင်တာအတွင်း အိမ်နီးချင်းများအကြား ဒေသတွင်းဒေတာဖလှယ်ခြင်း။
  • WAN Gossip - ဒေတာစင်တာနှစ်ခုကြားရှိ အချက်အလက်များကို တစ်ပြိုင်တည်းလုပ်ဆောင်ရန် လိုအပ်သောအခါတွင် အသုံးပြုသည်။ ဆာဗာတစ်ခုအဖြစ် အမှတ်အသားပြုထားသော node များကြားတွင် အချက်အလက်စီးဆင်းသည်။
  • RPC – ဆာဗာပေါ်ရှိ client မှတဆင့် တောင်းဆိုမှုများကို လုပ်ဆောင်နိုင်စေပါသည်။

RPC ၏ ရှင်းလင်းချက် Consul သည် virtual machine သို့မဟုတ် physical server ပေါ်တွင် client အဖြစ် လုပ်ဆောင်နေသည် ဆိုကြပါစို့။ သူ့ကို ပြည်တွင်းမှာ ဆက်သွယ်တယ်။ ထို့နောက် ပြည်တွင်းဖောက်သည်သည် ဆာဗာမှ အချက်အလက်များကို တောင်းဆိုပြီး ထပ်တူပြုပါသည်။ ဆက်တင်များအပေါ်မူတည်၍ အချက်အလက်များကို local cache မှ ပြန်လည်ရယူနိုင်သည် သို့မဟုတ် ဆာဗာမာစတာဖြင့် ခေါင်းဆောင်နှင့် ထပ်တူပြုနိုင်သည်။

ဤအစီအစဥ်နှစ်ခုစလုံးတွင် ကောင်းကျိုးနှင့် ဆိုးကျိုးများရှိသည်။ local cache နဲ့အလုပ်လုပ်ရင် မြန်တယ်။ ကျွန်ုပ်တို့သည် ဆာဗာတွင် သိမ်းဆည်းထားသည့် ဒေတာဖြင့် လုပ်ဆောင်ပါက အချိန်ပိုကြာသော်လည်း ပိုမိုသက်ဆိုင်သော အချက်အလက်များကို ကျွန်ုပ်တို့ ရရှိပါသည်။

ကောင်စစ်ဝန်၏ဥပမာကို အသုံးပြု၍ ဖြန့်ဝေသည့်စနစ်များတွင် ဝန်ဆောင်မှုရှာဖွေခြင်း Alexander Sigachev

ဒါကို ဂရပ်ဖစ်နဲ့ ပုံဖော်ရင် ဒါက ဆိုက်ရဲ့ ပုံပါ။ ငါတို့မှာ သခင်သုံးယောက် ပြေးနေတာကို ငါတို့တွေ့တယ်။ တစ်ခုတွင် ခေါင်းဆောင်အဖြစ် ခရေပွင့်ဖြင့် အမှတ်အသားပြုထားသည်။ ဤဥပမာတွင်၊ UDP/TCP မှတစ်ဆင့် ပြည်တွင်း၌ အချင်းချင်း သတင်းအချက်အလက်ဖလှယ်သည့် client သုံးခုရှိသည်။ ဒေတာစင်တာများအကြား အချက်အလက်များကို ဆာဗာများအကြား လွှဲပြောင်းပေးသည်။ ဤတွင် ဖောက်သည်များသည် ဒေသအလိုက် အပြန်အလှန် ဆက်ဆံကြသည်။

ကောင်စစ်ဝန်၏ဥပမာကို အသုံးပြု၍ ဖြန့်ဝေသည့်စနစ်များတွင် ဝန်ဆောင်မှုရှာဖွေခြင်း Alexander Sigachev

ဘယ် API ကို Consul ကပေးတာလဲ။ သတင်းအချက်အလက်ရယူရန်အတွက် ကောင်စစ်ဝန်တွင် API နှစ်မျိုးရှိသည်။

၎င်းသည် DNS API ဖြစ်သည်။ ပုံမှန်အားဖြင့်၊ Consul သည် port 8600 တွင်အလုပ်လုပ်သည်။ ကျွန်ုပ်တို့သည် တောင်းဆိုမှု proxying ကို configure လုပ်နိုင်ပြီး local resolution မှတဆင့်၊ local DNS မှတဆင့် access ကိုပေးနိုင်ပါသည်။ ကျွန်ုပ်တို့သည် ဒိုမိန်းဖြင့် စုံစမ်းမေးမြန်းနိုင်ပြီး IP လိပ်စာ အချက်အလက်ကို တုံ့ပြန်မှုဖြင့် လက်ခံရရှိနိုင်ပါသည်။

HTTP API - သို့မဟုတ် ကျွန်ုပ်တို့သည် ဆိပ်ကမ်း 8500 ရှိ သီးခြားဝန်ဆောင်မှုတစ်ခုအကြောင်း အချက်အလက်ကို ပြည်တွင်းတွင် တောင်းဆိုနိုင်ပြီး JSON တုံ့ပြန်မှု၊ ဆာဗာတွင် မည်သည့် IP ရှိကြောင်း၊ မည်သည့်အိမ်ရှင်၊ မည်သည့်ဆိပ်ကမ်းကို မှတ်ပုံတင်ထားသနည်း။ နှင့် အပိုအချက်အလက်များကို တိုကင်မှတဆင့် ကူးစက်နိုင်သည်။

ကောင်စစ်ဝန်၏ဥပမာကို အသုံးပြု၍ ဖြန့်ဝေသည့်စနစ်များတွင် ဝန်ဆောင်မှုရှာဖွေခြင်း Alexander Sigachev

Consul ကို run ဖို့ ဘာလိုလဲ?

ပထမရွေးချယ်မှုတွင်၊ ဆော့ဖ်ဝဲအင်ဂျင်နီယာမုဒ်တွင် ကျွန်ုပ်တို့သည် ဤသည်မှာ ဆော့ဖ်ဝဲအင်ဂျင်နီယာမုဒ်ဖြစ်သည်ဟူသော အလံကို ကျွန်ုပ်တို့ညွှန်ပြသည်။ အေးဂျင့်သည် ဆာဗာအဖြစ် စတင်သည်။ ၎င်းသည် စက်တစ်ခုတည်းတွင် လုပ်ဆောင်ချက်တစ်ခုလုံးကို သီးခြားလုပ်ဆောင်သည်။ သက်တောင့်သက်သာ၊ မြန်ဆန်ပြီး လက်တွေ့အားဖြင့် ပထမဆုံးစတင်ခြင်းအတွက် နောက်ထပ်ဆက်တင်များမလိုအပ်ပါ။

ဒုတိယမုဒ်ကို ထုတ်လုပ်မှုတွင် စတင်သည်။ ဤနေရာတွင် စတင်ခြင်းသည် အနည်းငယ် ရှုပ်ထွေးပါသည်။ အကယ်၍ ကျွန်ုပ်တို့တွင်ကောင်စစ်ဝန်၏ဗားရှင်းတစ်ခုမျှမရှိပါက၊ ခေါင်းဆောင်၏တာဝန်ကိုယူရမည့်ပထမစက်ကို bootstrap သို့ယူဆောင်လာရပါမည်။ ကျွန်ုပ်တို့သည် ၎င်းကို မြှင့်တင်ပြီးနောက် ဆာဗာ၏ ဒုတိယဥပမာကို မြှင့်တင်ကာ ကျွန်ုပ်တို့၏သခင်တည်ရှိရာနေရာကို သတင်းအချက်အလက်ပေးပို့သည်။ တတိယတစ်မျိုးကို ကျွန်တော်တို့ မြှင့်တင်ပါတယ်။ ကျွန်ုပ်တို့တွင် စက်သုံးစက်ရှိပြီးနောက်၊ လည်ပတ်နေသော bootstrap မှ ပထမစက်တွင် ၎င်းကို ပုံမှန်မုဒ်တွင် ပြန်လည်စတင်ပါ။ ဒေတာကို တစ်ပြိုင်တည်းလုပ်ဆောင်ပြီး ကနဦးအစုအဝေးသည် တက်လာပြီးဖြစ်သည်။

ဆာဗာမုဒ်တွင် ဖြစ်ရပ်သုံးခုမှ ခုနစ်ခုအထိ လုပ်ဆောင်ရန် အကြံပြုထားသည်။ ၎င်းမှာ ဆာဗာအရေအတွက် တိုးလာပါက ၎င်းတို့ကြားရှိ အချက်အလက်များကို ထပ်တူပြုရန် အချိန် တိုးလာခြင်းကြောင့် ဖြစ်သည်။ quorum ကိုသေချာစေရန် node အရေအတွက်သည် odd ဖြစ်ရပါမည်။

ကောင်စစ်ဝန်၏ဥပမာကို အသုံးပြု၍ ဖြန့်ဝေသည့်စနစ်များတွင် ဝန်ဆောင်မှုရှာဖွေခြင်း Alexander Sigachev

ကျန်းမာရေးစစ်ဆေးမှုများကို မည်သို့ဆောင်ရွက်ပေးသနည်း။ ကောင်စစ်ဝန်ဖွဲ့စည်းပုံလမ်းညွှန်တွင် Json ပုံစံဖြင့် အတည်ပြုခြင်းစည်းမျဉ်းကို ရေးပါသည်။ ပထမရွေးချယ်မှုမှာ ဤဥပမာတွင် google.com ဒိုမိန်း၏ ရရှိနိုင်မှုဖြစ်သည်။ ပြီးတော့ ဒီစစ်ဆေးမှုကို စက္ကန့် 30 အကွာအဝေးမှာ လုပ်ဆောင်ဖို့ လိုအပ်တယ်လို့ ကျွန်တော်တို့ ပြောထားပါတယ်။ ဤနည်းဖြင့် ကျွန်ုပ်တို့၏ node သည် ပြင်ပကွန်ရက်သို့ ဝင်ရောက်ခွင့်ရှိမရှိ စစ်ဆေးပါသည်။

ဒုတိယရွေးချယ်မှုသည် သင့်ကိုယ်သင် စစ်ဆေးရန်ဖြစ်သည်။ ကျွန်ုပ်တို့သည် သတ်မှတ်ထားသော port တွင် 10 စက္ကန့်ကြားကာလတွင် localhost ကိုခေါ်ဆိုရန် ပုံမှန် curl ကိုအသုံးပြုသည်။

ဤစစ်ဆေးမှုများကို အကျဉ်းချုပ်ပြီး Service Discovery သို့ ပေးပို့ပါသည်။ ရရှိနိုင်မှုအပေါ် အခြေခံ၍ ဤဆုံမှတ်များကို ဖယ်ထုတ်ထားသည် သို့မဟုတ် ရရှိနိုင်ပြီး မှန်ကန်စွာ အလုပ်လုပ်နိုင်သော စက်များစာရင်းတွင် ပေါ်လာပါသည်။

ကောင်စစ်ဝန်၏ဥပမာကို အသုံးပြု၍ ဖြန့်ဝေသည့်စနစ်များတွင် ဝန်ဆောင်မှုရှာဖွေခြင်း Alexander Sigachev

ကောင်စစ်ဝန်သည် သီးခြားအလံတစ်ခုဖြင့် စတင်ပြီး စက်ပေါ်တွင် ရရှိနိုင်မည့် UI interface ကိုလည်း ပံ့ပိုးပေးပါသည်။ ၎င်းသည် သင့်အား အချက်အလက်များကို ကြည့်ရှုနိုင်စေပြီး အပြောင်းအလဲအချို့ကိုလည်း ပြုလုပ်နိုင်သည်။

ဤဥပမာတွင်၊ "ဝန်ဆောင်မှု" တက်ဘ်ကိုဖွင့်ထားသည်။ ဝန်ဆောင်မှု သုံးခုကို လုပ်ဆောင်နေပြီး တစ်ခုမှာ ကောင်စစ်ဝန်ဖြစ်သည်။ စစ်ဆေးမှုအရေအတွက်။ စက်များတည်ရှိရာ ဒေတာစင်တာ သုံးခုရှိသည်။

ကောင်စစ်ဝန်၏ဥပမာကို အသုံးပြု၍ ဖြန့်ဝေသည့်စနစ်များတွင် ဝန်ဆောင်မှုရှာဖွေခြင်း Alexander Sigachev

ဤသည်မှာ Nodes tab ၏ ဥပမာတစ်ခုဖြစ်သည်။ ၎င်းတို့တွင် ဒေတာစင်တာများပါ၀င်သော ပေါင်းစပ်အမည်များရှိသည်ကို ကျွန်ုပ်တို့တွေ့မြင်ရပါသည်။ ၎င်းသည် မည်သည့်ဝန်ဆောင်မှုများ လုပ်ဆောင်နေကြောင်းကိုလည်း ပြသသည်၊ ဆိုလိုသည်မှာ မည်သည့် tags မျှ မသတ်မှတ်ထားကြောင်း ကျွန်ုပ်တို့တွေ့မြင်ရပါသည်။ ဤနောက်ထပ် တဂ်များသည် အပိုဆောင်းဘောင်များကို သတ်မှတ်ရန် ဆော့ဖ်ဝဲရေးသားသူ အသုံးပြုနိုင်သည့် အချက်အလက်အချို့ကို ပေးနိုင်ပါသည်။

disks ၏အခြေအနေနှင့် ပျမ်းမျှ load အကြောင်း အချက်အလက်များကို ကောင်စစ်ဝန်ထံ ပေးပို့နိုင်သည်။

မေးခွန်းများကို

မေးခွန်း- ကျွန်ုပ်တို့တွင် docker container တစ်ခုရှိပြီး Consul နှင့်မည်သို့အသုံးပြုရမည်နည်း။

အဖြေ- docker container အတွက် နည်းလမ်းများစွာ ရှိပါသည်။ အသုံးအများဆုံးတစ်ခုမှာ မှတ်ပုံတင်ခြင်းအတွက် တာဝန်ရှိသော Third-party docker container ကို အသုံးပြုခြင်းဖြစ်သည်။ စတင်ချိန်တွင်၊ docker socket ကို ၎င်းထံ ပေးပို့သည်။ ကွန်တိန်နာ မှတ်ပုံတင်ခြင်း နှင့် ထုတ်ဝေခြင်း ဖြစ်ရပ်များအားလုံးကို ကောင်စစ်ဝန်တွင် မှတ်တမ်းတင်ထားသည်။

မေးခွန်း- ဒါဆို ကောင်စစ်ဝန်ကိုယ်တိုင်က docker container ကိုစလား။

အဖြေ: မဟုတ်ဘူး ကျွန်ုပ်တို့သည် docker container တစ်ခုကို လုပ်ဆောင်နေပါသည်။ configure လုပ်သောအခါတွင်၊ ကျွန်ုပ်တို့ညွှန်ပြသည် - ထိုကဲ့သို့သော socket ကိုနားထောင်ပါ။ ၎င်းသည် ကျွန်ုပ်တို့၏နေရာတွင် နှင့် မည်သည့်အရာများအကြောင်း အချက်အလက်များကို အပ်လုဒ်လုပ်သောအခါတွင် ကျွန်ုပ်တို့သည် လက်မှတ်တစ်ခုနှင့် အလုပ်လုပ်ပုံနှင့် အနီးစပ်ဆုံး တူညီပါသည်။

မေးခွန်း- Service Discovery နှင့် ချိတ်ဆက်ရန် ကြိုးပမ်းနေသည့် Docker ကွန်တိန်နာအတွင်းတွင် ကောင်စစ်ဝန်ထံ ဒေတာပေးပို့နိုင်သည့် ယုတ္တိတစ်မျိုးမျိုး ရှိသင့်သည်။

အဖြေ - တကယ်မဟုတ်ဘူး။ ၎င်းစတင်သောအခါတွင်၊ ကျွန်ုပ်တို့သည် ပတ်၀န်းကျင်ပြောင်းလဲနိုင်သောကိန်းရှင်များမှတဆင့် ကိန်းရှင်များကိုဖြတ်သန်းပါသည်။ ဝန်ဆောင်မှုအမည်၊ ဝန်ဆောင်မှုဆိပ်ကမ်းကို ဆိုကြပါစို့။ မှတ်ပုံတင်သူသည် ဤအချက်အလက်ကို နားထောင်ပြီး ကောင်စစ်ဝန်ထံ ထည့်ပေးသည်။

မေးခွန်း- UI နဲ့ပတ်သက်တဲ့ နောက်ထပ်မေးခွန်းတစ်ခု ရှိပါသေးတယ်။ ဥပမာအားဖြင့်၊ ကျွန်ုပ်တို့သည် ထုတ်လုပ်ရေးဆာဗာတစ်ခုတွင် UI ကို ဖြန့်ကျက်ထားသည်။ လုံခြုံရေးကော။ ဒေတာကို ဘယ်မှာ သိမ်းထားသလဲ။ ဒေတာတွေကို တစ်နည်းနည်းနဲ့ စုဆောင်းဖို့ ဖြစ်နိုင်သလား။

အဖြေ- UI တွင် ဒေတာဘေ့စ်မှ ဒေတာနှင့် ဝန်ဆောင်မှုရှာဖွေတွေ့ရှိမှုမှ ဒေတာများ ရှိပါသည်။ ကျွန်ုပ်တို့သည် ဆက်တင်များတွင် စကားဝှက်များကို ကိုယ်တိုင်သတ်မှတ်ထားသည်။

မေးခွန်း- ၎င်းကို အင်တာနက်ပေါ်တွင် လွှင့်တင်နိုင်ပါသလား။

အဖြေ- မူရင်းအားဖြင့်၊ Consul သည် localhost တွင် စတင်သည်။ အင်တာနက်ပေါ်တွင် ထုတ်ဝေရန်၊ ပရောက်စီတစ်မျိုးမျိုး ထည့်သွင်းရန် လိုအပ်မည်ဖြစ်သည်။ ကျွန်ုပ်တို့သည် ကျွန်ုပ်တို့၏ကိုယ်ပိုင်လုံခြုံရေးစည်းမျဉ်းများအတွက် တာဝန်ရှိပါသည်။

မေးခွန်း- ၎င်းသည် ဘောက်စ်အတွင်းမှ သမိုင်းအချက်အလက်များကို ပေးဆောင်ပါသလား။ ကျန်းမာရေးစစ်ဆေးမှုဆိုင်ရာ ကိန်းဂဏန်းများကို ကြည့်ရှုရန် စိတ်ဝင်စားစရာကောင်းသည်။ ဆာဗာ မကြာခဏ ပျက်ကွက်ပါက ပြဿနာများကို အဖြေရှာနိုင်သည်။

အဖြေ - အဲဒီမှာ စစ်ဆေးမှုအသေးစိတ်တော့ မသိဘူး။

မေးခွန်း- လက်ရှိအခြေအနေသည် ဒိုင်းနမစ်ကဲ့သို့ အရေးမကြီးပါ။

အဖြေ- ခွဲခြမ်းစိတ်ဖြာမှုအတွက် - ဟုတ်ပါတယ်။

မေးခွန်း- Consul docker အတွက် Service Discovery ကို အသုံးမပြုတာ ပိုကောင်းပါတယ်။

အဖြေ: ငါအဲဒါကိုသုံးဖို့အကြံပြုလိုပါတယ်။ အစီရင်ခံစာ၏ ရည်ရွယ်ချက်မှာ ဤကဲ့သို့သော အယူအဆတစ်ခု ရှိနေသည်ကို မိတ်ဆက်ရန်ဖြစ်သည်။ သမိုင်းအရ၊ ကျွန်တော့်အမြင်အရတော့ 1st ဗားရှင်းအထိ ဖြစ်သွားတယ်။ ယခုတွင် ဤအရာအားလုံးကို ဘောင်အောက်တွင် ပါ၀င်သော၊ ဥပမာ Kubernetes၊ Kubernetes Service Discovery ၏ တစ်စိတ်တစ်ပိုင်းအနေဖြင့် Etcd ထက် ယုတ်ညံ့ပါသည်။ ဒါပေမယ့် ကျွန်တော်က Consul နဲ့ ရင်းနှီးတာ မဟုတ်ဘူး။ ထို့ကြောင့်၊ Consul ကို နမူနာအဖြစ် အသုံးပြု၍ Service Discovery ပြုလုပ်ရန် ဆုံးဖြတ်ခဲ့သည်။

မေးခွန်း- ခေါင်းဆောင်ဆာဗာပါရှိသော အစီအစဉ်သည် အပလီကေးရှင်းတစ်ခုလုံး၏စတင်မှုကို နှေးကွေးစေသည်မဟုတ်လော။ ကောင်စစ်ဝန်က ဒီလူလိမ်နေတယ်ဆိုရင် ခေါင်းဆောင်အသစ်ကို ဘယ်လိုဆုံးဖြတ်မလဲ။

အဖြေ- ၎င်းတို့တွင် ဖော်ပြထားသော ပရိုတိုကော အပြည့်အစုံရှိသည်။ စိတ်ဝင်စားရင် ဖတ်ကြည့်နိုင်ပါတယ်။

မေးခွန်း- ကောင်စစ်ဝန်သည် ကျွန်ုပ်တို့အတွက် ပြီးပြည့်စုံသော ဆာဗာတစ်ခုအဖြစ် လုပ်ဆောင်နေပြီး တောင်းဆိုချက်အားလုံးသည် ၎င်းကို ဖြတ်သန်းနေပါသလား။

အဖြေ- ၎င်းသည် ပြည့်စုံသောဆာဗာအဖြစ် လုပ်ဆောင်ခြင်းမရှိသော်လည်း သတ်သတ်မှတ်မှတ်ဇုန်တစ်ခုအပေါ်တွင် နေရာယူသည်။ ၎င်းသည် များသောအားဖြင့် service.consul ဖြင့် အဆုံးသတ်သည်။ ပြီးတော့ ငါတို့က ယုတ္တိကျကျနဲ့ ဆက်လျှောက်တယ်။ ကျွန်ုပ်တို့သည် ထုတ်လုပ်မှုတွင် ဒိုမိန်းအမည်များကို မသုံးသော်လည်း DNS ကို အသုံးပြု၍ လုပ်ဆောင်ပါက ဆာဗာ ကက်ရှ်၏ နောက်ကွယ်တွင် ဝှက်ထားလေ့ရှိသော စက်တွင်းအခြေခံအဆောက်အအုံဖြစ်သည်။

မေးခွန်း- အဲဒါက ဒေတာဘေ့စ်ကို ဝင်ကြည့်ချင်တယ်ဆိုရင်တော့ ဘယ်လိုပဲဖြစ်ဖြစ် ဒီဒေတာဘေ့စကို အရင်ရှာဖို့ ကောင်စစ်ဝန်ကို ဆွဲထုတ်မှာ မဟုတ်လား။

အဖြေ: ဟုတ်ကဲ့။ အကယ်၍ ကျွန်ုပ်တို့ DNS ကို အသုံးပြု၍ အလုပ်လုပ်ပါက DNS အမည်များကို အသုံးပြုသောအခါ Consul မပါဘဲ အလုပ်လုပ်သည်နှင့် အတူတူပင် ဖြစ်ပါသည်။ ပုံမှန်အားဖြင့်၊ ခေတ်မီအပလီကေးရှင်းများသည် တောင်းဆိုမှုတိုင်းတွင် ဒိုမိန်းအမည်ကို ဆွဲထုတ်ခြင်းမပြုရဘဲ၊ ကျွန်ုပ်တို့သည် ချိတ်ဆက်မှုကို ထည့်သွင်းထားသောကြောင့်၊ အရာအားလုံး အဆင်ပြေပြီး မဝေးတော့သောအနာဂတ်တွင် ၎င်းကို ကျွန်ုပ်တို့ လက်တွေ့ကျကျ အသုံးမပြုတော့ပါ။ ချိတ်ဆက်မှု ပြတ်တောက်သွားပါက ဟုတ်သည်၊ ကျွန်ုပ်တို့၏ အခြေစိုက်စခန်းသည် မည်သည့်နေရာတွင် ရှိသနည်းဟု ထပ်မံမေးမြန်းပြီး ၎င်းကို သွားပါ။

hashicorp ထုတ်ကုန် စကားပြောခန်း — Hashicorp အသုံးပြုသူ စကားပြောခန်း- ကောင်စစ်ဝန်၊ Nomad၊ Terraform

PS ကျန်းမာရေးစစ်ဆေးမှုများနှင့် ပတ်သက်. Kubernetes ကဲ့သို့ကောင်စစ်ဝန်သည် ကုဒ်အခြေအနေအပေါ်အခြေခံ၍ ဝန်ဆောင်မှုတစ်ခု၏ရှင်သန်နိုင်မှုအခြေအနေကိုစစ်ဆေးရန်အတွက်တူညီသောစနစ်ကိုအသုံးပြုသည်။

200 OK for healthy
503 Service Unavailable for unhealthy

သတင်းရင်းမြစ်:
https://www.consul.io/docs/agent/checks.html
https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/
https://thoslin.github.io/microservice-health-check-in-kubernetes/

source: www.habr.com

မှတ်ချက် Add