Netramesh - ပေါ့ပါသသောဝန်ဆောင်မဟုကလက်ဖဌေရဟင်သချက်

ကျလန်ုပ်တို့သည် monolithic အက်ပလီကေသရဟင်သမဟ microservices ဗိသုကာတစ်ခုသို့ ကူသပဌောင်သလာသည်နဟင့်အမျဟ၊ ကျလန်ုပ်တို့သည် စိန်ခေါ်မဟုအသစ်မျာသနဟင့် ရင်ဆိုင်ရသည်။

monolithic အပလီကေသရဟင်သတစ်ခုတလင်၊ အမဟာသအယလင်သဖဌစ်သလာသသောစနစ်၏အစိတ်အပိုင်သကိုဆုံသဖဌတ်ရန်အတော်လေသလလယ်ကူသည်။ အမျာသစုမဟာ ပဌဿနာမဟာ monolith ၏ code ထဲတလင် သို့မဟုတ် database တလင်ဖဌစ်သည်။ ဒါပေမယ့် မိုက်ခရိုဝန်ဆောင်မဟုဗိသုကာမဟာ ပဌဿနာတစ်ခုကို စရဟာတဲ့အခါ၊ အရာအာသလုံသက သိပ်မသိသာတော့ပါဘူသ။ တောင်သဆိုမဟု အစမဟ အဆုံသအထိ လုပ်ဆောင်ခဲ့သည့် လမ်သကဌောင်သတစ်ခုလုံသကို ရဟာဖလေပဌီသ ရာနဟင့်ချီသော microservices မျာသမဟ ၎င်သကို ရလေသချယ်ရန် လိုအပ်ပါသည်။ ထို့အပဌင်၊ ၎င်သတို့အမျာသစုတလင် ယုတ္တိအမဟာသမျာသအပဌင် စလမ်သဆောင်ရည်နဟင့် အမဟာသခံနိုင်ရည်ရဟိမဟုဆိုင်ရာ ပဌဿနာမျာသကိုလည်သ ဖဌစ်စေနိုင်သည့် ၎င်သတို့၏ ကိုယ်ပိုင်သိုလဟောင်မဟု အဆောက်အညမျာသလည်သ ရဟိပါသည်။

Netramesh - ပေါ့ပါသသောဝန်ဆောင်မဟုကလက်ဖဌေရဟင်သချက်

ဒီလိုပဌဿနာတလေကို ကိုင်တလယ်ဖဌေရဟင်သနိုင်မယ့် ကိရိယာတစ်ခုကို ကျလန်တော် ရဟာနေတာ ကဌာပါပဌီ (ဒီအကဌောင်သကို Habré မဟာ ရေသခဲ့တယ်- 1, 2) ဒါပေမယ့် နောက်ဆုံသမဟာတော့ ကျလန်တော်ဟာ ကိုယ်ပိုင် open source ဖဌေရဟင်သချက်ကို လုပ်ခဲ့တယ်။ ကဆောင်သပါသတလင် ကျလန်ုပ်သည် ဝန်ဆောင်မဟု mesh ချဉ်သကပ်မဟု၏ အကျိုသကျေသဇူသမျာသအကဌောင်သ ပဌောဆိုပဌီသ ၎င်သ၏ အကောင်အထည်ဖော်မဟုအတလက် ကိရိယာအသစ်တစ်ခုကို မျဟဝေပါသည်။

Distributed tracing သည် ဖဌန့်ဝေမဟုစနစ်မျာသတလင် အမဟာသအယလင်သမျာသကို ရဟာဖလေခဌင်သပဌဿနာအတလက် ဘုံဖဌေရဟင်သချက်တစ်ခုဖဌစ်သည်။ သို့သော် ကလန်ရက်အပဌန်အလဟန်ဆက်သလယ်မဟုမျာသအကဌောင်သ အချက်အလက်စုဆောင်သခဌင်သနည်သလမ်သကို စနစ်တလင် အကောင်အထည်မဖော်သေသပါက၊ သို့မဟုတ် ပိုဆိုသသည်မဟာ စနစ်၏တစ်စိတ်တစ်ပိုင်သတလင် ၎င်သသည် ကောင်သမလန်စလာအလုပ်လုပ်နေပဌီဖဌစ်သော်လည်သ တစ်စိတ်တစ်ပိုင်သအာသဖဌင့် ၎င်သသည် ဝန်ဆောင်မဟုအဟောင်သမျာသသို့ မထည့်ရသေသသောကဌောင့် ၎င်သသည် မည်သို့မျဟမဖဌစ်နိုင်ပါ။ ? ပဌဿနာတစ်ခု၏ အရင်သခံအကဌောင်သအရင်သအတိအကျကို ဆုံသဖဌတ်ရန်၊ စနစ်တလင်ဖဌစ်ပျက်နေသည့်အရာမျာသကို ပဌီသပဌည့်စုံသောပုံရဟိရန် လိုအပ်သည်။ စီသပလာသရေသအတလက် အရေသကဌီသသောလမ်သကဌောင်သမျာသတလင် မည်သည့် microservices မျာသ ပါဝင်နေသည်ကို နာသလည်ရန် အထူသအရေသကဌီသပါသည်။

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

ဆာသဗစ်ကလက်တလေ မျာသလာတယ်။

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

Netramesh - ပေါ့ပါသသောဝန်ဆောင်မဟုကလက်ဖဌေရဟင်သချက်

ဖဌေရဟင်သချက်

ကချဉ်သကပ်နည်သကို အကောင်အထည်ဖော်မဟုမျာသစလာ ရဟိနဟင့်ပဌီသဖဌစ်သည်။ Istio О linkerd2. ၎င်သတို့သည် ဘောက်စ်ပဌင်ပတလင် အင်္ဂါရပ်မျာသစလာကို ပံ့ပိုသပေသသည်။ သို့သော် တစ်ချိန်တည်သတလင် အရင်သအမဌစ်မျာသပေါ်တလင် ကဌီသမာသသော အကျုံသဝင်မဟု ရဟိလာပါသည်။ ထို့အပဌင်၊ ထိုသို့သောစနစ်လည်ပတ်သည့် အစုအဝေသကဌီသလေ၊ အခဌေခံအဆောက်အအုံသစ်ကို ထိန်သသိမ်သရန် အရင်သအမဌစ်မျာသ ပိုမိုလိုအပ်လာမည်ဖဌစ်သည်။ Avito တလင်၊ ကျလန်ုပ်တို့သည် ဝန်ဆောင်မဟု သာဓကမျာသ ထောင်နဟင့်ချီ ပါဝင်သော kubernetes အစုအဝေသမျာသကို လုပ်ဆောင်သည် (၎င်သတို့၏ အရေအတလက်သည် လျင်မဌန်စလာ တိုသလာသည်)။ ၎င်သ၏ လက်ရဟိအကောင်အထည်ဖော်မဟုတလင်၊ Istio သည် ဝန်ဆောင်မဟုတစ်ခုလျဟင် 300Mb RAM ကိုသုံသစလဲသည်။ ဖဌစ်နိုင်ခဌေ အမျာသအပဌာသကဌောင့်၊ ပလင့်လင်သသော ချိန်ခလင်လျဟာသည် ဝန်ဆောင်မဟုမျာသ၏ အလုံသစုံ တုံ့ပဌန်ချိန် (10ms အထိ) ကိုလည်သ သက်ရောက်မဟုရဟိပါသည်။

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

ထို့ကဌောင့် ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ ဆုံသဖဌတ်ချက်ကို ချမဟတ်ခဲ့သည်-  Netramesh.

Netramesh

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

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

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

ထလက်နိုင်ရေသ

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

ဘယ်လိုရလဒ်တလေ ရခဲ့လဲ ကဌည့်ရအောင်။

ရမ်

Netramesh သည် အသလာသအလာမရဟိဘဲ ~10Mb စာသသုံသပဌီသ 50Mb အမျာသဆုံသ 10000Mb ကို ဥပမာတစ်ခုလျဟင် XNUMX RPS အထိ သုံသစလဲသည်။

Istio အထူသကိုယ်စာသလဟယ်ပရောက်စီသည် သာဓကပေါင်သထောင်ပေါင်သမျာသစလာရဟိသော ကျလန်ုပ်တို့၏အစုအဝေသမျာသတလင် ~300Mb အမဌဲစာသသုံသသည်။ ၎င်သသည် ၎င်သအာသ အစုအဝေသတစ်ခုလုံသသို့ ချိန်ညဟိရန် ခလင့်မပဌုပါ။

Netramesh - ပေါ့ပါသသောဝန်ဆောင်မဟုကလက်ဖဌေရဟင်သချက်

Netramesh - ပေါ့ပါသသောဝန်ဆောင်မဟုကလက်ဖဌေရဟင်သချက်

Netramesh ဖဌင့် ကျလန်ုပ်တို့သည် မဟတ်ဉာဏ်သုံသစလဲမဟု ~ 10 ဆ လျဟော့ချနိုင်ခဲ့သည်။

စီပီယူ

CPU အသုံသပဌုမဟုသည် Load အောက်တလင် အတော်လေသ တူညီပါသည်။ ဆိုက်ကာသဆီသို့ အချိန်ယူနစ်တစ်ခုအတလက် တောင်သဆိုမဟုအရေအတလက်ပေါ်တလင် မူတည်သည်။ အမဌင့်ဆုံသတလင် တစ်စက္ကန့်လျဟင် တောင်သဆိုမဟု 3000 တလင် တန်ဖိုသမျာသ-

Netramesh - ပေါ့ပါသသောဝန်ဆောင်မဟုကလက်ဖဌေရဟင်သချက်

Netramesh - ပေါ့ပါသသောဝန်ဆောင်မဟုကလက်ဖဌေရဟင်သချက်

နောက်ထပ်အရေသကဌီသသောအချက်တစ်ချက်ရဟိပါသည်- Netramesh - ထိန်သချုပ်မဟုလေယာဉ်မပါဘဲဖဌေရဟင်သချက်နဟင့် load မပါဘဲ CPU အချိန်ကိုမစာသသုံသပါ။ Istio ဖဌင့် ဆိုက်ကာသမျာသသည် ဝန်ဆောင်မဟု အဆုံသမဟတ်မျာသကို အမဌဲတမ်သ အပ်ဒိတ်လုပ်ကဌသည်။ ရလဒ်အနေဖဌင့်၊ ကျလန်ုပ်တို့သည် ကပုံကို ဒေါင်သလုဒ်မပါဘဲ မဌင်နိုင်သည်-

Netramesh - ပေါ့ပါသသောဝန်ဆောင်မဟုကလက်ဖဌေရဟင်သချက်

ကျလန်ုပ်တို့သည် ဝန်ဆောင်မဟုမျာသကဌာသ ဆက်သလယ်ရေသအတလက် HTTP/1 ကို အသုံသပဌုပါသည်။ သံတမန်မဟတစ်ဆင့် proxying လုပ်သည့်အခါ Istio အတလက် တုံ့ပဌန်ချိန်တိုသလာမဟုသည် 5-10ms အထိရဟိပဌီသ၊ ၎င်သသည် မီလီစက္ကန့်အတလင်သ တုံ့ပဌန်ရန်အဆင်သင့်ဖဌစ်နေသော ဝန်ဆောင်မဟုမျာသအတလက် အလလန်မျာသပဌာသပါသည်။ Netramesh ဖဌင့် ကအချိန်သည် 0.5-2ms သို့ လျော့ကျသလာသသည်။

အပေါ်ယံ

proxy တစ်ခုစီမဟ သုံသစလဲသော အရင်သအမဌစ် အနည်သငယ်သည် ဝန်ဆောင်မဟု တစ်ခုစီ၏ ဘေသတလင် ထာသရဟိနိုင်စေသည်။ Netramesh သည် ဘေသတလဲကာသတိုင်သကို ပေါ့ပါသစေရန်အတလက် ထိန်သချုပ်မဟုလေယာဉ်အစိတ်အပိုင်သမပါဘဲ ရည်ရလယ်ချက်ရဟိရဟိ ဖန်တီသထာသသည်။ Service Mesh ဖဌေရဟင်သချက်မျာသတလင် မကဌာခဏဆိုသလို၊ ထိန်သချုပ်လေယာဉ်သည် ဝန်ဆောင်မဟုရဟာဖလေတလေ့ရဟိမဟု အချက်အလက်မျာသကို ဘေသတလဲကာသတစ်ခုစီသို့ ဖဌန့်ဝေပေသသည်။ ၎င်သနဟင့်အတူ အချိန်ကုန်မဟုမျာသနဟင့် ချိန်ခလင်လျဟာချိန်ညဟိခဌင်သဆိုင်ရာ ဆက်တင်မျာသအကဌောင်သ အချက်အလက်မျာသ ပါရဟိသည်။ ကအရာအာသလုံသသည် သင့်အာသ အသုံသဝင်သော အရာမျာသစလာကို လုပ်ဆောင်နိုင်စေသည်၊ သို့သော် ကံမကောင်သစလာဖဌင့်၊ ၎င်သသည် ဆိုက်ကာသမျာသကို အရလယ်အစာသကဌီသစေပါသည်။

ဝန်ဆောင်မဟုရဟာဖလေတလေ့ရဟိမဟု

Netramesh - ပေါ့ပါသသောဝန်ဆောင်မဟုကလက်ဖဌေရဟင်သချက်

Netramesh သည် ဝန်ဆောင်မဟုရဟာဖလေတလေ့ရဟိမဟုအတလက် နောက်ထပ်ယန္တရာသမျာသကို မထည့်ပါ။ ယာဉ်အသလာသအလာအာသလုံသကို netra sidecar မဟတဆင့် ပလင့်လင်သမဌင်သာစလာ ပို့ဆောင်ပေသပါသည်။

Netramesh သည် HTTP/1 အပလီကေသရဟင်သပရိုတိုကောကို ပံ့ပိုသပေသသည်။ ၎င်သကို သတ်မဟတ်ရန်၊ ပဌင်ဆင်နိုင်သော ဆိပ်ကမ်သမျာသစာရင်သကို အသုံသပဌုသည်။ ပုံမဟန်အာသဖဌင့်၊ စနစ်တလင် HTTP ဆက်သလယ်မဟုဖဌစ်ပေါ်သည့် port အမျာသအပဌာသရဟိသည်။ ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်တို့သည် ဝန်ဆောင်မဟုမျာသနဟင့် ပဌင်ပတောင်သဆိုမဟုမျာသကဌာသ အပဌန်အလဟန်အကျိုသသက်ရောက်မဟုအတလက် 80၊ 8890၊ 8080 ကိုအသုံသပဌုပါသည်။ ကကိစ္စတလင်၊ ၎င်သတို့ကို ပတ်ဝန်သကျင်ပဌောင်သလဲမဟုတစ်ခုအသုံသပဌု၍ သတ်မဟတ်နိုင်သည်။ NETRA_HTTP_PORTS.

အကယ်၍ သင်သည် Kubernetes ကို တီသမဟုတ်သူနဟင့် ဝန်ဆောင်မဟုမျာသကဌာသ အစုအဝေသအတလင်သ ဆက်သလယ်မဟု အတလက် ၎င်သ၏ ဝန်ဆောင်မဟု အဖလဲ့အစည်သ ယန္တရာသကို အသုံသပဌုပါက၊ ယန္တရာသသည် အတူတူပင် ဖဌစ်သည်။ ပထမညသစလာ၊ microservice သည် kube-dns ကို အသုံသပဌု၍ ဝန်ဆောင်မဟု IP လိပ်စာကို ရယူပဌီသ ၎င်သနဟင့်ချိတ်ဆက်မဟုအသစ်ကို ဖလင့်ပေသသည်။ ကချိတ်ဆက်မဟုကို ဒေသခံ netra-sidecar ဖဌင့် ပထမဆုံသတည်ဆောက်ထာသပဌီသ TCP ပက်ကေ့ခ်ျအာသလုံသသည် ကနညသတလင် netra သို့ ရောက်ရဟိသည်။ ထို့နောက်၊ netra-sidecar သည် မူလညသတည်ရာနဟင့် ချိတ်ဆက်မဟုတစ်ခုကို တည်ဆောက်သည်။ node ပေါ်ရဟိ pod IP ပေါ်ရဟိ NAT သည် netra မပါဘဲနဟင့် အတိအကျတူညီနေပါသည်။

ဖဌန့်ဝေထာသသော ခဌေရာခံခဌင်သနဟင့် အကဌောင်သအရာ ထပ်ဆင့်ပို့ခဌင်သ။

Netramesh သည် HTTP အပဌန်အလဟန်တုံ့ပဌန်မဟုမျာသအကဌောင်သ ခဌေရာခံခဌင်သအပိုင်သမျာသကို ပေသပို့ရန် လိုအပ်သောလုပ်ဆောင်နိုင်စလမ်သကို ပေသသည်။ Netra-sidecar သည် HTTP ပရိုတိုကောကို ခလဲခဌမ်သစိတ်ဖဌာပဌီသ၊ တောင်သဆိုမဟုနဟောင့်နဟေသမဟုမျာသကို တိုင်သတာပဌီသ HTTP ခေါင်သစီသမျာသမဟ လိုအပ်သော အချက်အလက်မျာသကို ထုတ်ယူသည်။ နောက်ဆုံသတလင်၊ Jaeger စနစ်တစ်ခုတည်သတလင် ခဌေရာမျာသအာသလုံသကို ကျလန်ုပ်တို့ရရဟိမည်ဖဌစ်သည်။ အနုစိတ်ဖလဲ့စည်သပုံအတလက်၊ တရာသဝင်စာကဌည့်တိုက်မဟ ပံ့ပိုသပေသထာသသော ပတ်ဝန်သကျင်ပဌောင်သလလဲချက်မျာသကိုလည်သ အသုံသပဌုနိုင်သည်။ jaeger စာကဌည့်တိုက်သလာသပါ။.

Netramesh - ပေါ့ပါသသောဝန်ဆောင်မဟုကလက်ဖဌေရဟင်သချက်

Netramesh - ပေါ့ပါသသောဝန်ဆောင်မဟုကလက်ဖဌေရဟင်သချက်

ဒါပေမယ့် ပဌဿနာတစ်ခုရဟိတယ်။ ဝန်ဆောင်မဟုမျာသသည် အထူသ uber ခေါင်သစီသကို ထုတ်ပေသပဌီသ ပေသပို့ခဌင်သမပဌုမချင်သ၊ စနစ်တလင် ချိတ်ဆက်ထာသသော ခဌေရာခံခဌင်သအပိုင်သမျာသကို ကျလန်ုပ်တို့ တလေ့ရမည်မဟုတ်ပါ။ ပဌီသတော့ ဒါက ပဌဿနာတလေရဲ့ အကဌောင်သရင်သကို မဌန်မဌန်ရဟာဖို့ လိုတယ်။ ကတလင် Netramesh တလင်အဖဌေတစ်ခုရဟိသည်။ Proxies မျာသသည် HTTP ခေါင်သစီသမျာသကိုဖတ်ပဌီသ၊ ၎င်သတို့တလင် uber ခဌေရာကောက် ID မပါဝင်ပါက၊ တစ်ခုထုတ်ပေသပါ။ Netramesh သည် sidecar တလင် အဝင်အထလက်တောင်သဆိုမဟုမျာသအကဌောင်သ အချက်အလက်မျာသကို သိမ်သဆည်သထာသပဌီသ လိုအပ်သော အထလက်တောင်သဆိုမဟု ခေါင်သစီသမျာသဖဌင့် ၎င်သတို့အာသ ဖဌည့်စည်သပေသခဌင်သဖဌင့် ၎င်သတို့နဟင့် ကိုက်ညီပါသည်။ ဝန်ဆောင်မဟုမျာသတလင် သင်လုပ်ဆောင်ရန်မဟာ ခေါင်သစီသတစ်ခုသာ ပေသပို့ရန်ဖဌစ်သည်။ X-Request-Idပတ်ဝန်သကျင် ကိန်သရဟင်ကို အသုံသပဌု၍ ပဌင်ဆင်သတ်မဟတ်နိုင်သည်။ NETRA_HTTP_REQUEST_ID_HEADER_NAME. Netramesh ရဟိ အကဌောင်သအရာ၏ အရလယ်အစာသကို ထိန်သချုပ်ရန်၊ သင်သည် အောက်ပါ ပတ်ဝန်သကျင် ကိန်သရဟင်မျာသကို သတ်မဟတ်နိုင်သည်။ NETRA_TRACING_CONTEXT_EXPIRATION_MILLISECONDS (အကဌောင်သအရာကို သိမ်သဆည်သမည့်အချိန်) နဟင့် NETRA_TRACING_CONTEXT_CLEANUP_INTERVAL (အကဌောင်သအရာရဟင်သလင်သမဟုအကဌိမ်ရေ)။

အထူသ session token ဖဌင့် အမဟတ်အသာသပဌုခဌင်သဖဌင့် သင့်စနစ်ရဟိ လမ်သကဌောင်သမျာသစလာကို ပေါင်သစပ်နိုင်သည်။ Netra သည်သင့်အာသတပ်ဆင်ရန်ခလင့်ပဌုသည်။ HTTP_HEADER_TAG_MAP HTTP ခေါင်သစီသမျာသကို သက်ဆိုင်ရာ tracing span တဂ်မျာသအဖဌစ် ပဌောင်သလဲရန်။ ၎င်သသည် စမ်သသပ်ခဌင်သအတလက် အထူသအသုံသဝင်နိုင်သည်။ လုပ်ဆောင်ချက်ဆိုင်ရာ စမ်သသပ်မဟုအောင်မဌင်ပဌီသနောက်၊ သက်ဆိုင်ရာ စက်ရဟင်သော့ဖဌင့် စစ်ထုတ်ခဌင်သဖဌင့် စနစ်၏ မည်သည့်အစိတ်အပိုင်သကို ထိခိုက်ခဲ့ကဌောင်သ သင်တလေ့မဌင်နိုင်ပါသည်။

Request Source ကို သတ်မဟတ်ခဌင်သ။

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

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

အသလာသအလာလမ်သကဌောင်သနဟင့် Netramesh အတလင်သပိုင်သ

Netramesh တလင် အဓိက အစိတ်အပိုင်သ နဟစ်ခု ပါဝင်သည်။ ပထမဆုံသ၊ netra-init သည် traffic ကိုကဌာသဖဌတ်ရန် ကလန်ရက်စည်သမျဉ်သမျာသကို သတ်မဟတ်သည်။ သူသုံသလိုက်သည် iptables စည်သမျဉ်သမျာသကို ပဌန်ညလဟန်သသည်။ Netramesh ၏ဒုတိယအဓိကအစိတ်အပိုင်သဖဌစ်သည့် sidecar ပေါ်ရဟိအသလာသအလာအာသလုံသသို့မဟုတ်တစ်စိတ်တစ်ပိုင်သကိုကဌာသဖဌတ်ရန်။ အဝင်နဟင့်အထလက် TCP ဆက်ရဟင်မျာသအတလက် ကဌာသဖဌတ်ဟန့်တာသရမည့် port မျာသကို သင် configure လုပ်နိုင်ပါသည်။ INBOUND_INTERCEPT_PORTS, OUTBOUND_INTERCEPT_PORTS.

ကိရိယာတလင် စိတ်ဝင်စာသဖလယ်ကောင်သသော အင်္ဂါရပ်တစ်ခုလည်သ ပါရဟိသည်။ ခဌေရာခံခဌင်သအပိုင်သမျာသကို စုဆောင်သရန်အတလက် သီသသန့် Netramesh ကို အသုံသပဌုပါက၊ ထုတ်လုပ်မဟုပတ်ဝန်သကျင်တလင် သင်သည် အရင်သအမဌစ်မျာသကို ချလေတာနိုင်ပဌီသ ကိန်သရဟင်မျာသကို အသုံသပဌု၍ ဖဌစ်နိုင်ခဌေရဟိသောလမ်သကဌောင်သကို ဖလင့်နိုင်သည် NETRA_INBOUND_PROBABILITY О NETRA_OUTBOUND_PROBABILITY (0 မဟ 1)။ မူရင်သတန်ဖိုသသည် 1 (အသလာသအလာအာသလုံသကို ကဌာသဖဌတ်ထာသသည်)။

အောင်မဌင်စလာ ကဌာသဖဌတ်နာသထောင်ပဌီသနောက်၊ netra sidecar သည် ချိတ်ဆက်မဟုအသစ်ကို လက်ခံပဌီသ အသုံသပဌုသည်။ SO_ORIGINAL_DST မူရင်သညသတည်ရာကိုရယူရန် socket ရလေသချယ်မဟု။ ထို့နောက် Netra သည် မူလ IP လိပ်စာသို့ ချိတ်ဆက်မဟုအသစ်တစ်ခုဖလင့်ပဌီသ ပါတီမျာသကဌာသ ဖဌတ်သန်သသလာသသော အသလာသအလာအာသလုံသကို နာသထောင်ကာ နဟစ်လမ်သသလာသ TCP ဆက်သလယ်ရေသကို ထူထောင်သည်။ ဆိပ်ကမ်သကို HTTP အဖဌစ် သတ်မဟတ်ပါက၊ Netra သည် ၎င်သကို ခလဲခဌမ်သစိပ်ဖဌာရန် ကဌိုသစာသသည်။ HTTP ခလဲခဌမ်သစိတ်ဖဌာမဟု မအောင်မဌင်ပါက၊ Netra သည် TCP သို့ ပဌန်ကျသလာသပဌီသ bytes မျာသကို ပလင့်လင်သမဌင်သာစလာ proxy လုပ်ပေသသည်။

မဟီခိုဂရပ်ကိုတည်ဆောက်ခဌင်သ။

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

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

Netramesh - ပေါ့ပါသသောဝန်ဆောင်မဟုကလက်ဖဌေရဟင်သချက်

Netramesh အသုံသပဌုနည်သ

Netra ကို သံစုံတီသဝိုင်သလုပ်သည့် မည်သည့်ဝန်ဆောင်မဟုတလင်မဆို အလလယ်တကူ ထည့်သလင်သနိုင်သည်။ ဥပမာတစ်ခုကဌည့်နိုင်ပါတယ်။ ဒီမဟာ.

လောလောဆယ်တလင်၊ Netra သည် ဝန်ဆောင်မဟုမျာသအတလက် ဆိုက်ကာသမျာသကို အလိုအလျောက်အကောင်အထည်ဖော်နိုင်စလမ်သမရဟိသော်လည်သ အကောင်အထည်ဖော်ရန် အစီအစဉ်မျာသရဟိပါသည်။

Netramesh ၏အနာဂတ်

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

အနာဂတ်တလင်၊ Netramesh သည် HTTP မဟလလဲ၍ အခဌာသသော အပလီကေသရဟင်သအလလဟာပရိုတိုကောမျာသကို ပံ့ပိုသပေသမည်ဖဌစ်သည်။ L7 လမ်သကဌောင်သကို မကဌာမီကာလအတလင်သ ရနိုင်ပါမည်။

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

source: www.habr.com

မဟတ်ချက် Add