Cassandra ၏ Kubernetes သို့ ပြောင်းရွှေ့ခြင်း- လုပ်ဆောင်ချက်များနှင့် ဖြေရှင်းချက်များ

Cassandra ၏ Kubernetes သို့ ပြောင်းရွှေ့ခြင်း- လုပ်ဆောင်ချက်များနှင့် ဖြေရှင်းချက်များ

ကျွန်ုပ်တို့သည် Apache Cassandra ဒေတာဘေ့စ်ကို ပုံမှန်ကြုံတွေ့ရပြီး Kubernetes အခြေပြု အခြေခံအဆောက်အဦအတွင်း ၎င်းကို လုပ်ဆောင်ရန် လိုအပ်ပါသည်။ ဤအကြောင်းအရာတွင် Cassandra သို့ K8s သို့ ပြောင်းရွှေ့ရန်အတွက် လိုအပ်သော အဆင့်များ၊ စံနှုန်းများနှင့် လက်ရှိဖြေရှင်းချက် (အော်ပရေတာများ၏ ခြုံငုံသုံးသပ်ချက် အပါအဝင်) ကို ကျွန်ုပ်တို့၏အမြင်ကို မျှဝေပါမည်။

“မိန်းမကို အုပ်စိုးနိုင်သူသည် နိုင်ငံတော်ကို အုပ်စိုးနိုင်သည်”

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

  • Cassandra ကို Java ဖြင့် ရေးသားထားသည်။
  • Cassandra topology တွင် အဆင့်များစွာ ပါဝင်သည်-
    • Node - အသုံးပြုထားသော Cassandra ဥပမာတစ်ခု။
    • Rack သည် တူညီသောဒေတာစင်တာတွင်ရှိသော အချို့သောလက္ခဏာများဖြင့် ပေါင်းစည်းထားသော Cassandra instances အုပ်စုတစ်ခုဖြစ်သည်။
    • Datacenter - ဒေတာစင်တာတစ်ခုတွင်တည်ရှိသော Cassandra ဖြစ်ရပ်များအုပ်စုအားလုံးကိုစုစည်းထားသည်။
    • Cluster သည် ဒေတာစင်တာအားလုံး၏ စုစည်းမှုတစ်ခုဖြစ်သည်။
  • Cassandra သည် node တစ်ခုကိုဖော်ထုတ်ရန် IP လိပ်စာကိုအသုံးပြုသည်။
  • စာရေးခြင်းနှင့် စာဖတ်ခြင်း လုပ်ငန်းများကို အရှိန်မြှင့်ရန် Cassandra သည် ဒေတာအချို့ကို RAM တွင် သိမ်းဆည်းထားသည်။

ယခု - Kubernetes သို့ အမှန်တကယ် အလားအလာရှိသော ပြောင်းရွှေ့မှုဆီသို့။

လွှဲပြောင်းခြင်းအတွက် စာရင်းစစ်

Cassandra ၏ Kubernetes သို့ ပြောင်းရွှေ့ခြင်းအကြောင်းပြောရာတွင်၊ ရွှေ့ခြင်းဖြင့် စီမံခန့်ခွဲရန် ပိုမိုအဆင်ပြေလာမည်ဟု ကျွန်ုပ်တို့ မျှော်လင့်ပါသည်။ ဒီအတွက် ဘာတွေလိုအပ်မလဲ၊ အဲဒါအတွက် ဘာကူညီပေးမလဲ။

1. ဒေတာသိုလှောင်မှု

ရှင်းလင်းထားပြီးဖြစ်သည့်အတိုင်း Cassanda သည် ဒေတာအစိတ်အပိုင်းကို RAM တွင် သိမ်းဆည်းထားသည်။ အမှတ်တရ. ဒါပေမယ့် ပုံစံနဲ့ disk မှာ သိမ်းဆည်းထားတဲ့ ဒေတာရဲ့ အခြားအစိတ်အပိုင်းတစ်ခုရှိပါတယ်။ SSTable. ဤဒေတာတွင် အကြောင်းအရာတစ်ခုကို ထည့်သွင်းထားသည်။ မှတ်တမ်းပြုပါ။ - ဒစ်ခ်တွင်လည်း သိမ်းဆည်းထားသည့် ငွေပေးငွေယူအားလုံး၏ မှတ်တမ်းများ။

Cassandra ၏ Kubernetes သို့ ပြောင်းရွှေ့ခြင်း- လုပ်ဆောင်ချက်များနှင့် ဖြေရှင်းချက်များ
Cassandra တွင် ငွေပေးငွေယူဇယားကို ရေးပါ။

Kubernetes တွင် ဒေတာသိမ်းဆည်းရန် PersistentVolume ကို အသုံးပြုနိုင်ပါသည်။ သက်သေပြထားသော ယန္တရားများကြောင့် Kubernetes တွင် ဒေတာနှင့် လုပ်ဆောင်ခြင်းသည် နှစ်စဉ်ပိုမိုလွယ်ကူလာသည်။

Cassandra ၏ Kubernetes သို့ ပြောင်းရွှေ့ခြင်း- လုပ်ဆောင်ချက်များနှင့် ဖြေရှင်းချက်များ
ကျွန်ုပ်တို့သည် Cassandra ၎င်း၏ကိုယ်ပိုင် PersistentVolume ဖြင့် pod တစ်ခုစီကို ခွဲဝေပေးပါမည်။

Cassandra ကိုယ်တိုင်က data replication ကို အဓိပ္ပာယ်သက်ရောက်ပြီး ၎င်းအတွက် built-in ယန္တရားများကို ပေးဆောင်သည်ကို သတိပြုရန် အရေးကြီးပါသည်။ ထို့ကြောင့် အကယ်၍ သင်သည် Node အများအပြားမှ Cassandra အစုအဝေးတစ်ခုကို တည်ဆောက်နေပါက ဒေတာသိမ်းဆည်းရန်အတွက် Ceph သို့မဟုတ် GlusterFS ကဲ့သို့သော ဖြန့်ဝေသည့်စနစ်များကို အသုံးပြုရန် မလိုအပ်ပါ။ ဤကိစ္စတွင်၊ host disk ကိုအသုံးပြု၍ ဒေတာကိုသိမ်းဆည်းခြင်းသည် ယုတ္တိတန်ပါသည်။ local persistent disks များ သို့မဟုတ် တပ်ဆင်ခြင်း။ hostPath.

နောက်ထပ်မေးခွန်းတစ်ခုမှာ အင်္ဂါရပ်ဌာနခွဲတစ်ခုစီအတွက် developer များအတွက် သီးခြားပတ်ဝန်းကျင်တစ်ခုကို ဖန်တီးလိုလျှင်ဖြစ်သည်။ ဤကိစ္စတွင်၊ မှန်ကန်သောနည်းလမ်းမှာ Cassandra node တစ်ခုကို မြှင့်တင်ပြီး ဒေတာကို ဖြန့်ဝေထားသော သိုလှောင်မှုတွင် သိမ်းဆည်းရန်ဖြစ်သည်၊ ဆိုလိုသည်မှာ၊ ဖော်ပြထားသော Ceph နှင့် GlusterFS တို့သည် သင့်ရွေးချယ်စရာများဖြစ်လိမ့်မည်။ ထို့နောက် Kuberntes cluster node များထဲမှ တစ်ခုကို ဆုံးရှုံးသွားသော်လည်း စမ်းသပ်ဒေတာ ဆုံးရှုံးသွားမည်မဟုတ်ကြောင်း ဆော့ဖ်ဝဲအင်ဂျင်နီယာက သေချာစေမည်ဖြစ်သည်။

၁.၅။ စောင့်ကြည့်ရေး

Kubernetes တွင် စောင့်ကြည့်ခြင်းကို အကောင်အထည်ဖော်ရန်အတွက် အပြိုင်အဆိုင်မရှိသော ရွေးချယ်မှုမှာ Prometheus ဖြစ်သည်။ (ဒီအကြောင်းကို အသေးစိတ်ပြောထားပါတယ်။ ဆက်စပ်အစီရင်ခံစာ). Cassandra သည် Prometheus အတွက် မက်ထရစ်တင်ပို့သူများနှင့် မည်သို့လုပ်ဆောင်နေသနည်း။ Grafana အတွက် လိုက်ဖက်တဲ့ ဒက်ရှ်ဘုတ်တွေနဲ့ ပိုအရေးကြီးတာက ဘာလဲ။

Cassandra ၏ Kubernetes သို့ ပြောင်းရွှေ့ခြင်း- လုပ်ဆောင်ချက်များနှင့် ဖြေရှင်းချက်များ
Cassandra အတွက် Grafana ရှိ ဂရပ်များ၏ အသွင်အပြင်၏ ဥပမာ

တင်ပို့သူ နှစ်ဦးသာ ရှိသည်။ jmx_exporter и cassandra_exporter.

ကျွန်ုပ်တို့ကိုယ်တိုင်အတွက် ပထမတစ်ခုကို ရွေးချယ်ရခြင်းမှာ၊

  1. JMX Exporter သည် ကြီးထွားဖွံ့ဖြိုးနေပြီး၊ Cassandra Exporter သည် ရပ်ရွာပံ့ပိုးမှုအလုံအလောက်မရရှိသေးပါ။ Cassandra Exporter သည် Cassandra ဗားရှင်းအများစုကို မပံ့ပိုးနိုင်သေးပါ။
  2. အလံတစ်ခုထည့်ခြင်းဖြင့် ၎င်းကို javaagent တစ်ခုအဖြစ် သင်လုပ်ဆောင်နိုင်သည်။ -javaagent:<plugin-dir-name>/cassandra-exporter.jar=--listen=:9180.
  3. သူ့အတွက် တစ်ခုရှိတယ်။ လုံလောက်သော ဒက်ရှ်ဘုတ်Cassandra Exporter နှင့် သဟဇာတမဖြစ်ပါ။

3. Kubernetes ပဏာမများကို ရွေးချယ်ခြင်း။

Cassandra အစုအဝေး၏ အထက်ဖော်ပြပါ ဖွဲ့စည်းပုံအရ၊ အဲဒီမှာ ဖော်ပြထားတဲ့ အရာအားလုံးကို Kubernetes ဝေါဟာရအဖြစ် ဘာသာပြန်ကြပါစို့။

  • Cassandra Node → Pod
  • Cassandra Rack → StatefulSet
  • Cassandra Datacenter → StatefulSets မှ ရေကူးကန်
  • Cassandra Cluster → ???

Cassandra အစုအဝေးတစ်ခုလုံးကို တစ်ပြိုင်နက်စီမံခန့်ခွဲရန် နောက်ထပ်အရာအချို့ ပျောက်ဆုံးနေပါသည်။ ဒါပေမယ့် တစ်ခုခုမရှိရင်၊ ငါတို့ဖန်တီးလို့ရတယ်။ Kubernetes တွင် ဤရည်ရွယ်ချက်အတွက် ၎င်း၏ကိုယ်ပိုင်အရင်းအမြစ်များကို သတ်မှတ်ခြင်းအတွက် ယန္တရားတစ်ခုရှိသည်။ စိတ်ကြိုက်အရင်းအမြစ် အဓိပ္ပါယ်ဖွင့်ဆိုချက်.

Cassandra ၏ Kubernetes သို့ ပြောင်းရွှေ့ခြင်း- လုပ်ဆောင်ချက်များနှင့် ဖြေရှင်းချက်များ
မှတ်တမ်းများနှင့် သတိပေးချက်များအတွက် နောက်ထပ်အရင်းအမြစ်များကို ကြေညာခြင်း။

သို့သော် Custom Resource ကိုယ်တိုင်က ဘာကိုမှ မဆိုလိုပါဘူး၊ အားလုံးက လိုအပ်တယ်။ Controller. အကူအညီတောင်းရန် လိုအပ်နိုင်သည်။ Kubernetes အော်ပရေတာ...

4. အစေ့များဖော်ထုတ်ခြင်း။

အထက်စာပိုဒ်တွင်၊ Cassandra node တစ်ခုသည် Kubernetes တွင် pod တစ်ခုနှင့် ညီမျှမည်ဟု သဘောတူညီခဲ့သည်။ ဒါပေမယ့် pods တွေရဲ့ IP လိပ်စာတွေက အကြိမ်တိုင်း ကွဲပြားပါလိမ့်မယ်။ Cassandra ရှိ node တစ်ခုကို ဖော်ထုတ်ခြင်းသည် IP လိပ်စာပေါ်တွင် အခြေခံသည်... ရလဒ်တစ်ခုစီကို ဖယ်ရှားပြီးနောက် Cassandra အစုအဝေးသည် node အသစ်တစ်ခု ထပ်ထည့်မည်ဖြစ်သည်။

တစ်ခုတည်းတင်မဟုတ်ဘဲ ထွက်လမ်းရှိပါသည်-

  1. ကျွန်ုပ်တို့သည် မှတ်တမ်းများကို လက်ခံသတ်မှတ်ပေးသူများ (Cassandra instances များကို သီးခြားခွဲခြားသတ်မှတ်ပေးသည့် UUID များ) သို့မဟုတ် IP လိပ်စာများဖြင့် သိမ်းဆည်းနိုင်ပြီး အချို့သောဖွဲ့စည်းပုံ/ဇယားများတွင် သိမ်းဆည်းထားနိုင်သည်။ နည်းလမ်းတွင် အဓိက အားနည်းချက် နှစ်ခုရှိသည်။
    • ဆုံမှတ်နှစ်ခု တစ်ပြိုင်နက် ပြုတ်ကျပါက ပြိုင်ဆိုင်မှု အခြေအနေ ဖြစ်ပေါ်နိုင်သည်။ တက်လာပြီးနောက်၊ Cassandra nodes သည် ဇယားမှ IP လိပ်စာတစ်ခုကို တစ်ပြိုင်နက် တောင်းဆိုပြီး တူညီသောအရင်းအမြစ်အတွက် ယှဉ်ပြိုင်မည်ဖြစ်သည်။
    • Cassandra node တစ်ခုသည် ၎င်း၏ဒေတာ ဆုံးရှုံးသွားပါက၊ ၎င်းကို ကျွန်ုပ်တို့ သိရှိနိုင်တော့မည် မဟုတ်ပါ။
  2. ဒုတိယဖြေရှင်းချက်သည် သေးငယ်သောဟက်ကာတစ်ခုလိုပုံရသည်၊ သို့သော် မည်သို့ပင်ဆိုစေကာမူ၊ Cassandra node တစ်ခုစီအတွက် ClusterIP ဖြင့် ဝန်ဆောင်မှုတစ်ခုဖန်တီးနိုင်သည်။ ဤအကောင်အထည်ဖော်မှုတွင် ပြဿနာများ-
    • Cassandra အစုအဝေးတစ်ခုတွင် node အများအပြားရှိနေပါက၊ ကျွန်ုပ်တို့သည် ဝန်ဆောင်မှုများစွာကို ဖန်တီးရမည်ဖြစ်ပါသည်။
    • ClusterIP အင်္ဂါရပ်ကို iptables များမှတစ်ဆင့် လုပ်ဆောင်သည်။ Cassandra အစုအဝေးတွင် (1000... သို့မဟုတ် 100?) node များစွာရှိလျှင် ၎င်းသည် ပြဿနာဖြစ်လာနိုင်သည်။ သို့ပေမယ့် IPVS ကိုအခြေခံ၍ ဟန်ချက်ညီခြင်း။ ဒီပြဿနာကိုဖြေရှင်းနိုင်ပါတယ်။
  3. တတိယဖြေရှင်းချက်မှာ ဆက်တင်ကိုဖွင့်ခြင်းဖြင့် Cassandra nodes အတွက် သီးသန့်ကွန်ရက်တစ်ခုအစား Cassandra nodes ကွန်ရက်ကို အသုံးပြုရန်ဖြစ်သည်။ hostNetwork: true. ဤနည်းလမ်းသည် အချို့သော ကန့်သတ်ချက်များကို ချမှတ်သည်-
    • ယူနစ်များ အစားထိုးရန်။ Node အသစ်တွင် ယခင်တစ်ခုနှင့် တူညီသော IP လိပ်စာရှိရန် လိုအပ်သည် (AWS, GCP ကဲ့သို့ cloud များတွင် ၎င်းကို ပြုလုပ်ရန် မဖြစ်နိုင်သလောက်)။
    • အစုအဝေး၏ ကွန်ရက်ကို အသုံးပြု၍ ကျွန်ုပ်တို့သည် ကွန်ရက်အရင်းအမြစ်များကို ယှဉ်ပြိုင်ရန် စတင်သည်။ ထို့ကြောင့်၊ အစုအဝေးတစ်ခုတွင် Cassandra နှင့် pod တစ်ခုထက်ပို၍ထားခြင်းသည် ပြဿနာရှိလိမ့်မည်။

5. အရန်များ

ကျွန်ုပ်တို့သည် Cassandra node တစ်ခုတည်း၏ဒေတာ၏ ဗားရှင်းအပြည့်အစုံကို အချိန်ဇယားတစ်ခုပေါ်တွင် သိမ်းဆည်းလိုပါသည်။ Kubernetes ကို အသုံးပြု၍ အဆင်ပြေသော အင်္ဂါရပ်ကို ပေးပါသည်။ CronJobဒါပေမယ့် ဒီမှာ Cassandra ကိုယ်တိုင်က ကျွန်တော်တို့ရဲ့ ဘီးတွေပေါ်မှာ စကားပြောတယ်။

Cassandra သည် ဒေတာအချို့ကို မှတ်ဉာဏ်တွင် သိမ်းဆည်းထားကြောင်း ကျွန်ုပ်အား သတိပေးပါရစေ။ အရန်ကူးယူရန် မန်မိုရီမှ ဒေတာ လိုအပ်သည် (အမှတ်တရများ) disk သို့ရွှေ့ပါ (SSTables) ဤအချိန်တွင် Cassandra node သည် ချိတ်ဆက်မှုများကို လက်ခံခြင်းရပ်တန့်သွားပြီး အစုအဝေးမှ လုံးဝပိတ်သွားပါသည်။

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

Cassandra ၏ Kubernetes သို့ ပြောင်းရွှေ့ခြင်း- လုပ်ဆောင်ချက်များနှင့် ဖြေရှင်းချက်များ
Cassandra node များအတွက် မည်သည်ဒေတာအတွက် တာဝန်ရှိသည်ကို သိရှိနိုင်ရန် တိုကင်များဖြန့်ဝေခြင်း။

Kubernetes ရှိ Google မှ Cassandra အရန်ကူးယူခြင်းအတွက် နမူနာ script တစ်ခုကို Kubernetes တွင် တွေ့နိုင်ပါသည်။ ဒီ link ကို. Script ကို ထည့်သွင်းစဉ်းစားခြင်းမရှိသည့် တစ်ခုတည်းသောအချက်မှာ လျှပ်တစ်ပြက်ရိုက်ချက်မရိုက်မီ ဒေတာကို node သို့ ပြန်လည်သတ်မှတ်ခြင်းဖြစ်သည်။ ဆိုလိုသည်မှာ၊ အရန်ကူးခြင်းကို လက်ရှိအခြေအနေအတွက်မဟုတ်ဘဲ၊ အနည်းငယ်စောသောအခြေအနေတစ်ခုအတွက် လုပ်ဆောင်သည်။ သို့သော်၊ ၎င်းသည် အလွန်ယုတ္တိရှိပုံပေါ်သည့် လည်ပတ်မှုမှ node ကို ဖယ်ရှားရန် အထောက်အကူမပြုပါ။

set -eu

if [[ -z "$1" ]]; then
  info "Please provide a keyspace"
  exit 1
fi

KEYSPACE="$1"

result=$(nodetool snapshot "${KEYSPACE}")

if [[ $? -ne 0 ]]; then
  echo "Error while making snapshot"
  exit 1
fi

timestamp=$(echo "$result" | awk '/Snapshot directory: / { print $3 }')

mkdir -p /tmp/backup

for path in $(find "/var/lib/cassandra/data/${KEYSPACE}" -name $timestamp); do
  table=$(echo "${path}" | awk -F "[/-]" '{print $7}')
  mkdir /tmp/backup/$table
  mv $path /tmp/backup/$table
done


tar -zcf /tmp/backup.tar.gz -C /tmp/backup .

nodetool clearsnapshot "${KEYSPACE}"

Cassandra node တစ်ခုမှ အရန်ကူးယူခြင်းအတွက် bash script တစ်ခု၏ ဥပမာ

Kubernetes ရှိ Cassandra အတွက် အဆင်သင့်ဖြေရှင်းချက်

Kubernetes တွင် Cassandra ကိုအသုံးပြုရန် လက်ရှိအသုံးပြုနေသည့်အရာများထဲမှ မည်သည့်အရာသည် ပေးထားသောလိုအပ်ချက်များနှင့် အကိုက်ညီဆုံးဖြစ်သနည်း။

1. StatefulSet သို့မဟုတ် Helm ဇယားများကို အခြေခံ၍ ဖြေရှင်းချက်များ

Cassandra အစုအဝေးကိုလည်ပတ်ရန် အခြေခံ StatefulSets လုပ်ဆောင်ချက်များကို အသုံးပြုခြင်းသည် ကောင်းသောရွေးချယ်မှုဖြစ်သည်။ Helm chart နှင့် Go templates များကိုအသုံးပြုခြင်းဖြင့် Cassandra ကိုအသုံးပြုရန်အတွက် လိုက်လျောညီထွေရှိသော interface ဖြင့် သုံးစွဲသူအား ပေးဆောင်နိုင်ပါသည်။

node ချို့ယွင်းမှုကဲ့သို့ မမျှော်လင့်ထားသည့်အရာများ မဖြစ်ပေါ်မချင်း ၎င်းသည် ပုံမှန်အားဖြင့် ကောင်းမွန်ပါသည်။ Standard Kubernetes ကိရိယာများသည် အထက်ဖော်ပြပါ အင်္ဂါရပ်အားလုံးကို ထည့်သွင်းစဉ်းစား၍မရပါ။ ထို့အပြင်၊ ဤနည်းလမ်းသည် ပိုမိုရှုပ်ထွေးသောအသုံးပြုမှုများအတွက် မည်မျှတိုးချဲ့နိုင်သည်- node အစားထိုးခြင်း၊ အရန်သိမ်းခြင်း၊ ပြန်လည်ရယူခြင်း၊ စောင့်ကြည့်ခြင်း စသည်ဖြင့် ကန့်သတ်ထားသည်။

ကိုယ်စားလှယ်များ:

ဇယားနှစ်ခုစလုံးသည် အညီအမျှ ကောင်းမွန်သော်လည်း အထက်တွင်ဖော်ပြထားသော ပြဿနာများကြောင့် ဖြစ်သည်။

2. Kubernetes အော်ပရေတာပေါ်အခြေခံ၍ ဖြေရှင်းချက်များ

အစုအဖွဲ့ကို စီမံခန့်ခွဲရန် အခွင့်အလမ်းများစွာ ပေးသောကြောင့် ၎င်းတို့သည် ပိုမိုစိတ်ဝင်စားဖွယ်ကောင်းပါသည်။ အခြားဒေတာဘေ့စ်များကဲ့သို့ Cassandra အော်ပရေတာအား ဒီဇိုင်းထုတ်ရန်အတွက်၊ ပုံစံကောင်းသည် Sidecar <-> Controller <-> CRD နှင့် တူသည်-

Cassandra ၏ Kubernetes သို့ ပြောင်းရွှေ့ခြင်း- လုပ်ဆောင်ချက်များနှင့် ဖြေရှင်းချက်များ
ကောင်းစွာဒီဇိုင်းထုတ်ထားသော Cassandra အော်ပရေတာတွင် Node စီမံခန့်ခွဲမှုအစီအစဉ်

ရှိပြီးသား အော်ပရေတာတွေကို ကြည့်ရအောင်။

1. Instaclustr မှ Cassandra-အော်ပရေတာ

  • GitHub
  • အဆင်သင့်- အယ်လ်ဖာ
  • လိုင်စင်- Apache 2.0
  • Java တွင် အကောင်အထည်ဖော်ခဲ့သည်။

၎င်းသည် စီမံခန့်ခွဲထားသော Cassandra ဖြန့်ကျက်မှုများကို ပံ့ပိုးပေးသည့် ကုမ္ပဏီတစ်ခုမှ အလွန်အလားအလာကောင်းပြီး တက်ကြွစွာ ဖွံ့ဖြိုးတိုးတက်နေသော ပရောဂျက်တစ်ခုဖြစ်သည်။ အထက်တွင်ဖော်ပြထားသည့်အတိုင်း ၎င်းသည် HTTP မှတစ်ဆင့် ညွှန်ကြားချက်များကို လက်ခံသည့် ဘေးတွဲကွန်တိန်နာကို အသုံးပြုသည်။ Java တွင် ရေးသားထား သော၊ ၎င်းသည် တစ်ခါတစ်ရံတွင် client-go library ၏ ပိုမိုအဆင့်မြင့်သော လုပ်ဆောင်နိုင်စွမ်း ချို့တဲ့ပါသည်။ ထို့အပြင်၊ အော်ပရေတာသည် Datacenter တစ်ခုအတွက် မတူညီသော Racks ကို မပံ့ပိုးပါ။

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

2. Jetstack မှ Navigator

  • GitHub
  • အဆင်သင့်- အယ်လ်ဖာ
  • လိုင်စင်- Apache 2.0
  • Golang တွင် အကောင်အထည်ဖော်ခဲ့သည်။

DB-as-a-Service ကို အသုံးပြုရန် ဒီဇိုင်းထုတ်ထားသော ထုတ်ပြန်ချက်။ လက်ရှိတွင် Elasticsearch နှင့် Cassandra ဒေတာဘေ့စ်နှစ်ခုကို ပံ့ပိုးထားသည်။ ၎င်းတွင် RBAC မှတစ်ဆင့် ဒေတာဘေ့စ်ဝင်ရောက်ခွင့်ထိန်းချုပ်မှုကဲ့သို့သော စိတ်ဝင်စားဖွယ်ဖြေရှင်းနည်းများ ပါရှိသည်။ အနီးကပ်ကြည့်ရကျိုးနပ်မယ့် စိတ်ဝင်စားစရာကောင်းတဲ့ ပရောဂျက်တစ်ခု၊ ဒါပေမယ့် လွန်ခဲ့တဲ့ တစ်နှစ်ခွဲက နောက်ဆုံးကတိကဝတ်ကို ပြုလုပ်ခဲ့ပြီး သူ့ရဲ့အလားအလာကို ရှင်းရှင်းလင်းလင်း လျော့နည်းသွားစေတယ်။

3. vgkowski မှ Cassandra-အော်ပရေတာ

  • GitHub
  • အဆင်သင့်- အယ်လ်ဖာ
  • လိုင်စင်- Apache 2.0
  • Golang တွင် အကောင်အထည်ဖော်ခဲ့သည်။

သိုလှောင်မှုတွင် နောက်ဆုံး ကတိကဝတ်သည် လွန်ခဲ့သော တစ်နှစ်ကျော်က ဖြစ်သောကြောင့် ၎င်းတို့သည် ၎င်းအား "လေးနက်စွာ" မစဉ်းစားခဲ့ပေ။ အော်ပရေတာ ဖွံ့ဖြိုးတိုးတက်မှုကို စွန့်လွှတ်လိုက်သည်- ထောက်ခံထားသည့်အတိုင်း အစီရင်ခံထားသည့် Kubernetes ၏ နောက်ဆုံးဗားရှင်းမှာ 1.9 ဖြစ်သည်။

4. Rook မှ Cassandra-အော်ပရေတာ

  • GitHub
  • အဆင်သင့်- အယ်လ်ဖာ
  • လိုင်စင်- Apache 2.0
  • Golang တွင် အကောင်အထည်ဖော်ခဲ့သည်။

ဖွံ့ဖြိုးတိုးတက်မှုသည် ကျွန်ုပ်တို့အလိုရှိသလောက် မတိုးတက်သေးသော အော်ပရေတာတစ်ခုဖြစ်သည်။ ၎င်းတွင် ClusterIP (တူညီသော "hack") ဖြင့် Service ကိုအသုံးပြု၍ node များကိုခွဲခြားသတ်မှတ်ခြင်းဆိုင်ရာပြဿနာကိုဖြေရှင်းပေးသည်... ဒါပေမယ့် အခုလောလောဆယ်တော့ ဒီလောက်ပါပဲ။ လောလောဆယ်တွင် စောင့်ကြည့်စစ်ဆေးခြင်း သို့မဟုတ် အရန်သိမ်းဆည်းခြင်းများ မရှိပါ (နည်းလမ်းအားဖြင့်၊ ကျွန်ုပ်တို့သည် စောင့်ကြည့်ရန်ဖြစ်သည်။ ကိုယ်တိုင်ယူခဲ့) စိတ်ဝင်စားစရာကောင်းသည့်အချက်မှာ သင်သည် ဤအော်ပရေတာကို အသုံးပြု၍ ScyllaDB ကို အသုံးချနိုင်သည်။

NB- ကျွန်ုပ်တို့၏ပရောဂျက်များထဲမှတစ်ခုတွင် ပြုပြင်မွမ်းမံမှုအနည်းငယ်ဖြင့် ဤအော်ပရေတာကို အသုံးပြုခဲ့သည်။ လည်ပတ်မှုကာလတစ်ခုလုံး (လုပ်ငန်းလည်ပတ်မှု ~ 4 လ) အတွင်း အော်ပရေတာ၏အလုပ်တွင် ပြဿနာတစ်စုံတစ်ရာမရှိခဲ့ပါ။

5. လိမ္မော်သီးမှ CassKop

  • GitHub
  • အဆင်သင့်- အယ်လ်ဖာ
  • လိုင်စင်- Apache 2.0
  • Golang တွင် အကောင်အထည်ဖော်ခဲ့သည်။

စာရင်းတွင် အသက်အငယ်ဆုံး အော်ပရေတာ- ပထမဆုံး ကတိကဝတ်ကို မေလ 23 ရက်၊ 2019 ခုနှစ်တွင် ပြုလုပ်ခဲ့သည်။ ယခု ကျွန်ုပ်တို့၏စာရင်းမှ အင်္ဂါရပ်များစွာကို ၎င်း၏လက်နက်တိုက်တွင်ရှိပြီး၊ နောက်ထပ်အသေးစိတ်အချက်အလက်များကို ပရောဂျက်သိုလှောင်ခန်းတွင် တွေ့ရှိနိုင်ပါသည်။ အော်ပရေတာသည် လူကြိုက်များသော အော်ပရေတာ-sdk ကို အခြေခံ၍ တည်ဆောက်ထားသည်။ သေတ္တာထဲက စောင့်ကြည့်မှုကို ပံ့ပိုးပေးတယ်။ အခြားအော်ပရေတာများနှင့်အဓိကကွာခြားချက်မှာအသုံးပြုမှုဖြစ်သည်။ CassKop ပလပ်အင်Python တွင် အကောင်အထည်ဖော်ပြီး Cassandra node များကြား ဆက်သွယ်မှုတွင် အသုံးပြုသည်။

တွေ့ရှိချက်များ

Cassandra ကို Kubernetes သို့ ပို့ဆောင်ရန် ဖြစ်နိုင်ခြေရှိသော ရွေးချယ်မှုများနှင့် ချဉ်းကပ်မှု အရေအတွက်သည် သူ့ဘာသာသူ ပြောသည်- ခေါင်းစဉ်သည် တောင်းဆိုနေပါသည်။

ဤအဆင့်တွင်၊ သင်သည် သင့်ကိုယ်ပိုင်အန္တရာယ်နှင့် အန္တရာယ်ဖြင့် အထက်ဖော်ပြပါ တစ်ခုခုကို စမ်းကြည့်နိုင်သည်- developer တစ်ခုမှ ထုတ်လုပ်မှုပတ်ဝန်းကျင်တွင် ၎င်းတို့၏ဖြေရှင်းချက်၏ 100% လည်ပတ်မှုကို အာမခံချက်မရှိပါ။ သို့သော်၊ များစွာသောထုတ်ကုန်များသည် ဖွံ့ဖြိုးရေးခုံတန်းလျားများတွင် အသုံးပြုရန် အလားအလာရှိနေပြီဖြစ်သည်။

နောင်တွင် သင်္ဘောပေါ်ရှိ အမျိုးသမီးသည် အဆင်ပြေလာမည်ဟု ထင်ပါသည်။

PS

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

source: www.habr.com

မှတ်ချက် Add