GitLab သည် သင့်အာသ ကဌီသမာသသော NextCloud သိုလဟောင်မဟုမျာသကို အရန်ကူသရန် မည်သို့ကူညီပေသမည်နည်သ။

ဟေသ ဟာဘ!

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

တပ်ဆင်မဟုမျာသ၏ အင်္ဂါရပ်မျာသမဟ ဖဌစ်ပေါ်လာသည့် ပဌဿနာမျာသမဟာ ဒေတာမျာသစလာ ရဟိနေခဌင်သ ဖဌစ်သည်။ Nextcloud မဟ ပံ့ပိုသပေသသော ဗာသရဟင်သဖဌင့် ဗာသရဟင်သပဌောင်သခဌင်သ၊ ထပ်နေခဌင်သ၊ အကဌောင်သအရာဆိုင်ရာ အကဌောင်သပဌချက်မျာသနဟင့် အခဌာသအရာမျာသသည် ထပ်တူမျာသစလာကို ဖန်တီသပေသပါသည်။

စောပိုငျသကာလ

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

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

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

အရင်ဆုံသ input data ကိုကဌည့်ရအောင်။ ကျလန်ုပ်တို့ လိုအပ်သည်-

  • node တစ်ခု သို့မဟုတ် အမျာသအပဌာသ၏ သတ်မဟတ်ချက်မျာသတလင် ချဲ့ထလင်နိုင်မဟု။ ကဌီသမာသသော တပ်ဆင်မဟုအတလက် ကျလန်ုပ်တို့သည် minio ကို သိုလဟောင်မဟုအဖဌစ် အသုံသပဌုပါသည်။
  • အရန်သိမ်သဆည်သမဟုမျာသ လုပ်ဆောင်ရာတလင် ပဌဿနာမျာသအကဌောင်သ ရဟာဖလေပါ။
  • သင့်ဖောက်သည်မျာသနဟင့်/သို့မဟုတ် ကျလန်ုပ်တို့နဟင့်အတူ အရန်ကူသယူထာသရန် လိုအပ်ပါသည်။
  • ပဌဿနာတလေကို မဌန်မဌန်ဆန်ဆန် ကိုင်တလယ်ဖဌေရဟင်သပါ။
  • ဖောက်သည်မျာသနဟင့် တပ်ဆင်မဟုမျာသသည် တစ်ခုနဟင့်တစ်ခု အလလန်ကလာခဌာသသည် - တူညီမဟုမရနိုင်ပါ။
  • ပဌန်လည်ရယူခဌင်သအမဌန်နဟုန်သသည် အခဌေအနေနဟစ်ခုတလင် အနည်သဆုံသဖဌစ်သင့်သည်- အပဌည့်အဝ ပဌန်လည်ရယူခဌင်သ (ဘေသအန္တရာယ်)၊ အမဟာသကဌောင့် ဖျက်လိုက်သော ဖိုင်တလဲတစ်ခု။
  • ကူသယူခဌင်သ လုပ်ဆောင်ချက် လိုအပ်ပါသည်။

GitLab သည် သင့်အာသ ကဌီသမာသသော NextCloud သိုလဟောင်မဟုမျာသကို အရန်ကူသရန် မည်သို့ကူညီပေသမည်နည်သ။

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

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

ကျလန်ုပ်တို့၏ကုမ္ပဏီတလင် open source မူဝါဒရဟိသောကဌောင့်၊ ကျလန်ုပ်တို့သည် open source ဖဌေရဟင်သချက်ကို ရဟာဖလေနေပါသည်။ တစ်ဖန် ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏တိုသတက်မဟုမျာသကို မျဟဝေပဌီသ ၎င်သတို့ကို ပို့စ်တင်ပါ။ ဥပမာ၊ GitHub မဟာရဟိတယ်။ Nextcloud အတလက် ကျလန်ုပ်တို့၏ ပလပ်အင်မတော်တဆ သို့မဟုတ် ရည်ရလယ်ချက်ရဟိရဟိ ဖျက်ပစ်သည့်အခါတလင် ကျလန်ုပ်တို့သည် သုံသစလဲသူမျာသကို ပံ့ပိုသပေသသော ဒေတာလုံခဌုံရေသကို မဌဟင့်တင်ပေသပါသည်။

အရန်ကိရိယာမျာသ

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

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

ထပ်တူပလာသခဌင်သဖဌင့် အရန်ကိရိယာမျာသကို open source တလင် ရနိုင်သည် (Habre တလင် ရဟိခဲ့သည်။ ဆောင်သပါသမျာသ ကအကဌောင်သအရာနဟင့် ပတ်သက်) နဲ့ ငါတို့ရဲ့ ဆန်ကာတင်တလေ ဖဌစ်ခဲ့တယ်။ Borg О အနာသယူ. ကျလန်ုပ်တို့၏ အပလီကေသရဟင်သနဟစ်ခု၏ နဟိုင်သယဟဉ်ချက်ကို အောက်တလင်ဖော်ပဌထာသသည်၊ သို့သော် ယခုအချိန်တလင် အစီအစဉ်တစ်ခုလုံသကို ကျလန်ုပ်တို့ မည်သို့စီစဉ်ထာသကဌောင်သ သင့်အာသ ပဌောပဌပါမည်။

အရန်သိမ်သဆည်သမဟုမျာသကို စီမံခန့်ခလဲခဌင်သ။

Borg နဟင့် Restic တို့သည် ကောင်သမလန်သော်လည်သ ထုတ်ကုန်နဟစ်ခုလုံသတလင် ဗဟိုချုပ်ကိုင်မဟု ထိန်သချုပ်မဟု ယန္တရာသ မရဟိပါ။ စီမံခန့်ခလဲမဟုနဟင့် ထိန်သချုပ်မဟုရည်ရလယ်ချက်အတလက်၊ ကျလန်ုပ်တို့သည် အလိုအလျောက်လုပ်ဆောင်ခဌင်သအပါအဝင် ကျလန်ုပ်တို့၏အလုပ်မျာသကို စိတ်ကူသမယဉ်နိုင်ဘဲ၊ ကျလန်ုပ်တို့သည် လက်တလေ့လုပ်ဆောင်ထာသပဌီသဖဌစ်သော ကိရိယာတစ်ခုကို ရလေသချယ်ခဲ့သည် - ၎င်သသည် လူသိမျာသသော CI/CD - GitLab ဖဌစ်သည်။

အိုင်ဒီယာမဟာ အောက်ပါအတိုင်သဖဌစ်သည်- gitlab-runner ကို Nextcloud ဒေတာသိမ်သဆည်သသည့် node တစ်ခုစီတလင် ထည့်သလင်သထာသသည်။ အပဌေသသမာသသည် အရန်သိမ်သခဌင်သလုပ်ငန်သစဉ်ကို စောင့်ကဌည့်သည့်အချိန်ဇယာသတစ်ခုပေါ်တလင် script တစ်ခုလုပ်ဆောင်ပဌီသ Borg သို့မဟုတ် Restic ကိုစတင်သည်။

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

ဒီမဟာ ဒီမဟာ GitHub ပါ။ အလုပ်အမျိုသမျိုသအတလက် script နမူနာမျာသကို တင်ခဲ့ပဌီသ၊ ၎င်သကို Nextcloud တလင်သာမက အခဌာသသော ဝန်ဆောင်မဟုမျာသစလာ၏ အရန်သိမ်သဆည်သမဟုတလင်ပါ ပူသတလဲတင်လိုက်ပါသည်။ ၎င်သကို ကိုယ်တိုင် configure မလုပ်လိုပါက (ကျလန်ုပ်တို့ မလိုလာသပါ) နဟင့် .gitlab-ci.yml

Gitlab API တလင် CI/CD timeout ကို ပဌောင်သလဲရန် နည်သလမ်သမရဟိသေသသော်လည်သ ၎င်သသည် သေသငယ်ပါသည်။ တိုသဖို့ လိုတယ်ပဌောရမယ်။ 1d.

ကံကောင်သထောက်မစလာ၊ GitLab သည် commit တစ်ခုအရသာမက၊ အချိန်ဇယာသတစ်ခုအရသာ စတင်နိုင်သည်၊ ၎င်သသည် ကျလန်ုပ်တို့လိုအပ်သောအရာဖဌစ်သည်။

အခု wrapper script အကဌောင်သ။

ကဇာတ်ညလဟန်သအတလက် အောက်ပါအခဌေအနေမျာသကို ကျလန်ုပ်တို့ သတ်မဟတ်သည်-

  • ၎င်သကို အပဌေသသမာသနဟင့် လက်ဖဌင့် နဟစ်မျိုသလုံသ တူညီသော လုပ်ဆောင်နိုင်စလမ်သဖဌင့် ကလန်ဆိုသလ်မဟ စတင်သင့်သည်။
  • error handlers ရဟိရမည်-
  • ကုဒ်ပဌန်ပေသသည်။
  • မဟတ်တမ်သရဟိ စာကဌောင်သတစ်ခုကို ရဟာဖလေပါ။ ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်တို့အတလက်၊ အမဟာသတစ်ခုသည် ပရိုဂရမ်သည် သေစေနိုင်သည်ဟု မယူဆသည့် မက်ဆေ့ချ်တစ်ခု ဖဌစ်နိုင်သည်။
  • လုပ်ဆောင်နေစဉ် အချိန်ကုန်သလာသသည်။ ညသဆောင်ချိန်သည် ကျိုသကဌောင်သဆီလျော်မဟုရဟိရမည်။
  • အလလန်အသေသစိတ်မဟတ်တမ်သတစ်ခု လိုအပ်ပါသည်။ ဒါပေမယ့် error တစ်ခုရဟိလို့သာ။
  • မစတင်မီ စမ်သသပ်မဟုမျာသစလာကိုလည်သ ပဌုလုပ်ခဲ့သည်။
  • ပံ့ပိုသမဟုလုပ်ငန်သစဉ်အတလင်သ အသုံသဝင်ကဌောင်သ တလေ့ရဟိရသည့် အဆင်ပဌေစေရန် ဘောနပ်စ်အသေသစာသမျာသ-
  • အစနဟင့်အဆုံသကို local machine ၏ syslog တလင် မဟတ်တမ်သတင်ထာသသည်။ ၎င်သသည် စနစ်အမဟာသအယလင်သမျာသနဟင့် အရန်သိမ်သခဌင်သလုပ်ငန်သကို ချိတ်ဆက်ရန် ကူညီပေသသည်။
  • အမဟာသအယလင်သမဟတ်တမ်သ၏ တစ်စိတ်တစ်ပိုင်သ ရဟိပါက၊ သည် stdout သို့ output ဖဌစ်ပဌီသ၊ မဟတ်တမ်သတစ်ခုလုံသကို သီသခဌာသဖိုင်တစ်ခုသို့ ရေသထာသသည်။ CI ကို ချက်ချင်သကဌည့်ရဟုပဌီသ အသေသအဖလဲဖဌစ်လျဟင် အမဟာသအယလင်သကို အကဲဖဌတ်ရန် အဆင်ပဌေသည်။
  • အမဟာသရဟာပဌင်ခဌင်သမုဒ်မျာသ။

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

open source နဟင့် ပတ်သက်သော မည်သည့် အကဌံပဌုချက်မျာသနဟင့် မဟတ်ချက်မျာသမဆို ထည့်သလင်သစဉ်သစာသရန် ကျလန်ုပ်တို့ ဝမ်သမဌောက်မိပါသည် - ကဌိုဆိုပါတယ်။

ဘယ်လိုကလုပ်ငန်သကိုတတ်

Bash executor ပါသော အပဌေသသမာသကို အရန်ခုံတလင် စတင်သည်။ အစီအစဉ်ဆလဲသူအရ အလုပ် CI/CD ကို အထူသအလဟည့်ကျဖဌင့် စတင်သည်။ အပဌေသသမာသသည် ထိုကဲ့သို့သောလုပ်ဆောင်စရာမျာသအတလက် universal wrapper script ကိုဖလင့်သည်၊ ၎င်သသည် အရန်သိုလဟောင်မဟု၏တရာသဝင်မဟု၊ mount point နဟင့် ကျလန်ုပ်တို့လိုချင်သမျဟအာသလုံသကို စစ်ဆေသပဌီသ အဟောင်သကို မိတ္တူကူသကာ သန့်ရဟင်သစေသည်။ ပဌီသသလာသသော မိတ္တူကို S3 သို့ ပေသပို့သည်။

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

ssh မဟတစ်ဆင့် အရန်ကူသပေသပို့ခဌင်သ၏ အင်္ဂါရပ်ကို ကျလန်ုပ်တို့ အသုံသမပဌုခဲ့ပါ။ ၎င်သသည် လုံခဌုံရေသကို ထည့်မတလက်ဘဲ S3 ဝန်ဆောင်မဟုပေသသူ၏ ကလန်ရက်စလမ်သရည်မျာသသည် ကျလန်ုပ်တို့၏ ssh စက်တစ်ခုထက် မျာသစလာမဌင့်မာသသည်။

သင်၏ဒေသခံစက်ကို ဟက်ကာတစ်ညသမဟ ကာကလယ်ရန်အတလက်၊ သူသည် S3 တလင် ဒေတာမျာသကို ဖျက်နိုင်သောကဌောင့်၊ သင်သည် ဗာသရဟင်သဖလင့်ခဌင်သကို ဖလင့်ရပါမည်။
အရန်သိမ်သခဌင်သသည် အရန်ကို အမဌဲတမ်သ စာဝဟက်ပေသသည်။

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

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

ရုရဟာသလို Readme

အခဌေခံလုပ်ဆောင်ချက်မျာသကို

  • prepare လေ့ကျင့်ရေသ
  • testcheck အဆင်သင့်စစ်ဆေသမဟု
  • maincommand အမာခံအဖလဲ့
  • forcepostscript အဆုံသတလင် သို့မဟုတ် အမဟာသအယလင်သဖဌင့် လုပ်ဆောင်သည့် လုပ်ဆောင်ချက်တစ်ခု။ partition ကို unmount လုပ်ရန်ကျလန်ုပ်တို့အသုံသပဌုသည်။

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

  • cleanup ကျလန်ုပ်တို့သည် အမဟာသမျာသကို မဟတ်တမ်သတင်သည် သို့မဟုတ် မဟတ်တမ်သဖိုင်ကို ဖျက်ပစ်သည်။
  • checklog အမဟာသတစ်ခုနဟင့် လိုင်သတစ်ခုပေါ်ပေါက်မဟုအတလက် မဟတ်တမ်သကို ပိုင်သခဌာသပါ။
  • ret ထလက်ပေါက်ကိုင်တလယ်သူ။
  • checktimeout အချိန်လလန်စစ်ဆေသပါ။

ပတ်ဝန်သကျင်

  • VERBOSE=1 ကျလန်ုပ်တို့သည် ဖန်သာသပဌင်ပေါ်တလင် အမဟာသမျာသကို ချက်ချင်သပဌသသည် (stdout)။
  • SAVELOGSONSUCCES=1 အောင်မဌင်မဟုမဟတ်တိုင်ကို သိမ်သဆည်သပါ။
  • INIT_REPO_IF_NOT_EXIST=1 မရဟိလျဟင် သိုလဟောင်ခန်သတစ်ခု ဖန်တီသပါ။ မူရင်သအတိုင်သ ပိတ်ထာသသည်။
  • TIMEOUT ပင်မလုပ်ဆောင်ချက်အတလက် အမျာသဆုံသအချိန်။ အဆုံသတလင် 'm'၊ 'h' သို့မဟုတ် 'd' အဖဌစ် သတ်မဟတ်နိုင်သည်။

ကော်ပီအဟောင်သမျာသအတလက် သိုလဟောင်မဟုမုဒ်။ မူရင်သ-

  • KEEP_DAILY=7
  • KEEP_WEEKLY=4
  • KEEP_MONTHLY=6

ဇာတ်ညလဟန်သအတလင်သရဟိ ကိန်သရဟင်မျာသ

  • ERROR_STRING — အမဟာသအတလက် check in log အတလက် စာတန်သ။
  • EXTRACT_ERROR_STRING — အမဟာသရဟိလျဟင် string ကိုပဌသရန် စကာသရပ်။
  • KILL_TIMEOUT_SIGNAL - အချိန်လလန်လျဟင် သတ်ရန် အချက်ပဌခဌင်သ။
  • TAIL — စခရင်ပေါ်တလင် အမဟာသမျာသပါသော စာကဌောင်သအရေအတလက် မည်မျဟရဟိသည်။
  • COLORMSG — မက်ဆေ့ခ်ျ၏အရောင် (မူလအဝါရောင်)။

wordpress ဟုခေါ်သော အဆိုပါ script သည် အခဌေအနေဆိုင်ရာအမည်တစ်ခုပါရဟိပဌီသ ၎င်သ၏လဟည့်ကလက်မဟာ mysql ဒေတာဘေ့စ်ကိုလည်သ back up ပဌုလုပ်ခဌင်သဖဌစ်သည်။ ဆိုလိုသည်မဟာ သင်သည် ဒေတာဘေ့စ်ကို မိတ္တူကူသထာသနိုင်သည့် single-node Nexcloud တပ်ဆင်မဟုမျာသအတလက် အသုံသပဌုနိုင်သည်။ အဆင်ပဌေမဟုမဟာ အရာအာသလုံသသည် တစ်နေရာတည်သတလင်သာမကဘဲ ဒေတာဘေ့စ်၏ အကဌောင်သအရာမျာသသည် အချိန်ကလာခဌာသမဟု အနည်သငယ်သာဖဌစ်သောကဌောင့် ဖိုင်မျာသ၏ အကဌောင်သအရာမျာသနဟင့် နီသစပ်ပါသည်။

Restic နဟင့် Borg

Borg နဟင့် Restic အကဌာသ နဟိုင်သယဟဉ်မဟုမျာသလည်သ ရဟိပါသည်။ ဒီမဟာ Habre ပေါ်မဟာပဌီသတော့ ငါတို့မဟာ နောက်တစ်ခုလုပ်ဖို့ တာဝန်မရဟိဘူသ၊ ငါတို့ကိုယ်တိုင်လုပ်ရမယ်။ ကျလန်ုပ်တို့၏ အချက်အလက်မျာသကို ကျလန်ုပ်တို့၏ အသေသစိတ်အချက်မျာသနဟင့် မည်သို့ကဌည့်ရဟုမည်ကို ကျလန်ုပ်တို့အတလက် အရေသကဌီသပါသည်။ မယူခဲ့ပါ။

ဖော်ပဌထာသပဌီသဖဌစ်သည့်အရာမျာသအပဌင် ကျလန်ုပ်တို့၏ရလေသချယ်မဟုစံနဟုန်သမျာသ (ထပ်ယူခဌင်သ၊ အမဌန်ပဌန်လည်ရယူခဌင်သ စသည်)။

  • မပဌီသဆုံသသေသတဲ့ အလုပ်တလေကို ခုခံတယ်။ အမဟတ်-၉ သတ်ရန် စစ်ဆေသသည်။
  • ဒစ်ခ်ပေါ်တလင် အရလယ်အစာသ။
  • အရင်သအမဌစ်မျာသ (CPU၊ မဟတ်ဉာဏ်) အတလက် လိုအပ်ချက်။
  • သိမ်သဆည်သထာသသော blobs အရလယ်အစာသ။
  • S3 နဟင့်အလုပ်လုပ်သည်။
  • သမာဓိစစ်ဆေသပါ။

စမ်သသပ်ရန်အတလက်၊ ကျလန်ုပ်တို့သည် ဒေတာအစစ်အမဟန်တစ်ခုနဟင့် စုစုပေါင်သအရလယ်အစာသ 1,6 TB ကို ယူဆောင်ခဲ့သည်။
အခဌေအနေမျာသ။

Borg သည် S3 နဟင့် တိုက်ရိုက်အလုပ်လုပ်ပုံကို မသိပါ၊ နဟင့် ကျလန်ုပ်တို့သည် ဒစ်ကို ဖျူသစ်တစ်ခုအဖဌစ် တပ်ဆင်ထာသသည်။ ရယ်စရာ. Restic က ၎င်သကို S3 ကိုယ်တိုင်ထံ ပေသပို့ခဲ့သည်။

Goofys သည် အလလန်လျင်မဌန်ပဌီသ ကောင်သမလန်စလာ အလုပ်လုပ်ပါသည်။ disk cache moduleအလုပ်ကို ပိုမဌန်စေတယ်။ ၎င်သသည် ဘီတာအဆင့်တလင်ရဟိပဌီသ၊ ပလင့်ပလင့်လင်သလင်သပဌောရလျဟင်၊ စမ်သသပ်မဟုမျာသအတလင်သ (အခဌာသအရာမျာသ) ဒေတာဆုံသရဟုံသမဟုဖဌင့် ပျက်ကျခဲ့သည်။ ဒါပေမယ့် အဆင်ပဌေတာက အရန်သိမ်သခဌင်သလုပ်ငန်သစဉ်ကိုယ်တိုင်က အမျာသကဌီသဖတ်စရာမလိုပေမယ့် အမျာသစုကတော့ စာရေသတဲ့အတလက်ကဌောင့် သမာဓိစစ်ဆေသမဟုတလေမဟာသာ cache ကို သုံသပါတယ်။

ကလန်ရက်၏လလဟမ်သမိုသမဟုကို လျဟော့ချရန်၊ ကျလန်ုပ်တို့သည် ဒေသတလင်သဝန်ဆောင်မဟုပေသသူ - Yandex Cloud ကို အသုံသပဌုခဲ့သည်။

နဟိုင်သယဟဉ်စမ်သသပ်မဟုရလဒ်မျာသ။

  • Kill -9 ကို ထပ်မံပဌန်လည်စတင်ခဌင်သဖဌင့် နဟစ်ညသစလုံသ အောင်မဌင်ခဲ့သည်။
  • ဒစ်ခ်ပေါ်တလင် အရလယ်အစာသ။ Borg ကို ချုံ့နိုင်သောကဌောင့် ရလဒ်မျာသသည် မျဟော်လင့်ထာသသည့်အတိုင်သဖဌစ်သည်။

Backuper
အရလယ်

Borg
562Gb

အနာသယူ
628Gb

  • CPU အာသဖဌင့်
    Borg ကိုယ်တိုင်က ပုံသေချုံ့မဟုဖဌင့် အနည်သငယ်စာသသုံသသော်လည်သ ၎င်သကို ရယ်မောခဌင်သလုပ်ငန်သစဉ်နဟင့်အတူ အကဲဖဌတ်ရမည်ဖဌစ်သည်။ စုစုပေါင်သ၊ ၎င်သတို့သည် တူညီသောစမ်သသပ်မဟု virtual machine တလင် 1,2 cores ခန့်ကို နဟိုင်သယဟဉ်အသုံသပဌုနိုင်ပါသည်။
  • ဉာဏ်။ Restic သည် ခန့်မဟန်သခဌေအာသဖဌင့် 0,5GB ဖဌစ်ပဌီသ Borg သည် ခန့်မဟန်သခဌေအာသဖဌင့် 200MB ဖဌစ်သည်။ ဒါပေမယ့် ဒါက system file cache နဲ့ ယဟဉ်ရင် ဘာမဟ အရေသမကဌီသပါဘူသ။ ဒါကဌောင့် Memory မျာသမျာသခလဲထာသဖို့ အကဌံပဌုလိုပါတယ်။
  • blob အရလယ်အစာသ ကလာခဌာသချက်မဟာ သိသိသာသာပင်။

Backuper
အရလယ်

Borg
500MB လောက်ရဟိတယ်။

အနာသယူ
5MB လောက်ရဟိတယ်။

  • Restic ၏ S3 အတလေ့အကဌုံသည် ကောင်သမလန်သည်။ ကက်ရဟ်ကို လုံသဝပဌန်လည်သတ်မဟတ်ရန် Backup ပဌီသသလာသသောအခါတလင် Borg နဟင့်အလုပ်လုပ်ခဌင်သက မည်သည့်မေသခလန်သမျဟမမေသဘဲ ကက်ရဟ်ကို လုံသဝပဌန်လည်သတ်မဟတ်ရန် အကဌံပဌုထာသသည်။ S3 ၏ထူသခဌာသချက်မဟာ စုပ်မထာသသောအတုံသမျာသကို ပုံသထဲသို့ဘယ်တော့မဟမပို့နိုင်ဘဲ၊ ဆိုလိုသည်မဟာ ဒေတာမပဌည့်မစုံမဟုမဟာ ကဌီသကဌီသမာသမာသပျက်စီသမဟုကို ဖဌစ်စေသည်။
  • သမာဓိစစ်ဆေသခဌင်သသည် အမဟုနဟစ်ခုလုံသတလင် ကောင်သမလန်စလာအလုပ်လုပ်သော်လည်သ မဌန်နဟုန်သမဟာ သိသိသာသာကလာခဌာသပါသည်။
    အငဌိမ် 3,5 နာရီ.
    100GB SSD ဖိုင် cache ပါရဟိသော Borg - 5 နာရီ.ဒေတာသည် စက်တလင်သဒစ်ခ်ပေါ်တလင် ရဟိနေပါက အနီသစပ်ဆုံသ တူညီသော မဌန်နဟုန်သရလဒ်။
    Borg သည် cache မပါဘဲ S3 မဟတိုက်ရိုက်ဖတ်သည်။ 33 နာရီ. ရဟည်လျာသလဟသည်။

အဓိကအချက်မဟာ Borg သည် ချုံ့နိုင်ပဌီသ ပိုကဌီသသော blobs မျာသပါရဟိသည် - S3 တလင် သိုလဟောင်မဟုနဟင့် GET/PUT လုပ်ဆောင်ချက်မျာသကို စျေသသက်သာစေသည်။ သို့သော် ၎င်သသည် ပိုမိုရဟုပ်ထလေသပဌီသ နဟေသကလေသသော အတည်ပဌုမဟုကုန်ကျစရိတ်ဖဌင့် လာပါသည်။ ပဌန်လည်ရယူသည့် အရဟိန်နဟင့် ပတ်သက်၍ ကျလန်ုပ်တို့ သတိမထာသမိခဲ့ပါ။ Restic သည် နောက်ဆက်တလဲအရန်မျာသ (ပထမပဌီသနောက်) အနည်သငယ်ပိုကဌာသော်လည်သ သိသာစလာမရဟိပါ။

နောက်ဆုံသရလေသချယ်မဟုတလင် အနည်သဆုံသအချက်မဟာ လူ့အဖလဲ့အစည်သ၏ အရလယ်အစာသဖဌစ်သည်။

ပဌီသတော့ ကျလန်တော်တို့ borg ကို ရလေသလိုက်တယ်။

Compression အကဌောင်သ စကာသအနည်သငယ်

Borg တလင် ၎င်သ၏လက်နက်တိုက်- zstd တလင် အလလန်ကောင်သမလန်သော compression algorithm အသစ်တစ်ခုရဟိသည်။ ဖိသိပ်မဟုအရည်အသလေသသည် gzip ထက်မဆိုသသော်လည်သ အလလန်မဌန်ဆန်သည်။ နဟင့် default lz4 နဟင့် အမဌန်နဟုန်သဖဌင့် နဟိုင်သယဟဉ်နိုင်သည်။

ဥပမာအာသဖဌင့်၊ MySQL database dump သည် တူညီသောအမဌန်နဟုန်သဖဌင့် lz4 ထက် နဟစ်ဆပိုကောင်သသည်။ သို့သော်လည်သ၊ ဒေတာအစစ်အမဟန်နဟင့် အတလေ့အကဌုံသည် Nextcloud node ၏ compression အချိုသတလင် အနည်သငယ်သာကလာခဌာသကဌောင်သ ပဌသသည်။

Borg တလင် ဘောနပ်စ်ချုံ့မုဒ်တစ်ခုရဟိသည် - အကယ်၍ ဖိုင်တလင် အင်ထရိုပီ မဌင့်မာသပါက၊ မဌန်နဟုန်သကိုတိုသမဌင့်စေသည့် ဖိသိပ်မဟုကို လုံသဝအသုံသပဌုမည်မဟုတ်ပါ။ ဖန်တီသသည့်အခါ ရလေသချယ်မဟုဖဌင့် ဖလင့်ထာသသည်။
-C auto,zstd
zstd algorithm အတလက်
ဒါကဌောင့် ဒီ option နဲ့ default compression နဲ့ နဟိုင်သယဟဉ်ရင် ကျလန်တော်တို့ ရခဲ့ပါတယ်။
560Gb နဟင့် 562Gb အသီသသီသရဟိသည်။ အထက်ဖော်ပဌပါ ဥပမာမဟ ဒေတာမျာသကို ချုံ့ခဌင်သမပဌုဘဲ ရလဒ်သည် 628Gb ဖဌစ်သည်။ 2GB ကလာခဌာသချက်၏ ရလဒ်သည် ကျလန်ုပ်တို့ကို အနည်သငယ် အံ့အာသသင့်စေသော်လည်သ ၎င်သကို ရလေသချယ်မည်ဟု ကျလန်ုပ်တို့ တလေသထင်ခဲ့သည်။ auto,zstd.

အရန်စိစစ်ခဌင်သနည်သလမ်သ

အစီအစဉ်ဆလဲသူအရ၊ virtual machine ကို ပံ့ပိုသပေသသူမဟ သို့မဟုတ် client ထံမဟ တိုက်ရိုက်လလဟင့်တင်ထာသပဌီသ network load ကို မျာသစလာလျဟော့ချပေသသည်။ အနည်သဆုံသတော့ သင်ကိုယ်တိုင် မလေသမဌူပဌီသ ယာဉ်ကဌောကို မောင်သနဟင်တာထက် ပိုစျေသသက်သာပါတယ်။

goofys --cache "--free:5%:/mnt/cache" -o allow_other --endpoint https://storage.yandexcloud.net --file-mode=0666 --dir-mode=0777 xxxxxxx.com /mnt/goofys
export BORG_PASSCOMMAND="cat /home/borg/.borg-passphrase"
borg list /mnt/goofys/borg1/
borg check --debug -p --verify-data /mnt/goofys/borg1/

တူညီသောအစီအစဥ်ကိုအသုံသပဌု၍ ကျလန်ုပ်တို့သည် ဖိုင်မျာသကို antivirus (အမဟန်တကယ်ပဌီသနောက်) ဖဌင့်စစ်ဆေသပါ။ နောက်ဆုံသတလင်၊ အသုံသပဌုသူမျာသသည် မတူညီသော အရာမျာသကို Nextcloud သို့ အပ်လုဒ်လုပ်ကဌပဌီသ လူတိုင်သတလင် ဗိုင်သရပ်စ်ပိုသ မရဟိပါ။ လောင်သသည့်အချိန်တလင် စစ်ဆေသမဟုပဌုလုပ်ခဌင်သသည် အချိန်မျာသစလာယူရပဌီသ လုပ်ငန်သကို အနဟောင့်အယဟက်ဖဌစ်စေပါသည်။

မတူညီသော tag မျာသဖဌင့် မတူညီသော node မျာသပေါ်တလင် အပဌေသသမာသမျာသက အတိုင်သအတာတစ်ခုအထိ အောင်မဌင်သည်။
ကျလန်ုပ်တို့၏စောင့်ကဌည့်စစ်ဆေသမဟုသည် ဝင်သဒိုသတစ်ခုတလင် GitLab API မဟတစ်ဆင့် အရန်ကူသယူမဟုအခဌေအနေမျာသကို စုဆောင်သပေသသည်၊ လိုအပ်ပါက ပဌဿနာမျာသကို အလလယ်တကူသတိပဌုမိပဌီသ ဒေသန္တရအဖဌစ်သို့ အလလယ်တကူပဌောင်သနိုင်သည်။

ကောက်ချက်

ရလဒ်အနေဖဌင့်၊ ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏မိတ္တူကူသယူမဟုမျာသကို တရာသဝင်ကဌောင်သ၊ ၎င်သတို့နဟင့် ကဌုံတလေ့ရသည့် ပဌဿနာမျာသသည် အချိန်အနည်သငယ်ယူကာ တာဝန်စီမံခန့်ခလဲသူအဆင့်တလင် ဖဌေရဟင်သကဌောင်သ ကျလန်ုပ်တို့သေချာသိပါသည်။ Backup မျာသသည် tar.gz သို့မဟုတ် Bacula နဟင့် နဟိုင်သယဟဉ်ပါက နေရာအနည်သငယ်သာ ယူသည်။

source: www.habr.com

မဟတ်ချက် Add