ကလန်တိန်နာမျာသ၊ အသေသစာသဝန်ဆောင်မဟုမျာသနဟင့် ဝန်ဆောင်မဟုကလက်မျာသ

အင်တာနက်ကိုတလင် စည်သ ဆောင်သပါသမျာသ П ဝန်ဆောင်မဟုကလက် (service mesh) ၊ ဒါက နောက်တစ်မျိုသ။ ဟူှ! ဒါနဲ့ဘာဖဌစ်လို့လဲ? ထို့နောက် Docker နဟင့် Kubernetes ကဲ့သို့သော ကလန်တိန်နာပလပ်ဖောင်သမျာသ မထလန်သကာသမီ လလန်ခဲ့သည့် 10 နဟစ်က ဝန်ဆောင်မဟု Meshes မျာသ ပေါ်ထလန်သလာပါက ပိုကောင်သမည်ဟု ကျလန်ုပ်၏ ထင်မဌင်ချက်ကို ဖော်ပဌလိုပါသည်။ ကျလန်ုပ်၏အမဌင်သည် အခဌာသသူမျာသထက် ပိုကောင်သသည် သို့မဟုတ် ပိုဆိုသသည်ဟု မဆိုလိုပါ၊ သို့သော် ဆာသဗစ်ကလက်မျာသသည် အလလန်ရဟုပ်ထလေသသော တိရိစ္ဆာန်မျာသဖဌစ်သောကဌောင့်၊ ရဟုထောင့်မျာသစလာက ၎င်သတို့ကို ပိုမိုနာသလည်ရန် ကူညီပေသပါလိမ့်မည်။

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

dotCloud ၏သမိုင်သ

dotCloud ၏သမိုင်သကဌောင်သနဟင့် ကပလပ်ဖောင်သအတလက် ဗိသုကာရလေသချယ်မဟုမျာသအကဌောင်သ ရေသသာသထာသသော်လည်သ ကလန်ရက်အလလဟာအကဌောင်သ သိပ်မပဌောဖဌစ်ပါ။ စာမဖတ်ချင်ဘူသဆိုရင် နောက်ဆုံသဆောင်သပါသ dotCloud အကဌောင်သ၊ အတိုချုပ်ပဌောရလျဟင် ကသည်မဟာ အတိုချုပ်အာသဖဌင့်- ၎င်သသည် သုံသစလဲသူမျာသအာသ ကျယ်ပဌန့်သော အပလီကေသရဟင်သမျာသ (Java၊ PHP၊ Python...) ကို ဒေတာမျာသစလာ ပံ့ပိုသပေသသည့် PaaS ပလပ်ဖောင်သ-as-a-service တစ်ခုဖဌစ်သည်။ ဝန်ဆောင်မဟုမျာသ (MongoDB၊ MySQL၊ Redis...) နဟင့် Heroku ကဲ့သို့သော အလုပ်အသလာသအလာတစ်ခု- သင်သည် သင်၏ကုဒ်ကို ပလပ်ဖောင်သသို့ အပ်လုဒ်လုပ်ကာ၊ ၎င်သသည် ကလန်တိန်နာပုံမျာသကို တည်ဆောက်ပဌီသ ၎င်သတို့ကို အသုံသချသည်။

dotCloud ပလပ်ဖောင်သသို့ လမ်သကဌောင်သအသလာသအလာကို မည်ကဲ့သို့ ညသတည်ထာသသည်ကို ပဌောပဌပါမည်။ အထူသကောင်သမလန်သောကဌောင့် မဟုတ်ဘဲ (စနစ်သည် အချိန်အတလက် ကောင်သမလန်သော်လည်သ!)၊ သို့သော် အဓိကအာသဖဌင့် ခေတ်မီကိရိယာမျာသဖဌင့် ပေါ့ပေါ့ပါသပါသအဖလဲ့တစ်ဖလဲ့က ၎င်သတို့သည် လမ်သကဌောင်သတစ်ခုကဌာသလမ်သကဌောင်သကို လမ်သကဌောင်သပေသလိုပါက အချိန်တိုအတလင်သ လလယ်ကူစလာအကောင်အထည်ဖော်နိုင်သောကဌောင့်ဖဌစ်သည်။ မိုက်ခရိုဝန်ဆောင်မဟုမျာသ သို့မဟုတ် အသုံသချပလီကေသရဟင်သမျာသ။ ကနည်သအာသဖဌင့် သင်သည် ရလေသချယ်စရာမျာသကို နဟိုင်သယဟဉ်နိုင်သည်- သင်သည် အရာအာသလုံသကို သင်ကိုယ်တိုင် ဖန်တီသခဌင်သ သို့မဟုတ် ရဟိပဌီသသာသ ဝန်ဆောင်မဟု mesh ကို အသုံသပဌုပါက ဘာဖဌစ်မည်နည်သ။ စံရလေသချယ်မဟုမဟာ ကိုယ်တိုင်ပဌုလုပ်ရန် သို့မဟုတ် ဝယ်ရန်ဖဌစ်သည်။

လက်ခံထာသသည့် အက်ပ်လီကေသရဟင်သမျာသအတလက် လမ်သကဌောင်သလမ်သကဌောင်သ

dotCloud ရဟိ အပလီကေသရဟင်သမျာသသည် HTTP နဟင့် TCP အဆုံသမဟတ်မျာသကို ဖော်ထုတ်နိုင်သည်။

HTTP အဆုံသမဟတ်မျာသ load balancer cluster configuration တလင် ဒိုင်သနမစ်ဖဌင့် ထည့်သလင်သထာသသည်။ Hipache. ၎င်သသည် ယနေ့ခေတ် အရင်သအမဌစ်မျာသ လုပ်ဆောင်ပုံနဟင့် ဆင်တူသည်။ Ingress Kubernetes နဟင့် load balancer ကဲ့သို့ဖဌစ်သည်။ Traefik.

ဒိုမိန်သအမည်သည် dotCloud load balancers သို့ညလဟန်ပဌပေသသော ဖောက်သည်မျာသသည် သင့်လျော်သောဒိုမိန်သမျာသမဟတစ်ဆင့် HTTP အဆုံသမဟတ်မျာသသို့ ချိတ်ဆက်သည်။ ဘာမဟ မထူသခဌာသပါဘူသ။

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

ဖောက်သည်မျာသသည် သင့်လျော်သော hostname (gateway-X.dotcloud.com ကဲ့သို့သော) နဟင့် port နံပါတ်တို့ကို အသုံသပဌု၍ TCP အဆုံသမဟတ်မျာသသို့ ချိတ်ဆက်နိုင်သည်။

ကအိမ်ရဟင်အမည်သည် “nats” ဆာဗာအစုအဝေသသို့ ဖဌေရဟင်သပေသသည် (မသက်ဆိုင်ပါ။ NATS) အဝင် TCP ချိတ်ဆက်မဟုမျာသကို မဟန်ကန်သော container (သို့မဟုတ် load-balanced services မျာသတလင်၊ မဟန်ကန်သော containers) သို့ လမ်သကဌောင်သပေသမည်ဖဌစ်သည်။

အကယ်၍ သင်သည် Kubernetes နဟင့် ရင်သနဟီသပါက၊ ၎င်သသည် သင့်အာသ ဝန်ဆောင်မဟုမျာသအကဌောင်သ သတိပေသနိုင်မည်ဖဌစ်သည်။ NodePort.

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

အရာအာသလုံသကို ရိုသရဟင်သစလာဖလဲ့စည်သထာသပါသည်- HTTP နဟင့် TCP လမ်သကဌောင်သသတ်မဟတ်ခဌင်သကလန်ရက်မျာသ၏ ကနညသအကောင်အထည်ဖော်မဟုမျာသသည် Python တစ်ခုစီ၏ လိုင်သရာဂဏန်သမျဟသာဖဌစ်နိုင်သည်။ ပလပ်ဖောင်သကဌီသထလာသလာသည်နဟင့် ထပ်ဆင့်လိုအပ်ချက်မျာသ ပေါ်လာသည်နဟင့်အမျဟ ရိုသရဟင်သသော (နုံချာသည်ဟု ဆိုရမည်) အယ်လဂိုရီသမ်မျာသ။

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

၎င်သသည် ခေတ်မီဝန်ဆောင်မဟုကလက်နဟင့် မည်သို့ကလာခဌာသသနည်သ။

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

မဌင်နိုင်မဟုသည် လုပ်ငန်သလည်ပတ်မဟု ရဟုထောင့်မဟသာမက (ပဌဿနာမျာသကို ဖဌေရဟင်သရန်) တလင်သာမက အင်္ဂါရပ်အသစ်မျာသကို ထုတ်လလဟတ်သည့်အခါတလင်လည်သ အရေသကဌီသပါသည်။ အဲဒါက ဘေသကင်သပါတယ်။ စိမ်သပဌာ ဖဌန့်ကျက်ခဌင်သ။ О Canary ဖဌန့်ကျက်မဟု.

Routing လုပ်တယ်။ အကန့်အသတ်လည်သရဟိသည်။ dotCloud လမ်သကဌောင်သပဌကလက်တလင်၊ အသလာသအလာအာသလုံသသည် သီသခဌာသလမ်သကဌောင်သပဌခဌင်သဆိုင်ရာ nodes အစုအဝေသတစ်ခုမဟတဆင့် သလာသရမည်ဖဌစ်သည်။ ၎င်သသည် AZ (Availability Zone) နယ်နမိတ်မျာသကို ဖဌတ်ကျော်နိုင်ပဌီသ latency သိသိသာသာ တိုသလာနိုင်သည်။ စာမျက်နဟာတစ်ခုလျဟင် SQL queries တစ်ရာကျော်ပဌုလုပ်ပဌီသ query တစ်ခုစီအတလက် SQL server သို့ ချိတ်ဆက်မဟုအသစ်တစ်ခုဖလင့်လဟစ်သည့် ပဌဿနာဖဌေရဟင်သခဌင်သကုဒ်ကို မဟတ်မိပါသည်။ စက်တလင်သသုံသသည့်အခါ၊ စာမျက်နဟာသည် ချက်ချင်သပလင့်လာသော်လည်သ TCP ချိတ်ဆက်မဟုတစ်ခုစီ (နဟင့် နောက်ဆက်တလဲ SQL query) တစ်ခုစီသည် ဆယ်ဂဏန်သမီလီစက္ကန့်ကဌာသောကဌောင့် dotCloud တလင် တင်ရန် စက္ကန့်အနည်သငယ်ကဌာသည်။ ကကိစ္စတလင်၊ မဌဲမဌံသောဆက်သလယ်မဟုမျာသသည် ပဌဿနာကို ဖဌေရဟင်သပေသသည်။

ခေတ်မီ ဝန်ဆောင်မဟု ကလက်လပ်မျာသသည် ထိုကဲ့သို့သော ပဌဿနာမျာသကို ကိုင်တလယ်ဖဌေရဟင်သရာတလင် ပိုမိုကောင်သမလန်ပါသည်။ ပထမညသစလာ၊ ၎င်သတို့သည် ချိတ်ဆက်မဟုမျာသကို လမ်သကဌောင်သပဌောင်သကဌောင်သ စစ်ဆေသပါ။ အရင်သအမဌစ်၌. logical flow သည် အတူတူပင်ဖဌစ်သည်- клОеМт → Ќеш → сервОсသို့သော် ယခု mesh သည် စက်တလင်သတလင် အလုပ်လုပ်ပဌီသ remote node မျာသတလင် မပါသောကဌောင့် ချိတ်ဆက်မဟုဖဌစ်သည်။ клОеМт → Ќеш ဒေသန္တရနဟင့် အလလန်မဌန်သည် (မီလီစက္ကန့်မျာသအစာသ မိုက်ခရိုစက္ကန့်မျာသ)။

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

လုံခလုံမဟု ပိုကောင်သပါတယ်။ dotCloud လမ်သကဌောင်သပဌကလက်သည် EC2 Classic တလင် လုံသလုံသလျာသလျာသ လည်ပတ်နေပဌီသ အသလာသအလာကို စာဝဟက်မထာသပါ (တစ်စုံတစ်ညသသည် EC2 ကလန်ရက်အသလာသအလာတလင် sniffer တစ်ခုထည့်ရန် စီမံထာသကဌောင်သ ယူဆချက်အပေါ် အခဌေခံ၍ သင်သည် ပဌဿနာကဌီသကဌီသမာသမာသရဟိနေပဌီ)။ ခေတ်မီ ဝန်ဆောင်မဟု ကလက်လပ်မျာသသည် ကျလန်ုပ်တို့၏ လမ်သကဌောင်သအာသလုံသကို ပလင့်လင်သမဌင်သာစလာ ကာကလယ်ပေသပါသည်။ ဥပမာအာသဖဌင့်၊ အပဌန်အလဟန် TLS စစ်မဟန်ကဌောင်သနဟင့် နောက်ဆက်တလဲ ကုဒ်ဝဟက်ခဌင်သတို့ဖဌင့် ကာကလယ်ပါသည်။

ပလက်ဖောင်သဝန်ဆောင်မဟုမျာသအတလက် လမ်သကဌောင်သလမ်သကဌောင်သ

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

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

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

ကအဆင့်နိမ့်၊ မစ်ရဟင်အရေသပါသော ဝန်ဆောင်မဟုမျာသကို သော့နံပါတ်အချို့တလင် ကလန်တိန်နာမျာသ တိုက်ရိုက်အသုံသပဌုခဌင်သဖဌင့် အသုံသချခဲ့သည်။ ကကိစ္စတလင်၊ စံပလက်ဖောင်သဝန်ဆောင်မဟုမျာသကို အသုံသမပဌုပါ - လင့်ခ်ပေသသူ၊ အချိန်ဇယာသဆလဲသူနဟင့် အပဌေသသမာသ။ ခေတ်မီကလန်တိန်နာပလပ်ဖောင်သမျာသနဟင့် နဟိုင်သယဟဉ်လိုပါက၊ ၎င်သသည် ထိန်သချုပ်မဟုလေယာဉ်ဖဌင့် လည်ပတ်နေသကဲ့သို့ဖဌစ်သည်။ docker run အလုပ်တာဝန်ကို Kubernetes သို့လလဟဲအပ်မည့်အစာသ node မျာသပေါ်တလင် တိုက်ရိုက်။ သဘောတရာသနဲ့ တော်တော်တူတယ်။ static modules (pods)၎င်သကိုအသုံသပဌုသည်။ kubeadm သို့မဟုတ် bootkube standalone cluster ကို စတင်သောအခါ။

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

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

နောက်ပိုင်သတလင်၊ client တစ်ခုစီသည် local proxy server သို့ ချိတ်ဆက်ထာသသည့် အစီအစဉ်အသစ်တစ်ခုကို စတင်အကောင်အထည်ဖော်ခဲ့သည်။ လိပ်စာနဟင့် ပို့တ်အစာသ ဝန်ဆောင်မဟု၏ ပို့တ်နံပါတ်ကို သိရန်နဟင့် ချိတ်ဆက်ရန်သာ လိုအပ်သည်။ localhost. ဒေသတလင်သ proxy သည် ကချိတ်ဆက်မဟုကို ကိုင်တလယ်ပဌီသ တကယ့်ဆာဗာသို့ ပေသပို့သည်။ ယခု၊ နောက်ကလယ်ကို အခဌာသစက်တစ်ခုသို့ ရလဟေ့ခဌင်သ သို့မဟုတ် ချဲ့ထလင်သည့်အခါ၊ ကလိုင်သယင့်အာသလုံသကို မလမ်သမံခဌင်သအစာသ၊ သင်သည် ကဒေသခံ ပရောက်စီမျာသအာသလုံသကို အပ်ဒိတ်လုပ်ရန်သာ လိုအပ်ပါသည်။ နဟင့် reboot လုပ်ရန်မလိုအပ်တော့ပါ။

(၎င်သသည် TLS ချိတ်ဆက်မဟုမျာသတလင် အသလာသအလာကို ကန့်သတ်ရန် စီစဉ်ထာသပဌီသ လက်ခံသည့်ဘက်တလင် အခဌာသသော ပရောက်စီဆာဗာကို ထာသရဟိကာ လက်ခံခဌင်သဝန်ဆောင်မဟုတလင်သာ ပါဝင်ခဌင်သမရဟိဘဲ TLS လက်မဟတ်မျာသကို စစ်ဆေသအတည်ပဌုရန် စီစဉ်ထာသသည်၊၊ localhost. ကအကဌောင်သကို နောက်မဟ ဆက်ပဌောပါ။)

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

SmartStack သည် Istio၊ Linkerd နဟင့် Consul Connect ကဲ့သို့သော စနစ်မျာသ၏ ရဟေ့လာနောက်ဆက်တလဲမျာသထဲမဟ တစ်ခုဖဌစ်သည်ဟု ကျလန်ုပ်ကိုယ်တိုင်ကိုယ်ကျယူဆပါသည်။

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

ခေတ်မီဝန်ဆောင်မဟုကလက်တစ်ခု အကောင်အထည်ဖော်ခဌင်သ။

ယနေ့ ကျလန်ုပ်တို့သည် အလာသတူဇယာသကလက်တစ်ခုကို အကောင်အထည်ဖေါ်ရန် လိုအပ်ပါက၊ အလာသတူမူမျာသကို ကျလန်ုပ်တို့အသုံသပဌုနိုင်ပါသည်။ ဥပမာအာသဖဌင့်၊ နေရာလလတ်မျာသရဟိ လိပ်စာမျာသသို့ ဝန်ဆောင်မဟုအမည်မျာသကို မဌေပုံဆလဲခဌင်သဖဌင့် အတလင်သ DNS ဇုန်ကို ပဌင်ဆင်သတ်မဟတ်ပါ။ 127.0.0.0/8. ထို့နောက် အစုအဝေသရဟိ node တစ်ခုစီတလင် HAProxy ကိုဖလင့်ပဌီသ ဝန်ဆောင်မဟုလိပ်စာတစ်ခုစီတလင် ချိတ်ဆက်မဟုမျာသကို လက်ခံခဌင်သ (ထိုကလန်ရက်ခလဲအတလင်သရဟိ 127.0.0.0/8) နဟင့် သင့်လျော်သော နောက်ကလယ်မဟ ဝန်ကို ပဌန်ညလဟန်သခဌင်သ/ဟန်ချက်ညီခဌင်သ။ HAProxy ဖလဲ့စည်သမဟုပုံစံကို ထိန်သချုပ်နိုင်သည်။ confdနောက်ခံအချက်အလက်ကို etcd သို့မဟုတ် Consul တလင် သိမ်သဆည်သထာသနိုင်ပဌီသ လိုအပ်သောအခါတလင် မလမ်သမံထာသသောဖလဲ့စည်သပုံကို HAProxy သို့ အလိုအလျောက် တလန်သပို့ပေသသည်။

ဒါက Istio အလုပ်လုပ်ပုံပါပဲ။ ဒါပေမယ့် ကလဲပဌာသမဟုတလေနဲ့

  • အသုံသမျာသသည်။ အထူသကိုယ်စာသလဟယ် ပရောက်စီ HAProxy အစာသ
  • etcd သို့မဟုတ် Consul အစာသ Kubernetes API မဟတစ်ဆင့် backend configuration ကို သိမ်သဆည်သသည်။
  • ဝန်ဆောင်မဟုမျာသသည် 127.0.0.0/8 အစာသ အတလင်သပိုင်သကလန်ရက်ခလဲမျာသ (Kubernetes ClusterIP လိပ်စာမျာသ) တလင် ခလဲဝေပေသထာသသည့် လိပ်စာမျာသဖဌစ်သည်။
  • ကလိုင်သယင့်နဟင့်ဆာဗာမျာသအကဌာသ အပဌန်အလဟန် TLS စစ်မဟန်ကဌောင်သအထောက်အထာသထည့်သလင်သရန် နောက်ထပ်အစိတ်အပိုင်သတစ်ခု (Citadel) ရဟိသည်။
  • circuit breaking၊ distribution tracing၊ canary deployment အစရဟိသည့် အင်္ဂါရပ်အသစ်မျာသကို ပံ့ပိုသပေသပါသည်။

ကလာခဌာသချက်အချို့ကို အမဌန်ကဌည့်ကဌပါစို့။

အထူသကိုယ်စာသလဟယ် ပရောက်စီ

Envoy Proxy ကို Lyft [တက္ကစီစျေသကလက်တလင် Uber ၏ပဌိုင်ဘက် - ခန့်မဟန်သခဌေအာသဖဌင့်ရေသသာသခဲ့သည်။ လမ်သသလာသ]။ အခဌာသ proxy မျာသ (ဥပမာ HAProxy၊ Nginx၊ Traefik...) နဟင့် မျာသစလာ ဆင်တူသော်လည်သ Lyft သည် အခဌာသ proxy မျာသ ချို့တဲ့သော အင်္ဂါရပ်မျာသ လိုအပ်သောကဌောင့် ၎င်သတို့ကို ရေသသာသခဲ့ပဌီသ ရဟိပဌီသသာသတစ်ခုအာသ တိုသချဲ့ခဌင်သထက် အသစ်တစ်ခုပဌုလုပ်ရန် ပိုစမတ်ကျပုံရသည်။

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

ဒါပေမယ့် Envoy မဟာလည်သ အလုပ် လုပ်နိုင်စလမ်သရဟိပါတယ်။ ဒေတာလေယာဉ် ဝန်ဆောင်မဟုကလက်အတလက် (ဒေတာလေယာဉ်)။ ဆိုလိုသည်မဟာ Envoy သည် ကဝန်ဆောင်မဟု mesh အတလက် ယခု ပဌင်ဆင်သတ်မဟတ်ထာသပါသည်။ လေယာဉ်ထိန်သချုပ်မဟု (လေယာဉ်ထိန်သ)။

လေယာဉ်ထိန်သ

ထိန်သချုပ်ရေသလေယာဉ်အတလက်၊ Istio သည် Kubernetes API ကို အာသကိုသသည်။ ဒါက confd သုံသတာနဲ့ သိပ်မကလာခဌာသပါဘူသ။ဒေတာစတိုသရဟိ သော့အစုံကို ကဌည့်ရဟုရန် etcd သို့မဟုတ် ကောင်စစ်ဝန်အပေါ် မဟီခိုနေရပါသည်။ Istio သည် Kubernetes အရင်သအမဌစ်မျာသကို ကဌည့်ရဟုရန် Kubernetes API ကို အသုံသပဌုသည်။

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

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

Istio သည် Kubernetes နဟင့် အလုပ်လုပ်ရန် ဒီဇိုင်သထုတ်ထာသသည်။ ၎င်သကို Kubernetes ပဌင်ပတလင် သင်အသုံသပဌုလိုပါက Kubernetes API ဆာဗာ (နဟင့် etcd helper ဝန်ဆောင်မဟု) ၏ ဥပမာတစ်ခုကို သင်လုပ်ဆောင်ရန် လိုအပ်ပါသည်။

ဝန်ဆောင်မဟုလိပ်စာမျာသ

Istio သည် Kubernetes ခလဲဝေပေသသည့် ClusterIP လိပ်စာမျာသကို မဟီခိုနေရသောကဌောင့် Istio ဝန်ဆောင်မဟုမျာသသည် အတလင်သလိပ်စာကို လက်ခံရရဟိသည် (အကလာအဝေသအတလင်သမဟုတ်ပါ 127.0.0.0/8).

Istio မပါဘဲ Kubernetes အစုအဝေသရဟိ သတ်မဟတ်ထာသသော ဝန်ဆောင်မဟုတစ်ခုအတလက် ClusterIP လိပ်စာသို့ လမ်သကဌောင်သအသလာသအလာကို kube-proxy မဟ ကဌာသဖဌတ်ပဌီသ ထိုပရောက်စီ၏ နောက်ခံသို့ ပေသပို့သည်။ နည်သပညာဆိုင်ရာအသေသစိတ်အချက်အလက်မျာသကို သင်စိတ်ဝင်စာသပါက၊ Kube-proxy သည် iptables စည်သမျဉ်သမျာသ (သို့မဟုတ် IPVS တလင် ထည့်သလင်သထာသသည့်ပုံစံပေါ်မူတည်၍) ချိန်ခလင်လျဟာကို ClusterIP လိပ်စာသို့သလာသမည့် ချိတ်ဆက်မဟုမျာသ၏ ညသတည်ရာ IP လိပ်စာမျာသကို ပဌန်လည်ရေသရန် သတ်မဟတ်ပေသပါသည်။

Istio ကို Kubernetes အစုအဝေသတလင် ထည့်သလင်သပဌီသသည်နဟင့်၊ ကလန်တိန်နာကို မိတ်ဆက်ပေသခဌင်သဖဌင့် သုံသစလဲသူတစ်ညသအတလက် သို့မဟုတ် namespace တစ်ခုလုံသကို တိကျပဌတ်သာသစလာ ဖလင့်မထာသသည့်တိုင်အောင် ၎င်သကို မည်သည့်အရာမဟ ပဌောင်သလဲမည်မဟုတ်ပေ။ sidecar စိတ်ကဌိုက် pods မျာသထဲသို့။ ကကလန်တိန်နာသည် Envoy ၏ စံနမူနာကို လဟည့်ပတ်ပဌီသ အခဌာသဝန်ဆောင်မဟုမျာသသို့ သလာသနေသော အသလာသအလာကို ကဌာသဖဌတ်ကာ ထိုလမ်သကဌောင်သအာသ Envoy သို့ ပဌန်ညလဟန်သရန် iptables စည်သမျဉ်သမျာသ အစုံလိုက်ကို တည်ဆောက်ပါမည်။

Kubernetes DNS နဟင့် ပေါင်သစည်သလိုက်သောအခါ၊ ဆိုလိုသည်မဟာ ကျလန်ုပ်တို့၏ကုဒ်သည် ဝန်ဆောင်မဟုအမည်ဖဌင့် ချိတ်ဆက်နိုင်ပဌီသ အရာအာသလုံသသည် “အဆင်ပဌေသည်” ဟု ဆိုလိုပါသည်။ တစ်နည်သဆိုရသော် ကျလန်ုပ်တို့၏ ကုဒ်သည် ကဲ့သို့သော မေသခလန်သမျာသကို ထုတ်ပေသပါသည်။ http://api/v1/users/4242ထို့နောက် api တောင်သဆိုမဟုကိုဖဌေရဟင်သပါ။ 10.97.105.48iptables စည်သမျဉ်သမျာသသည် 10.97.105.48 မဟ ချိတ်ဆက်မဟုမျာသကို ကဌာသဖဌတ်ပဌီသ ၎င်သတို့အာသ ဒေသတလင်သ Envoy proxy သို့ ပေသပို့မည်ဖဌစ်ပဌီသ၊ ထိုဒေသခံ proxy သည် တောင်သဆိုချက်ကို အမဟန်တကယ် backend API သို့ ပေသပို့မည်ဖဌစ်သည်။ ဝူှ!

အပိုအလိုဆန္ဒမျာသ

Istio သည် mTLS (mutual TLS) မဟတစ်ဆင့် အဆုံသမဟအဆုံသထိ ကုဒ်ဝဟက်ခဌင်သနဟင့် စစ်မဟန်ကဌောင်သအထောက်အထာသပဌခဌင်သကို ပေသပါသည်။ အစိတ်အပိုင်သဟုခေါ်သည်။ Citadel.

အစိတ်အပိုင်သတစ်ခုလည်သ ရဟိပါသည်။ ရောစပ်ရာEnvoy က တောင်သဆိုနိုင်တယ်။ တစ်ခုချင်သစီကို ခေါင်သစီသမျာသ၊ backend load စသည်ဖဌင့် အမျိုသမျိုသသောအချက်မျာသပေါ်မူတည်၍ အဆိုပါတောင်သဆိုမဟုနဟင့်ပတ်သက်ပဌီသ အထူသဆုံသဖဌတ်ချက်တစ်ခုချရန် တောင်သဆိုပါ (စိတ်မပူပါနဟင့်- Mixer လည်ပတ်နေစေရန် နည်သလမ်သမျာသစလာရဟိပါသည်၊ ပျက်သလာသလျဟင်ပင် Envoy သည် ဆက်လက်အလုပ်လုပ်နေမည်ဖဌစ်ပါသည်။ proxy အဖဌစ် ဒဏ်ငလေဆောင်ပါ။)

ထို့အပဌင်၊ ကျလန်ုပ်တို့သည် မဌင်နိုင်စလမ်သကို ဖော်ပဌခဲ့သည်- Envoy သည် ဖဌန့်ဝေခဌေရာခံခဌင်သကို ပံ့ပိုသပေသစဉ်တလင် မက်ထရစ်ပမာဏမျာသစလာကို စုဆောင်သပါသည်။ microservices ဗိသုကာတစ်ခုတလင်၊ API တောင်သဆိုချက်တစ်ခုသည် microservices A၊ B၊ C၊ D မဟတဆင့်ဖဌတ်သန်သရပါက၊ ဝင်ရောက်သည့်အခါတလင်၊ ဖဌန့်ဝေထာသသောခဌေရာခံခဌင်သသည် တောင်သဆိုချက်တလင် ထူသခဌာသသော identifier ကို ပေါင်သထည့်မည်ဖဌစ်ပဌီသ က microservices မျာသအာသလုံသထံ တောင်သဆိုချက်ခလဲမျာသမဟတစ်ဆင့် က identifier ကို သိမ်သဆည်သသလာသမည်ဖဌစ်ပါသည်။ ဆက်စပ်ခေါ်ဆိုမဟုမျာသအာသလုံသကို ဖမ်သယူရန်။ နဟောင့်နဟေသမဟုမျာသ၊ စသည်တို့။

ဖလံ့ဖဌိုသတိုသတက်ရန် သို့မဟုတ် ဝယ်ယူပါ။

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

အကယ်၍ ကျလန်ုပ်တို့တလင် ကျိုသနလံသော လိုအပ်ချက်မျာသ (ကျလန်ုပ်တို့သည် မဌင်နိုင်စလမ်သ၊ circuit breaker နဟင့် အခဌာသသော ပရိယာယ်မျာသ မလိုအပ်ပါ) ဆိုလျဟင် ကျလန်ုပ်တို့၏ ကိုယ်ပိုင် tool ကို တီထလင်ရန် အတလေသမျာသ ပေါ်လာပါသည်။ သို့သော် Kubernetes ကိုအသုံသပဌုပါက Kubernetes သည် ဝန်ဆောင်မဟုရဟာဖလေတလေ့ရဟိမဟုနဟင့် load ချိန်ခလင်လျဟာအတလက် အခဌေခံကိရိယာမျာသကို ပေသဆောင်ထာသပဌီသဖဌစ်သောကဌောင့် ၎င်သသည် မလိုအပ်တော့ပေ။

သို့သော် ကျလန်ုပ်တို့တလင် အဆင့်မဌင့်လိုအပ်ချက်မျာသရဟိပါက ဝန်ဆောင်မဟုကလက်တစ်ခု "ဝယ်ယူခဌင်သ" သည် မျာသစလာပိုမိုကောင်သမလန်သောရလေသချယ်မဟုဖဌစ်ပုံရသည်။ ( Istio သည် open source ဖဌစ်သောကဌောင့် အမဌဲတမ်သ "ဝယ်သည်" မဟုတ်ပါ၊ သို့သော် ၎င်သကို နာသလည်ရန်၊ အသုံသချရန်နဟင့် စီမံခန့်ခလဲရန် အင်ဂျင်နီယာဆိုင်ရာ အချိန်ကို ရင်သနဟီသမဌဟပ်နဟံရန် လိုအပ်နေသေသသည်။)

Istio၊ Linkerd သို့မဟုတ် Consul Connect ကို ရလေသချယ်သင့်ပါသလာသ။

ယခုအချိန်အထိ ကျလန်ုပ်တို့သည် Istio အကဌောင်သကိုသာ ပဌောခဲ့ပဌီသဖဌစ်သော်လည်သ ၎င်သသည် တစ်ခုတည်သသော ဝန်ဆောင်မဟုကလက်မဟုတ်ပေ။ လူကဌိုက်မျာသသော အခဌာသရလေသချယ်စရာ - Linkerd, နဟင့် ပို ကောင်စစ်ဝန်ချိတ်ဆက်ပါ။.

အဘယ်အရာကိုရလေသချယ်ဖို့?

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

အလာသအလာရဟိသော ချဉ်သကပ်နည်သတစ်ခုမဟာ ကိရိယာကဲ့သို့သော ကိရိယာကို အသုံသပဌုခဌင်သဖဌစ်သည်။ SuperGloo. ၎င်သသည် ဝန်ဆောင်မဟု meshes ဖဌင့် ထိတလေ့ထာသသော API မျာသကို ရိုသရဟင်သစေပဌီသ ပေါင်သစည်သရန် abstraction အလလဟာကို အကောင်အထည်ဖော်သည်။ မတူညီသော ဝန်ဆောင်မဟု meshes မျာသ၏ သီသခဌာသ (ကျနော့်အမဌင်အရတော့ အတော်လေသ ရဟုပ်ထလေသ) API မျာသကို လေ့လာခဌင်သအစာသ SuperGloo ၏ ပိုမိုရိုသရဟင်သသော တည်ဆောက်မဟုမျာသကို အသုံသပဌုနိုင်ပဌီသ HTTP interfaces နဟင့် backends မျာသကို ဖော်ပဌနိုင်သော intermediate configuration format တစ်ခုရဟိသကဲ့သို့ တစ်ခုမဟတစ်ခုသို့ လလယ်ကူစလာပဌောင်သနိုင်သည်။ Nginx, HAProxy, Traefik, Apache... အတလက် အမဟန်တကယ် configuration ကို ဖန်တီသခဌင်သ

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

source: www.habr.com

မဟတ်ချက် Add