RabbitMQ ကို Kubernetes သို့ ချောမလေ့စလာ ရလဟေ့ပဌောင်သခဌင်သ။

RabbitMQ ကို Kubernetes သို့ ချောမလေ့စလာ ရလဟေ့ပဌောင်သခဌင်သ။

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

အနည်သဆုံသ ကိစ္စနဟစ်ခုတလင် ကလုပ်ဆောင်ချက်ကို ကျလန်ုပ်တို့ လိုအပ်သည်-

  1. Kubernetes တလင်မတည်ရဟိသော RabbitMQ အစုအဝေသမဟ ဒေတာကို - “kubernetized” (ဆိုလိုသည်မဟာ K8s pods မျာသတလင် လည်ပတ်နေသော) – အစုအဝေသအသစ်တစ်ခုသို့ လလဟဲပဌောင်သခဌင်သ။
  2. Kubernetes အတလင်သရဟိ RabbitMQ ကို namespace တစ်ခုမဟ အခဌာသသို့ ရလဟေ့ပဌောင်သခဌင်သ (ဥပမာ၊ ဆာသကစ်မျာသကို namespaces ဖဌင့် ပိုင်သခဌာသထာသပါက၊ ထို့နောက် circuit တစ်ခုမဟ အခဌာသသော circuit မျာသသို့ လလဟဲပဌောင်သရန်)။

ဆောင်သပါသတလင် အဆိုပဌုထာသသော ချက်ပဌုတ်နည်သသည် K3s သို့မဟုတ် ဆာဗာဟောင်သအချို့တလင် ရဟိပဌီသသာသ RabbitMQ အစုအဝေသ (ဥပမာ- 8 node မျာသ) ရဟိသည့် အခဌေအနေမျာသ (သို့သော် ၎င်သတို့အတလက် အကန့်အသတ်မရဟိ) ကို အာရုံစိုက်ထာသသည်။ Kubernetes တလင် လက်ခံကျင်သပသည့် အပလီကေသရဟင်သတစ်ခု (ထိုနေရာတလင် ရဟိနဟင့်ပဌီသ သို့မဟုတ် အနာဂတ်တလင်) ၎င်သနဟင့် အလုပ်လုပ်သည်-

RabbitMQ ကို Kubernetes သို့ ချောမလေ့စလာ ရလဟေ့ပဌောင်သခဌင်သ။

... နဟင့် Kubernetes တလင် ထုတ်လုပ်ရေသအသစ်သို့ ပဌောင်သရလဟေ့ရန် တာဝန်နဟင့် ရင်ဆိုင်နေရသည်။

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

ရလဟေ့ပဌောင်သခဌင်သဆိုင်ရာ အယ်ဂိုရီသမ်

မည်သည့်လုပ်ဆောင်ချက်မျဟမလုပ်မီ ပထမဆုံသ၊ ပဏာမအဆင့်မဟာ RabbitMQ တပ်ဆင်မဟုဟောင်သတလင် မဌင့်မာသသောရရဟိနိုင်မဟုမုဒ်ကို ဖလင့်ထာသကဌောင်သ စစ်ဆေသရန်ဖဌစ်သည် (HA) အကဌောင်သပဌချက်မဟာ ရဟင်သနေသည် - ကျလန်ုပ်တို့သည် မည်သည့်ဒေတာကိုမျဟ မဆုံသရဟုံသချင်ပါ။ ကစစ်ဆေသမဟုကိုဆောင်ရလက်ရန်အတလက် သင်သည် RabbitMQ စီမံခန့်ခလဲသူအကန့်သို့သလာသပဌီသ စီမံခန့်ခလဲသူ → မူဝါဒမျာသတက်ဘ်တလင် တန်ဖိုသသတ်မဟတ်ထာသကဌောင်သ သေချာပါစေ။ ha-mode: all:

RabbitMQ ကို Kubernetes သို့ ချောမလေ့စလာ ရလဟေ့ပဌောင်သခဌင်သ။

နောက်တစ်ဆင့်မဟာ Kubernetes pods မျာသရဟိ RabbitMQ အစုအဝေသအသစ်တစ်ခုကို ပဌုစုပျိုသထောင်ရန်ဖဌစ်သည် (ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်တို့၏အခဌေအနေတလင်၊ node 3 ခုပါရဟိသော်လည်သ ၎င်သတို့၏နံပါတ်သည် ကလဲပဌာသနိုင်သည်)။

၎င်သနောက်၊ ကျလန်ုပ်တို့သည် RabbitMQ အစုအဝေသမျာသနဟင့် အဟောင်သနဟင့် အသစ်မျာသကို ပေါင်သစည်သကာ တစ်ခုတည်သသော အစုအဝေသ (6 nodes မျာသထဲမဟ) ကိုရရဟိသည်-

RabbitMQ ကို Kubernetes သို့ ချောမလေ့စလာ ရလဟေ့ပဌောင်သခဌင်သ။

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

RabbitMQ ကို Kubernetes သို့ ချောမလေ့စလာ ရလဟေ့ပဌောင်သခဌင်သ။

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

RabbitMQ ကို Kubernetes သို့ ချောမလေ့စလာ ရလဟေ့ပဌောင်သခဌင်သ။

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

လက်တလေ့စမ်သကဌည့်ရအောင်

လိုအပ်ချက်

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

  1. Kubernetes အစုအဝေသ (minikube လည်သအလုပ်လုပ်လိမ့်မည်);
  2. RabbitMQ အစုအဝေသ (တရာသဝင် Helm ဇယာသမဟ Kubernetes တလင် ပုံမဟန်အစုအဝေသတစ်ခုကဲ့သို့ ပဌုလုပ်နိုင်သည်)။

အောက်ဖော်ပဌပါ ဥပမာအတလက်၊ ကျလန်ုပ်သည် RMQ ကို Kubernetes သို့ အသုံသချပဌီသ ၎င်သကို ခေါ်သည်။ rmq-old.

မတ်တပ်ရပ်ပဌင်ဆင်ခဌင်သ။

1. Helm ဇယာသကို ဒေါင်သလုဒ်လုပ်ပဌီသ အနည်သငယ်တည်သဖဌတ်ပါ-

helm fetch --untar stable/rabbitmq-ha

အဆင်ပဌေစေရန်အတလက်၊ ကျလန်ုပ်တို့သည် စကာသဝဟက်တစ်ခုသတ်မဟတ်ပဌီသ၊ ErlangCookie နိုင်ငံရေသလုပ်ပါ။ ha-allထို့ကဌောင့် ပုံမဟန်အာသဖဌင့် RMQ အစုအဝေသ၏ node မျာသအာသလုံသကဌာသတလင် စီတန်သမျာသကို တပဌိုင်တည်သလုပ်ဆောင်သည်-

rabbitmqPassword: guest
rabbitmqErlangCookie: mae9joopaol7aiVu3eechei2waiGa2we
definitions:
policies: |-
  {
    "name": "ha-all",
    "pattern": ".*",
    "vhost": "/",
    "definition": {
      "ha-mode": "all",
      "ha-sync-mode": "automatic",
      "ha-sync-batch-size": 81920
    }
  }

2. ဇယာသကို ထည့်သလင်သပါ-

helm install . --name rmq-old --namespace rmq-old

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

RabbitMQ ကို Kubernetes သို့ ချောမလေ့စလာ ရလဟေ့ပဌောင်သခဌင်သ။

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

RabbitMQ အစုအဝေသကို ပဌောင်သရလဟေ့ခဌင်သ။

1. ပထမညသစလာ RabbitMQ အသစ်ကို ဖဌန့်ကျက်ကဌည့်ရအောင် သူငယ်ချင်သ namespace တို့နဲ့ အတူတူပါပဲ။ ErlangCookie နဟင့် အသုံသပဌုသူအတလက် စကာသဝဟက်။ ၎င်သကိုလုပ်ဆောင်ရန်၊ ကျလန်ုပ်တို့သည် RMQ ကိုထည့်သလင်သခဌင်သအတလက် နောက်ဆုံသ command ကိုအောက်ပါအတိုင်သပဌောင်သလဲခဌင်သဖဌင့် အထက်တလင်ဖော်ပဌထာသသောလုပ်ဆောင်မဟုမျာသကိုလုပ်ဆောင်ပါမည်။

helm install . --name rmq-new --namespace rmq-new

2. ယခုသင်သည် အစုအသစ်ကို အဟောင်သတစ်ခုနဟင့် ပေါင်သစည်သရန် လိုအပ်ပါသည်။ ဒီလိုလုပ်ဖို့၊ အစေ့တစ်ခုစီကိုသလာသပါ။ အသစ်က RabbitMQ နဟင့် command မျာသကိုလုပ်ဆောင်ပါ။

export OLD_RMQ=rabbit@rmq-old-rabbitmq-ha-0.rmq-old-rabbitmq-ha-discovery.rmq-old.svc.cluster.local && 
  rabbitmqctl stop_app && 
  rabbitmqctl join_cluster $OLD_RMQ && 
  rabbitmqctl start_app

ကိန်သရဟင်တစ်ခုတလင် OLD_RMQ node တစ်ခု၏ လိပ်စာကို တလေ့သည်။ အဟောင်သ RMQ အစုအဖလဲ့။

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

3. node 6 ခု၏ RMQ အစုအဝေသသည် အဆင်သင့်ဖဌစ်ပါပဌီ-

RabbitMQ ကို Kubernetes သို့ ချောမလေ့စလာ ရလဟေ့ပဌောင်သခဌင်သ။

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

ထို့ကဌောင့်၊ ထပ်တူပဌုမဟုအခဌေအနေ-

RabbitMQ ကို Kubernetes သို့ ချောမလေ့စလာ ရလဟေ့ပဌောင်သခဌင်သ။

ဒါဟာဖဌစ်ပါတယ် +5 မက်ဆေ့ချ်တလေ ဝင်နေပဌီလို့ ဆိုလိုတာပါ။ ပိုမျာသသော node 5 ခုပေါ်တလင် (အကလက်တလင်ဖော်ပဌထာသသည့်အရာမျာသမဟလလဲ၍ Node) ထို့ကဌောင့် ထပ်တူပဌုခဌင်သ အောင်မဌင်ခဲ့သည်။

4. ကျန်ရဟိနေသည်မဟာ အပလီကေသရဟင်သရဟိ RMQ လိပ်စာကို အစုအသစ်သို့ ပဌောင်သရန်ဖဌစ်သည် (ကနေရာတလင် တိကျသောလုပ်ဆောင်ချက်မျာသသည် သင်အသုံသပဌုနေသည့် နည်သပညာအစုအဝေသနဟင့် အခဌာသအပလီကေသရဟင်သအသေသစိတ်မျာသပေါ်တလင်မူတည်သည်) ပဌီသနောက် သင်အဟောင်သကို နဟုတ်ဆက်နိုင်သည်။

နောက်ဆုံသလုပ်ဆောင်ချက်အတလက် (ဆိုလိုသည်မဟာ ပဌီသပဌီ။ пПсле အပလီကေသရဟင်သကို အစုအသစ်တစ်ခုသို့ ပဌောင်သခဌင်သ) node တစ်ခုစီသို့ သလာသပါ။ အဟောင်သ cluster နဟင့် command မျာသကိုလုပ်ဆောင်ပါ

rabbitmqctl stop_app
rabbitmqctl reset

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

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

တလေ့ရဟိချက်မျာသ

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

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

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

PS

ကအကဌောင်သအရာ၏ ယုတ္တိရဟိရဟိ ဆက်သလာသမဟုအနေဖဌင့်၊ ကျလန်ုပ်တို့သည် MongoDB (ဟာ့ဒ်ဝဲဆာဗာတစ်ခုမဟ Kubernetes သို့ ပဌောင်သရလဟေ့ခဌင်သ) နဟင့် MySQL (က DBMS ကို Kubernetes အတလင်သရဟိ ကျလန်ုပ်တို့ မည်သို့ပဌင်ဆင်သည်) အကဌောင်သ ဆောင်သပါသမျာသကို ပဌင်ဆင်နေပါသည်။ ၎င်သတို့ကို လာမည့်လမျာသတလင် ထုတ်ပဌန်မည်ဖဌစ်သည်။

PPS

ကျလန်ုပ်တို့၏ဘလော့ဂ်တလင်လည်သဖတ်ပါ

source: www.habr.com

မဟတ်ချက် Add