PostgreSQL နဟင့် Pacemaker ကိုအခဌေခံ၍ ပျက်ကလက်သောအစုအဝေသမျာသ၏ပုံစံပဌခဌင်သ။

နိဒါန်သ

မကဌာသေသမီက ကျလန်ုပ်အာသ ရဟုံသနိမ့်မဟုအစုအဝေသတစ်ခု တည်ဆောက်ရန် တာဝန်ပေသအပ်ခံရသည်။ PostgreSQLမဌို့တစ်မဌို့အတလင်သ optical fiber ဖဌင့်ချိတ်ဆက်ထာသသော ဒေတာစင်တာမျာသစလာတလင် လည်ပတ်နေပဌီသ ဒေတာစင်တာတစ်ခု၏ ချို့ယလင်သချက် (ဥပမာ မီသပျက်ခဌင်သ) ကို ခံနိုင်ရည်ရဟိသည်။ အမဟာသခံနိုင်ရည်ရဟိဖို့ တာဝန်ရဟိတဲ့ ဆော့ဖ်ဝဲကို ကျလန်တော် ရလေသချယ်ခဲ့ပါတယ်။ pacemakerအဘယ်ကဌောင့်ဆိုသော်၎င်သသည် failover အစုအဝေသမျာသကိုဖန်တီသရန်အတလက် RedHat မဟတရာသဝင်ဖဌေရဟင်သချက်ဖဌစ်သောကဌောင့်ဖဌစ်သည်။ RedHat သည် ၎င်သအတလက် အထောက်အပံ့ ပေသသောကဌောင့် ကောင်သမလန်ပဌီသ ကဖဌေရဟင်သချက်သည် universal (modular) ဖဌစ်သောကဌောင့် ဖဌစ်သည်။ ၎င်သ၏အကူအညီဖဌင့်၊ ၎င်သသည် PostgreSQL ၏ အမဟာသအယလင်သမျာသကို ခံနိုင်ရည်ရဟိစေရုံသာမက Standard modules မျာသကို အသုံသပဌုခဌင်သ သို့မဟုတ် တိကျသောလိုအပ်ချက်မျာသအတလက် ဖန်တီသခဌင်သဖဌစ်စေ ၊ အခဌာသဝန်ဆောင်မဟုမျာသ၏ အမဟာသအယလင်သမျာသကိုပါ ခံနိုင်ရည်ရဟိစေမည်ဖဌစ်သည်။

ကဆုံသဖဌတ်ချက်သည် ကျိုသကဌောင်သဆီလျော်သောမေသခလန်သကို ဖဌစ်ပေါ်စေသည်- ရဟုံသနိမ့်မဟုအစုအဖလဲ့သည် မည်ကဲ့သို့ အမဟာသအယလင်သခံနိုင်ရည်ရဟိမည်နည်သ။ ၎င်သကို စုံစမ်သစစ်ဆေသရန်၊ အစုအဝေသမျာသပေါ်ရဟိ အမျိုသမျိုသသော ချို့ယလင်သချက်မျာသကို အတုယူကာ ဝန်ဆောင်မဟုကို ပဌန်လည်ရယူရန် စောင့်ဆိုင်သခဌင်သ၊ မအောင်မဌင်သော node ကို ပဌန်လည်ရယူပဌီသ ကလင်သဆက်တစ်ခုတလင် စမ်သသပ်မဟုမျာသကို ဆက်လက်လုပ်ဆောင်သည့် စမ်သသပ်ခုံတန်သလျာသတစ်ခုကို တီထလင်ခဲ့သည်။ ကပရောဂျက်ကို မူလက hapgsql ဟုခေါ်သော်လည်သ သရတစ်လုံသတည်သသာပါသည့် အမည်ကို အချိန်ကဌာလာသည်နဟင့်အမျဟ ငဌီသငလေ့လာသည်။ ထို့ကဌောင့်၊ ကျလန်ုပ်သည် အမဟာသ-ခံနိုင်ရည်ရဟိသော ဒေတာဘေ့စ်မျာသ (၎င်သတို့အာသ ညလဟန်ပဌနေသော float IP) ကရိုဂန် (အရေသကဌီသသောအင်္ဂါမျာသအာသလုံသကို ထပ်တူပလာသနေသည့် ကလန်ပျူတာဂိမ်သတစ်ခုမဟ ဇာတ်ကောင်တစ်ခု) နဟင့် nodes၊ clusters နဟင့် project ကိုယ်တိုင် tuchanka (ကရိုဂန်တလေနေထိုင်တဲ့ ဂဌိုဟ်)။

အခုတော့ စီမံခန့်ခလဲခလင့် ပေသလိုက်ပဌီ။ MIT လိုင်စင်အောက်တလင် ပရောဂျက်ကို open source အသိုင်သအဝိုင်သသို့ ဖလင့်ပါ။. README ကို မကဌာမီ အင်္ဂလိပ်ဘာသာသို့ ပဌန်ဆိုပါတော့မည် (အဓိကစာသသုံသသူမျာသသည် Pacemaker နဟင့် PostgreSQL developer မျာသဖဌစ်လိမ့်မည်ဟု မျဟော်လင့်ထာသသောကဌောင့်) နဟင့် README ၏ ရုရဟာသဗာသရဟင်သဟောင်သ (တစ်စိတ်တစ်ပိုင်သ) ကို ကဆောင်သပါသပုံစံဖဌင့် တင်ပဌရန် ဆုံသဖဌတ်ခဲ့သည်။

PostgreSQL နဟင့် Pacemaker ကိုအခဌေခံ၍ ပျက်ကလက်သောအစုအဝေသမျာသ၏ပုံစံပဌခဌင်သ။

အစုအဝေသမျာသကို virtual machines မျာသတလင် အသုံသပဌုသည်။ VirtualBox. စုစုပေါင်သ စက် 12 ခု (စုစုပေါင်သ 36GiB) ကို အသုံသပဌုမည်ဖဌစ်ပဌီသ၊ ၎င်သသည် အမဟာသ-ခံနိုင်ရည်ရဟိသော အစုအဝေသ (၄) ခု (ကလဲပဌာသခဌာသနာသသော ရလေသချယ်စရာမျာသ) ကို ဖလဲ့စည်သထာသသည်။ ပထမအစုနဟစ်ခုတလင် မတူညီသောဒေတာစင်တာမျာသတလင် တည်ရဟိသော PostgreSQL ဆာဗာနဟစ်ခုနဟင့် ဘုံဆာဗာတစ်ခုတို့ ပါဝင်ပါသည်။ သကျသခေံ c အထမဌောက် ကိရိယာ (တတိယဒေတာစင်တာရဟိ စျေသပေါသော virtual machine တလင် လက်ခံကျင်သပသည်)၊ မသေချာမဟုမျာသကို ဖဌေရဟင်သပေသသည်။ ၂၀% / ၁၀%ပါတီမျာသအနက်မဟ သင်၏မဲပေသခဌင်သ။ ဒေတာစင်တာသုံသခုရဟိ တတိယအစု- သခင်တစ်ညသ၊ ကျလန်နဟစ်ညသ၊ မရဟိပါ။ အထမဌောက် ကိရိယာ. စတုတ္ထအစုတလင် PostgreSQL ဆာဗာလေသခုပါ၀င်သည်၊ ဒေတာစင်တာတစ်ခုလျဟင် နဟစ်ခု- မာစတာတစ်ခု၊ ကျန်ပုံတူမျာသနဟင့်လည်သအသုံသပဌုသည်။ သကျသခေံ c အထမဌောက် ကိရိယာ. စတုတ္ထအချက်မဟာ ဆာဗာနဟစ်ခု သို့မဟုတ် ဒေတာစင်တာတစ်ခု၏ ကျရဟုံသမဟုကို ခံနိုင်ရည်ရဟိသည်။ လိုအပ်ပါက ကဖဌေရဟင်သချက်ကို ပုံတူအရေအတလက် ပိုမျာသသောအတိုင်သအတာအထိ ချဲ့နိုင်သည်။

တိကျသောအချိန်ဝန်ဆောင်မဟု နေခဌည် အမဟာသခံနိုင်ရည်ရဟိမဟုအတလက်လည်သ ပဌန်လည်ပဌင်ဆင်ထာသသော်လည်သ ၎င်သသည် နည်သလမ်သကို ကိုယ်တိုင်အသုံသပဌုသည်။ ntpd (မိဘမဲ့မုဒ်) မျဟဝေထာသသော ဆာဗာ သကျသခေံ ဗဟို NTP ဆာဗာတစ်ခုအနေဖဌင့် လုပ်ဆောင်ပဌီသ ၎င်သ၏အချိန်ကို အစုအဝေသမျာသအာသလုံသသို့ ဖဌန့်ဝေပေသကာ ဆာဗာအာသလုံသကို တစ်ခုနဟင့်တစ်ခု တစ်ပဌိုင်တည်သ တစ်ပဌိုင်တည်သလုပ်ဆောင်သည်။ အကယ်လို့ သကျသခေံ ပျက်ကလက်သည် သို့မဟုတ် သီသခဌာသဖဌစ်သလာသသည်၊ ထို့နောက် အစုလိုက်ဆာဗာမျာသ (အစုအဝေသအတလင်သ) တစ်ခုသည် ၎င်သ၏အချိန်ကို စတင်ဖဌန့်ဝေမည်ဖဌစ်သည်။ အရန်သိမ်သဆည်သခဌင်သ HTTP ပရောက်စီ ထပ်တင်တယ်။ သကျသခေံ၎င်သ၏အကူအညီဖဌင့်၊ အခဌာသသော virtual machine မျာသသည် Yum repositories သို့ ဝင်ရောက်နိုင်သည်။ အမဟန်တကယ်တလင်၊ တိကျသောအချိန်နဟင့် proxy ကဲ့သို့သော ဝန်ဆောင်မဟုမျာသသည် သီသခဌာသဆာဗာမျာသပေါ်တလင် လက်ခံကျင်သပနိုင်ဖလယ်ရဟိသော်လည်သ booth တလင် ၎င်သတို့ကို လက်ခံဆောင်ရလက်ပေသပါသည်။ သကျသခေံ virtual machines နဟင့် space အရေအတလက်ကို ချလေတာရန်သာ။

ဗာသရဟင်သ

v0။ VirtualBox 7 တလင် CentOS 11 နဟင့် PostgreSQL 6.1 နဟင့် အလုပ်လုပ်သည်။

အစုအဖလဲ့ဖလဲ့စည်သပုံ

အစုအဝေသမျာသအာသလုံသသည် ဒေတာစင်တာမျာသစလာတလင် တည်ရဟိပဌီသ ပဌာသချပ်ချပ်ကလန်ရက်တစ်ခုသို့ ပေါင်သစပ်ကာ ဒေတာစင်တာတစ်ခု၏ ကလန်ရက်အထီသကျန်မဟုကို ခံနိုင်ရည်ရဟိရန် ဒီဇိုင်သထုတ်ထာသသည်။ အဲဒါကဌောင့် မဖဌစ်နိုင်သော အကာအကလယ်အတလက် အသုံသပဌု split-ညသနဟောက် standard Pacemaker နည်သပညာဟုခေါ်သည်။ STONITH (Shoot The Other Node In The Head) သို့မဟုတ် ခဌံစည်သရိုသ. ၎င်သ၏အနဟစ်သာရ- အချို့သော node မျာသတလင် တစ်ခုခုမဟာသယလင်သနေသည်ဟု သံသယစပဌုလာပါက၊ ၎င်သသည် တုံ့ပဌန်ခဌင်သမရဟိပါ သို့မဟုတ် မဟာသယလင်သစလာလုပ်ဆောင်နေပါက၊ ဥပမာ၊ IPMI သို့မဟုတ် UPS ထိန်သချုပ်မဟုကတ်တစ်ခုမဟတစ်ဆင့် ၎င်သအာသ ၎င်သတို့အာသ အတင်သအကျပ်ပိတ်စေခဌင်သ . သို့သော် တစ်ခုတည်သသော ချို့ယလင်သမဟုတစ်ခုတလင် IPMI သို့မဟုတ် UPS ဆာဗာ ဆက်လက်အလုပ်လုပ်နေသည့် ကိစ္စမျာသတလင်သာ ၎င်သသည် လုပ်ဆောင်နိုင်မည်ဖဌစ်သည်။ ကနေရာတလင် ကျလန်ုပ်တို့သည် ဒေတာစင်တာတစ်ခုလုံသ ပျက်ကလက်သလာသသောအခါ (ဥပမာ၊ ပါဝါဆုံသရဟုံသခဌင်သ) ကို ကာကလယ်ရန် ကနေရာတလင် ကျလန်ုပ်တို့ စီစဉ်ထာသပါသည်။ ထိုကဲ့သို့ ငဌင်သဆိုခဌင်သဖဌင့် အရာရာတိုင်သသည် ကျောက်ခဲ- စက်ပစ္စည်သမျာသ (IPMI၊ UPS စသည်ဖဌင့်) လည်သ အလုပ်မလုပ်ပါ။

ယင်သအစာသ စနစ်သည် အထမဌောက်သည့် အယူအဆအပေါ် အခဌေခံသည်။ node အာသလုံသတလင် အသံတစ်ခုရဟိပဌီသ node အာသလုံသ၏ ထက်ဝက်ကျော်ကို မဌင်နိုင်သူမျာသသာ အလုပ်လုပ်နိုင်သည်။ ကပမာဏကို "half + 1" ဟုခေါ်သည်။ အထမဌောက်သည်။. quorum မရောက်ပါက၊ node သည် network isolation တလင်ရဟိကဌောင်သ ဆုံသဖဌတ်ပဌီသ ၎င်သ၏အရင်သအမဌစ်မျာသကို ပိတ်ရမည်၊ ဆိုလိုသည်မဟာ၊ ဒါက ဘာလဲ။ ညသနဟောက်ကလဲခဌင်သကို ကာကလယ်ပေသခဌင်သ။. ကအပဌုအမူအတလက် တာဝန်ရဟိသော ဆော့ဖ်ဝဲလ်သည် အလုပ်မလုပ်ပါက၊ ဥပမာ၊ IPMI ကို အခဌေခံထာသသော စောင့်ကဌည့်အဖလဲ့သည် အလုပ်လုပ်ရမည်ဖဌစ်ပါသည်။

အကယ်၍ node အရေအတလက်သည် (ဒေတာစင်တာနဟစ်ခုရဟိ အစုအဝေသတစ်ခု) ဖဌစ်ပါက မသေချာမရေရာမဟုဟု ခေါ်သည် ၂၀% / ၁၀% (ငါသဆယ့်ငါသဆယ်) network isolation သည် cluster ကို တစ်ဝက်တိတိခလဲပေသသောအခါ။ ထို့ကဌောင့်၊ တူညီသောနံပါတ်မျာသအတလက်၊ ကျလန်ုပ်တို့ထည့်ပါ။ အထမဌောက် ကိရိယာ တတိယဒေတာစင်တာရဟိ စျေသအသက်သာဆုံသ virtual machine တလင် အသုံသပဌုနိုင်သည့် မလိုအပ်သော daemon တစ်ခုဖဌစ်သည်။ သူမဌင်သော အပိုင်သမျာသထဲမဟ (သူမဌင်သည်) ကို မဲပေသပဌီသ 50%/50% မသေချာမဟုကို ဖဌေရဟင်သပေသသည်။ အထမဌောက်သည့် ကိရိယာကို စတင်မည့် ဆာဗာကို ကျလန်ုပ် အမည်ပေသခဲ့သည်။ သကျသခေံ (repmgr မဟ ဝေါဟာရအသုံသအနဟုန်သကို ကျလန်တော် သဘောကျသည်)။

အရင်သအမဌစ်မျာသကို တစ်နေရာမဟတစ်နေရာသို့ ရလဟေ့ပဌောင်သနိုင်သည်၊ ဥပမာ၊ ချို့ယလင်သနေသောဆာဗာမျာသမဟ ကျန်သမာသောဆာဗာမျာသဆီသို့ သို့မဟုတ် စနစ်စီမံခန့်ခလဲသူမျာသ၏ အမိန့်ဖဌင့် ရလဟေ့နိုင်သည်။ သို့မဟသာ ဖောက်သည်မျာသသည် ၎င်သတို့လိုအပ်သော အရင်သအမဌစ်မျာသ တည်ရဟိရာနေရာ (ချိတ်ဆက်ရန် မည်သည့်နေရာတလင်ရဟိသနည်သ)၊ floating IP (float IP) ကအရာမျာသသည် Pacemaker သည် node မျာသတဝိုက်တလင်ရလေ့လျာသနိုင်သော IP မျာသဖဌစ်သည် (အရာအာသလုံသသည် flat network ပေါ်တလင်ရဟိသည်)။ ၎င်သတို့တစ်ခုစီသည် အရင်သအမဌစ် (ဝန်ဆောင်မဟု) ကို ကိုယ်စာသပဌုပဌီသ ကဝန်ဆောင်မဟု (ကျလန်ုပ်တို့၏ကိစ္စတလင်၊ ဒေတာဘေ့စ်တစ်ခု) သို့ဝင်ရောက်နိုင်ရန် သင်ချိတ်ဆက်ရန်လိုအပ်သည့်နေရာတလင် တည်ရဟိမည်ဖဌစ်သည်။

Tuchanka1 (ကျစ်လစ်သောပတ်လမ်သ)

ဖလဲ့စည်သပုံမဟာ

PostgreSQL နဟင့် Pacemaker ကိုအခဌေခံ၍ ပျက်ကလက်သောအစုအဝေသမျာသ၏ပုံစံပဌခဌင်သ။

အိုင်ဒီယာမဟာ ကျလန်ုပ်တို့တလင် ဝန်နည်သပါသသော ဒေတာဘေ့စ်ငယ်မျာသစလာရဟိပဌီသ၊ ၎င်သသည် သီသသန့်ငလေပေသချေမဟုမျာသအတလက် hot standby မုဒ်တလင် သီသခဌာသ slave ဆာဗာကို ထိန်သသိမ်သထာသရန် အကျိုသမရဟိသောကဌောင့် (ထိုကဲ့သို့သော အရင်သအမဌစ်မျာသကို ဖဌုန်သတီသနေစရာ မလိုပါ)။

ဒေတာစင်တာတစ်ခုစီတလင် ဆာဗာတစ်ခုရဟိသည်။ ဆာဗာတစ်ခုစီတလင် PostgreSQL ဖဌစ်ရပ်နဟစ်ခုရဟိသည် (PostgreSQL ဝေါဟာရတလင် ၎င်သတို့ကို အစုအဝေသမျာသဟု ခေါ်သော်လည်သ ရဟုပ်ထလေသမဟုမျာသကို ရဟောင်ရဟာသရန် ၎င်သတို့ကို ဥပမာမျာသ (အခဌာသဒေတာဘေ့စ်မျာသနဟင့် ယဟဉ်တလဲ၍) ခေါ်ဆိုမည်ဖဌစ်ပဌီသ၊ Pacemaker အစုအဝေသမျာသကိုသာ ခေါ်ဆိုပါမည်)။ ဥပမာတစ်ခုသည် မာစတာမုဒ်တလင် လုပ်ဆောင်နေပဌီသ ၎င်သသည် ဝန်ဆောင်မဟုမျာသကိုသာ ပေသသည် (float IP ကသာ ၎င်သကို ညသတည်သည်)။ ဒုတိယဥပမာသည် ဒုတိယဒေတာစင်တာအတလက် ကျလန်အဖဌစ်အလုပ်လုပ်ပဌီသ ၎င်သ၏မာစတာပျက်ကလက်မဟသာ ဝန်ဆောင်မဟုမျာသပေသမည်ဖဌစ်သည်။ အချိန်အမျာသစုတလင် (မာစတာ) မဟ ဝန်ဆောင်မဟုမျာသ (တောင်သဆိုမဟုမျာသကို လုပ်ဆောင်ပေသမည်) ဖဌစ်သောကဌောင့်၊ ဆာဗာရင်သမဌစ်အာသလုံသကို မာစတာအတလက် အကောင်သဆုံသဖဌစ်အောင် ပဌုလုပ်ထာသသည် (မန်မိုရီကို shared_buffers ကက်ရဟ်အတလက် ခလဲဝေပေသသည် စသည်ဖဌင့်)၊ သို့သော် ဒုတိယဥပမာကို ရရဟိစေရန်၊ ဒေတာစင်တာတစ်ခု၏ချို့ယလင်သမဟုဖဌစ်သောအခါတလင် (ဖိုင်စနစ် cache မဟတဆင့် အကောင်သဆုံသလုပ်ဆောင်မဟုမျာသအတလက်) လုံလောက်သောအရင်သအမဌစ်မျာသရဟိသည်။ slave သည် အစုအဖလဲ့၏ ပုံမဟန်လည်ပတ်နေချိန်အတလင်သ ဝန်ဆောင်မဟုမျာသ မပေသဆောင်ပါ (သို့) စက်တစ်ခုတည်သရဟိ master နဟင့် အရင်သအမဌစ်မျာသအတလက် စစ်မဖဌစ်စေရန်။

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

သက်သေပဌရန် ပျက်ကလက်ခဌင်သ။

PostgreSQL နဟင့် Pacemaker ကိုအခဌေခံ၍ ပျက်ကလက်သောအစုအဝေသမျာသ၏ပုံစံပဌခဌင်သ။

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

Tuchanka1 ငဌင်သဆန်ခဌင်သ။

PostgreSQL နဟင့် Pacemaker ကိုအခဌေခံ၍ ပျက်ကလက်သောအစုအဝေသမျာသ၏ပုံစံပဌခဌင်သ။

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

Tuchanka2 (ဂန္ထဝင်)

ဖလဲ့စည်သပုံမဟာ

PostgreSQL နဟင့် Pacemaker ကိုအခဌေခံ၍ ပျက်ကလက်သောအစုအဝေသမျာသ၏ပုံစံပဌခဌင်သ။

node နဟစ်ခု၏ ဂန္တဝင်ပုံစံ။ သခင်သည် တညသတည်သတလင် အလုပ်လုပ်သည်၊ ဒုတိယတလင် ကျလန်ဖဌစ်သည်။ နဟစ်ခုလုံသသည် တောင်သဆိုမဟုမျာသကို လုပ်ဆောင်နိုင်သည် (ကျလန်သည် ဖတ်ရန်သာဖဌစ်သည်) ထို့ကဌောင့် နဟစ်ခုလုံသကို float IP ဖဌင့် ညလဟန်ပဌသည်- krogan2 သည် မာစတာဖဌစ်ပဌီသ krogan2s1 သည် ကျလန်ဖဌစ်သည်။ သခင်နဟင့် ကျလန်နဟစ်ညသစလုံသသည် အပဌစ်ကို ခံနိုင်ရည်ရဟိကဌလိမ့်မည်။

node နဟစ်ခု၏ဖဌစ်ရပ်တလင်၊ ပဌတ်တောက်မဟုဒဏ်ခံနိုင်မဟုသည် ပဌိုင်တူကူသယူခဌင်သမျိုသဖဌင့်သာ ဖဌစ်နိုင်သည်၊ အကဌောင်သမဟာ၊ အကဌောင်သမဟာ synchronous ကူသယူခဌင်သဖဌင့်၊ slave ၏ကျဆုံသမဟုသည် master ၏ရပ်တန့်သလာသစေသည်။

Tuchanka2 ငဌင်သဆန်ခဌင်သ။

PostgreSQL နဟင့် Pacemaker ကိုအခဌေခံ၍ ပျက်ကလက်သောအစုအဝေသမျာသ၏ပုံစံပဌခဌင်သ။

ဒေတာစင်တာတစ်ခုပျက်ကလက်လျဟင် သကျသခေံ ဒုတိယတစ်ခုကိုမဲပေသတယ်။ တစ်ခုတည်သသော အလုပ်လုပ်သော ဒေတာစင်တာတလင်၊ မာစတာကို မဌဟင့်တင်မည်ဖဌစ်ပဌီသ၊ float IP နဟစ်ခုစလုံသသည် ၎င်သအာသ ညလဟန်ပဌပါမည်- မာစတာနဟင့် ကျလန်။ ဟုတ်ပါတယ်၊ ဥပမာကို master နဟင့် slave float IP တို့မဟ ချိတ်ဆက်မဟုမျာသနဟင့် တောင်သဆိုမဟုမျာသအာသလုံသကို တစ်ပဌိုင်နက်လက်ခံရန်အတလက် လုံလောက်သောအရင်သအမဌစ်မျာသ (ချိတ်ဆက်မဟုကန့်သတ်ချက်မျာသ၊ စသည်ဖဌင့်) ပါ၀င်သည့်ပုံစံဖဌင့် ဖလဲ့စည်သရပါမည်။ ဆိုလိုသည်မဟာ၊ ပုံမဟန်လည်ပတ်နေချိန်တလင် ၎င်သသည် လုံလောက်သော ကန့်သတ်ချက်ရဟိသင့်သည်။

Tuchanka4 (ကျလန်မျာသစလာ)

ဖလဲ့စည်သပုံမဟာ

PostgreSQL နဟင့် Pacemaker ကိုအခဌေခံ၍ ပျက်ကလက်သောအစုအဝေသမျာသ၏ပုံစံပဌခဌင်သ။

အစလန်သရောက်နေပဌီ။ Read-only Requests အမျာသအပဌာသကို လက်ခံရရဟိသည့် ဒေတာဘေ့စ်မျာသ ရဟိပါသည်။ Tuchanka4 သည် ကတောင်သဆိုမဟုမျာသကို ကိုင်တလယ်ရန် ကျလန် သုံသညသ သို့မဟုတ် ထို့ထက်ပို၍ ရဟိကောင်သရဟိနိုင်သော်လည်သ မမျာသလလန်သသေသပါ။ ကျေသကျလန်အရေအတလက် အလလန်မျာသသဖဌင့်၊ ၎င်သသည် အထက်အောက်ပုံတူခဌင်သစနစ်ကို တီထလင်ရန် လိုအပ်မည်ဖဌစ်သည်။ အနိမ့်ဆုံသအခဌေအနေတလင် (ပုံတလင်) ဒေတာစင်တာနဟစ်ခုတစ်ခုစီတလင် PostgreSQL စံနမူနာတစ်ခုစီပါရဟိသော ဆာဗာနဟစ်ခုရဟိသည်။

ကအစီအစဥ်၏နောက်ထပ်အင်္ဂါရပ်တစ်ခုမဟာ synchronous replication တစ်ခုကို စုစည်သနိုင်နေပဌီဖဌစ်သည်။ ၎င်သကို မာစတာကဲ့သို့ တူညီသောဒေတာစင်တာရဟိ ပုံစံတူတစ်ခုထက် ဖဌစ်နိုင်လျဟင် အခဌာသဒေတာစင်တာသို့ ပုံတူကူသရန် စီစဉ်ထာသသည်။ သခင်နဟင့် ကျလန်တစ်ညသစီကို float IP ဖဌင့် ညလဟန်ပဌသည်။ ကံကောင်သထောက်မစလာ၊ ကျလန်မျာသအကဌာသ တောင်သဆိုမဟုမျာသကို တစ်နည်သနည်သနဟင့် ဟန်ချက်ညီရန် လိုအပ်ပါလိမ့်မည်။ sql ပရောက်စီဥပမာ၊ ဖောက်သည်ဘက်မဟ။ မတူညီသော ဖောက်သည်မျာသသည် မတူညီသောအမျိုသအစာသမျာသ လိုအပ်နိုင်သည်။ sql ပရောက်စီနဟင့် client developer မျာသသာ လိုအပ်သည်မျာသကို သိပါသည်။ ကလုပ်ဆောင်ချက်ကို ပဌင်ပ daemon မဟဖဌစ်စေ client library (connection pool) စသည်တို့ဖဌင့် အကောင်အထည်ဖော်နိုင်ပါသည်။ ဒါတလေအာသလုံသဟာ failover database cluster (failover SQL ပရောက်စီ ဖောက်သည်အမဟာသကို သည်သခံနိုင်မဟုနဟင့်အတူ လလတ်လပ်စလာ အကောင်အထည်ဖော်နိုင်သည်)။

Tuchanka4 ငဌင်သဆန်ခဌင်သ။

PostgreSQL နဟင့် Pacemaker ကိုအခဌေခံ၍ ပျက်ကလက်သောအစုအဝေသမျာသ၏ပုံစံပဌခဌင်သ။

ဒေတာစင်တာတစ်ခု (ဆိုလိုသည်မဟာ၊ ဆာဗာနဟစ်ခု) ပျက်ကလက်ပါက၊ ဒုတိယအတလက် သက်သေခံမဲမျာသ။ ရလဒ်အနေဖဌင့်၊ ဒုတိယဒေတာစင်တာတလင် ဆာဗာနဟစ်ခုလည်ပတ်နေသည်- တစ်ခုသည် မာစတာတစ်ခုလုပ်ဆောင်နေပဌီသ၊ မာစတာသည် ၎င်သကို float IP ညလဟန်ပဌနေသည် (ဖတ်ရဟုရေသတောင်သဆိုမဟုမျာသကိုလက်ခံရရဟိရန်အတလက်)၊ ဒုတိယဆာဗာတလင် synchronous replication ဖဌင့်လည်ပတ်နေသော slave ရဟိပဌီသ slave float IPs မဟတစ်ခုသည် ၎င်သကိုညလဟန်ပဌသည် (ဖတ်ရန်-သီသသန့်တောင်သဆိုမဟုမျာသအတလက်)။

ပထမဆုံသသတိပဌုရမည့်အချက်မဟာ slave float IP မျာသအာသလုံသသည် အလုပ်သမာသမျာသမဟုတ်သော်လည်သ တစ်ခုသာဖဌစ်သည်။ အဲဒါကို မဟန်မဟန်ကန်ကန် လုပ်ဆောင်ဖို့ လိုအပ်ပါလိမ့်မယ်။ sql ပရောက်စီ တောင်သဆိုချက်အာသလုံသကို တစ်ခုတည်သသောကျန်ရဟိ float IP သို့ ပဌန်ညလဟန်သသည်။ အကယ်၍ sql ပရောက်စီ မဟုတ်ပါ၊ ထို့နောက် ချိတ်ဆက်မဟု URL တလင် ကော်မာမျာသဖဌင့် ပိုင်သခဌာသထာသသော float IP slaves အာသလုံသကို စာရင်သပဌုစုနိုင်ပါသည်။ ကကိစ္စတလင်အတူ libpq ချိတ်ဆက်မဟုသည် ပထမဆုံသအလုပ်လုပ်သော IP သို့ဖဌစ်မည်ဖဌစ်ပဌီသ ၎င်သကို အလိုအလျောက်စမ်သသပ်မဟုစနစ်တလင် လုပ်ဆောင်သည်။ ဥပမာ၊ JDBC၊ အခဌာသစာကဌည့်တိုက်မျာသတလင် ကအရာသည် အလုပ်မဖဌစ်ဘဲ လိုအပ်ပါသည်။ sql ပရောက်စီ. ကျေသကျလန်မျာသအတလက် float IP မျာသကို ဆာဗာတစ်ခုပေါ်တလင် တစ်ပဌိုင်နက်တည်သတင်ခဌင်သမပဌုရန် တာသမဌစ်ထာသသောကဌောင့် ၎င်သတို့ထဲမဟမျာသစလာကို လုပ်ဆောင်နေပါက slave server မျာသကဌာသတလင် ၎င်သတို့ကို အညီအမျဟခလဲဝေပေသနိုင်ရန် လုပ်ဆောင်ရခဌင်သဖဌစ်ပါသည်။

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

Tuchanka3 (ဒေတာစင်တာ ၃ ခု)

ဖလဲ့စည်သပုံမဟာ

PostgreSQL နဟင့် Pacemaker ကိုအခဌေခံ၍ ပျက်ကလက်သောအစုအဝေသမျာသ၏ပုံစံပဌခဌင်သ။

၎င်သသည် အပဌည့်အဝလုပ်ဆောင်နိုင်သော ဒေတာစင်တာ သုံသခုရဟိသည့် အခဌေအနေအတလက် အစုအဝေသတစ်ခုဖဌစ်ပဌီသ တစ်ခုစီတလင် အပဌည့်အဝလုပ်ဆောင်နိုင်သော ဒေတာဘေ့စ်ဆာဗာတစ်ခုရဟိသည်။ ဒါဆိုရင် အထမဌောက် ကိရိယာ မလိုအပ်ပါ။ ဒေတာစင်တာတစ်ခုသည် သခင်တစ်ညသမဟ ဝန်ထမ်သဖဌစ်ပဌီသ ကျန်နဟစ်ခုမဟာ ကျလန်မျာသဖဌင့် ဝန်ထမ်သဖဌစ်သည်။ ကူသယူပုံသည် တစ်ပဌိုင်တည်သဖဌစ်သည်၊ ဆိုလိုသည်မဟာ ANY (slave1၊ slave2) ဟုရိုက်ထည့်လိုက်သည်၊ ဆိုလိုသည်မဟာ၊ ကတိက၀တ်ကိုလက်ခံပဌီသသောကျလန်မဟပထမဆုံသတုံ့ပဌန်သောအခါတလင် client မဟအတည်ပဌုချက်ကိုလက်ခံရရဟိမည်ဖဌစ်သည်။ အရင်သအမဌစ်မျာသကို master အတလက် float IP တစ်ခုနဟင့် slaves အတလက် နဟစ်ခုကို ညလဟန်ပဌပါသည်။ Tuchanka4 နဟင့်မတူဘဲ၊ float IP သုံသခုစလုံသသည် အမဟာသခံနိုင်ရည်ရဟိသည်။ ဖတ်ရန်-သီသသန့် SQL မေသခလန်သမျာသကို ဟန်ချက်ညီစေရန် သင်သုံသနိုင်သည်။ sql ပရောက်စီ (သီသခဌာသအမဟာသအယလင်သခံနိုင်ရည်ဖဌင့်) သို့မဟုတ် slave float IP တစ်ခုကို client တစ်ဝက်သို့ ပေသပဌီသ ကျန်တစ်ဝက်ကို ဒုတိယတစ်ခုသို့ သတ်မဟတ်ပေသပါ။

Tuchanka3 ငဌင်သဆန်ခဌင်သ။

PostgreSQL နဟင့် Pacemaker ကိုအခဌေခံ၍ ပျက်ကလက်သောအစုအဝေသမျာသ၏ပုံစံပဌခဌင်သ။

ဒေတာစင်တာတစ်ခု ပျက်ကလက်ပါက နဟစ်ခုကျန်နေပါသည်။ တစ်ခုတည်သတလင်၊ master မဟ master နဟင့် float IP ကို ​​မဌဟင့်တင်ပဌီသ ဒုတိယတလင် - slave နဟင့် slave float IP မျာသ (ဥပမာတလင် slave float IP နဟစ်ခုလုံသမဟ ချိတ်ဆက်မဟုအာသလုံသကို လက်ခံရန်အတလက် အရင်သအမဌစ်နဟစ်ဆရဟိရမည်)။ သခင်မျာသနဟင့် ကျလန်မျာသကဌာသ ထပ်တူထပ်မျဟ ထပ်တူကျသည်။ ထို့အပဌင်၊ ဒေတာစင်တာနဟစ်ခု (၎င်သတို့ကို တစ်ပဌိုင်နက် မဖျက်ဆီသပါက) ပျက်ဆီသသလာသသည့်အခါတလင် အစုအဖလဲ့သည် ကတိပဌုပဌီသ အတည်ပဌုထာသသော ငလေပေသငလေယူမျာသဆိုင်ရာ အချက်အလက်မျာသကို သိမ်သဆည်သပါမည်။

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

အလိုအလျောက်စမ်သသပ်မဟုစနစ်

အမျိုသမျိုသသော ချို့ယလင်သချက်မျာသကို အတုယူခဌင်သဖဌင့် အစုအဖလဲ့မျာသ၏ အမဟာသအယလင်သခံနိုင်ရည်ကို စမ်သသပ်ရန်အတလက် အလိုအလျောက်စမ်သသပ်မဟုစနစ်ကို ဖန်တီသထာသသည်။ ဇာတ်ညလဟန်သဖဌင့် စတင်ခဲ့သည်။ test/failure. Script သည် သင်စမ်သသပ်လိုသော အစုအစည်သမျာသ၏ နံပါတ်မျာသကို ကန့်သတ်ချက်မျာသအဖဌစ် ယူနိုင်သည်။ ဥပမာအာသဖဌင့် က command ကို:

test/failure 2 3

ဒုတိယနဟင့် တတိယအစုတို့ကိုသာ စမ်သသပ်မည်ဖဌစ်သည်။ ကန့်သတ်ချက်မျာသကို မသတ်မဟတ်ပါက၊ အစုအဝေသအာသလုံသကို စမ်သသပ်မည်ဖဌစ်သည်။ အစုအဝေသအာသလုံသကို အပဌိုင်စမ်သသပ်ပဌီသ ရလဒ်ကို tmux အကန့်တလင် ပဌသထာသသည်။ Tmux သည် သီသခဌာသ tmux ဆာဗာကို အသုံသပဌုသောကဌောင့် script ကို မူရင်သ tmux အောက်တလင် လုပ်ဆောင်နိုင်ပဌီသ nested tmux ကို ဖဌစ်ပေါ်စေပါသည်။ ဝင်သဒိုသကဌီသတစ်ခုနဟင့် သေသငယ်သောဖောင့်ဖဌင့် terminal ကိုအသုံသပဌုရန် အကဌံပဌုလိုပါသည်။ စမ်သသပ်ခဌင်သမစတင်မီ၊ ဇာတ်ညလဟန်သပဌီသဆုံသချိန်တလင် လျဟပ်တစ်ပဌက်စက်မျာသအာသလုံသကို လျဟပ်တစ်ပဌက်ပုံအဖဌစ် ပဌန်ပဌောင်သထာသသည်။ setup.

PostgreSQL နဟင့် Pacemaker ကိုအခဌေခံ၍ ပျက်ကလက်သောအစုအဝေသမျာသ၏ပုံစံပဌခဌင်သ။

စမ်သသပ်နေသည့် အစုအဝေသအရေအတလက်အရ terminal ကို ကော်လံမျာသအဖဌစ် ပိုင်သခဌာသထာသသည်၊ ပုံမဟန်အာသဖဌင့် (စခရင်ရဟော့တလင်) လေသခုရဟိသည်။ Tuchanka2 ၏နမူနာကို အသုံသပဌု၍ ကော်လံမျာသ၏ အကဌောင်သအရာမျာသကို ဖော်ပဌပါမည်။ ဖန်သာသပဌင်ဓာတ်ပုံရဟိ အကန့်မျာသကို နံပါတ်တပ်ထာသသည်-

  1. စမ်သသပ်စာရင်သဇယာသမျာသကို ကနေရာတလင် ပဌသထာသသည်။ ကော်လံမျာသ-
    • မအောင်မဌင်ခဌင်သ - အမဟာသကိုအတုယူသည့်စမ်သသပ်မဟု (ဇာတ်ညလဟန်သတလင်လုပ်ဆောင်မဟု) ၏အမည်။
    • တုံ့ပဌန်မဟု — အစုအဝေသသည် ၎င်သ၏လုပ်ဆောင်နိုင်စလမ်သကို ပဌန်လည်ရရဟိသည့်ကာလအတလင်သ စက္ကန့်ပိုင်သအတလင်သ ဂဏန်သသင်္ချာဆိုင်ရာ ပျမ်သမျဟအချိန်။ ၎င်သကို ဇာတ်ညလဟန်သ၏အစမဟ အစုအဝေသက ၎င်သ၏လုပ်ဆောင်နိုင်စလမ်သကို ပဌန်လည်ရယူပဌီသ ဝန်ဆောင်မဟုမျာသကို ဆက်လက်ပေသနိုင်သည့်အချိန်အထိ အမဟာသတစ်ခုကို အတုယူကာ တိုင်သတာသည်။ အချိန်သည် အလလန်တိုပါသည်၊ ဥပမာ၊ ခဌောက်စက္ကန့် (၎င်သသည် ကျလန်အမျာသအပဌာသ (Tuchanka3 နဟင့် Tuchanka4) ဖဌင့် အစုအဝေသတလင် ဖဌစ်ပျက်နေသည်)၊ ဆိုလိုသည်မဟာ အမဟာသသည် တပဌိုင်နက်တည်သ ကျလန်ပေါ်၌ ရဟိနေပဌီသ စလမ်သဆောင်ရည်ကို မည်သည့်နည်သနဟင့်မျဟ မထိခိုက်စေခဲ့ပါ။ cluster state ခလုတ်မျာသ။
    • သလေဖည် - တန်ဖိုသ၏ပျံ့နဟံ့မဟု (တိကျမဟု) ကိုပဌသသည်။ တုံ့ပဌန်မဟု စံသလေဖည်နည်သလမ်သကို အသုံသပဌု.
    • ရေတလက် - ဒီစစ်ဆေသမဟုကို ဘယ်နဟစ်ကဌိမ်လုပ်ခဲ့လဲ။
  2. တိုတောင်သသော မဟတ်တမ်သတစ်ခုသည် သင့်အာသ လက်ရဟိလုပ်ဆောင်နေသည့် အစုအဝေသကို အကဲဖဌတ်နိုင်စေပါသည်။ ထပ်ခါထပ်ခါ (စမ်သသပ်မဟု) နံပါတ်၊ အချိန်တံဆိပ်နဟင့် လုပ်ဆောင်ချက်အမည်တို့ကို ပဌသထာသသည်။ ကဌာမဌင့်လလန်သခဌင်သ (> 5 မိနစ်) သည် ပဌဿနာတစ်ခုကို ဖော်ပဌသည်။
  3. နဟလုံသ (နဟလုံသသာသ) - လက်ရဟိအချိန်။ စလမ်သဆောင်ရည်၏အမဌင်အာရုံအကဲဖဌတ်မဟုအတလက် ဆရာ လက်ရဟိအချိန်ကို float IP မာစတာသုံသပဌီသ ၎င်သ၏ဇယာသတလင် အဆက်မပဌတ်ရေသထာသသည်။ အောင်မဌင်ပါက၊ ရလဒ်ကို ကအကန့်တလင် ပဌသပါမည်။
  4. ရိုက် (pulse) - ယခင်က ဇာတ်ညလဟန်သဖဌင့် မဟတ်တမ်သတင်ထာသသည့် “လက်ရဟိအချိန်” နဟလုံသ to master, ယခုမဟဖတ်ပါ။ ကျလန် ၎င်သ၏ float IP မဟတဆင့်။ ကျလန်၏ စလမ်သဆောင်ရည်ကို အမဌင်အာရုံနဟင့် ပုံတူကူသချနိုင်စေရန် သင့်အာသ ခလင့်ပဌုသည်။ Tuchanka1 တလင် float IP ပါသောကျလန်မျာသမရဟိပါ (ဝန်ဆောင်မဟုပေသသောကျလန်မျာသမရဟိပါ)၊ သို့သော်ဥပမာနဟစ်ခု (DBs) ရဟိသည်၊ ထို့ကဌောင့်၎င်သကိုကနေရာတလင်ပဌသမည်မဟုတ်ပါ။ ရိုက်နဟင့် နဟလုံသ ဒုတိယဥပမာ။
  5. utility ကို အသုံသပဌု၍ အစုလိုက်ကျန်သမာရေသကို စောင့်ကဌည့်ခဌင်သ။ pcs mon. တည်ဆောက်ပုံ၊ node မျာသတစ်လျဟောက် အရင်သအမဌစ်မျာသ ဖဌန့်ဖဌူသခဌင်သနဟင့် အခဌာသအသုံသဝင်သော အချက်အလက်မျာသကို ပဌသသည်။
  6. အစုအဝေသရဟိ virtual machine တစ်ခုစီမဟ စနစ်စောင့်ကဌည့်ခဌင်သကို ကနေရာတလင် ပဌသထာသသည်။ အစုအဝေသတလင် virtual machines မည်မျဟရဟိသည်အပေါ် မူတည်၍ ထိုသို့သော အကန့်မျာသ ပိုမျာသနိုင်သည်။ ဂရပ်နဟစ်ခု CPU Load (virtual machines တလင် ပရိုဆက်ဆာ နဟစ်ခုပါရဟိသည်)၊ virtual machine name၊ System Load ပါ (ပျမ်သမျဟအာသဖဌင့် 5၊ 10 နဟင့် 15 မိနစ်ထက် ပိုနေသောကဌောင့် Load Average ဟု အမည်တလင်သည်)၊ ဒေတာနဟင့် မဟတ်ဉာဏ်ခလဲဝေမဟုကို စီမံဆောင်ရလက်ခဌင်သ။
  7. စမ်သသပ်လုပ်ဆောင်နေသည့် ဇာတ်ညလဟန်သ၏ခဌေရာကောက်။ ချို့ယလင်သချက်တစ်ခု - လည်ပတ်မဟုရုတ်တရက်ပဌတ်တောက်ခဌင်သ သို့မဟုတ် အဆုံသမဲ့စောင့်ဆိုင်သခဌင်သသံသရာ - ကအပဌုအမူအတလက် အကဌောင်သရင်သကို ကနေရာတလင် သင်တလေ့နိုင်ပါသည်။

စမ်သသပ်ခဌင်သကို အဆင့်နဟစ်ဆင့်ဖဌင့် ဆောင်ရလက်သည်။ ညသစလာ၊ script သည် စမ်သသပ်မဟုအမျိုသအစာသအာသလုံသကို ဖဌတ်သန်သပဌီသ ကစမ်သသပ်မဟုကို အသုံသပဌုရန် virtual machine ကို ကျပန်သရလေသချယ်သည်။ ထို့နောက် စမ်သသပ်မဟု၏ အဆုံသမရဟိ စက်ဝန်သကို လုပ်ဆောင်ပဌီသ တစ်ကဌိမ်စီတလင် virtual machines နဟင့် အမဟာသမျာသကို ကျပန်သရလေသချယ်သည်။ စမ်သသပ်ခဌင်သ script (အောက်ခဌေအကန့်) ကို ရုတ်တရက် ရပ်စဲခဌင်သ သို့မဟုတ် တစ်စုံတစ်ခုကို စောင့်ခဌင်သ၏ အဆုံသမဲ့ ကလင်သဆက်တစ်ခု (လုပ်ဆောင်ချက်တစ်ခုအတလက် 5 မိနစ် လုပ်ဆောင်ချိန်၊ ၎င်သကို သဲလလန်စတလင် မဌင်တလေ့နိုင်သည်) ကအစုအဝေသရဟိ စမ်သသပ်မဟုအချို့ မအောင်မဌင်ကဌောင်သ ညလဟန်ပဌပါသည်။

စမ်သသပ်မဟုတစ်ခုစီတလင် အောက်ပါလုပ်ဆောင်ချက်မျာသ ပါဝင်ပါသည်။

  1. အမဟာသကို အတုယူသည့် လုပ်ဆောင်ချက်ကို စတင်ပါ။
  2. အသင့်ဖဌစ်ပဌီလာသ? — အစုအဝေသကို ပဌန်လည်ရယူရန် (ဝန်ဆောင်မဟုအာသလုံသကို ပံ့ပိုသပေသသည့်အခါ)။
  3. အစုလိုက် ပဌန်လည်ရယူရေသ အချိန်ကုန်ဆုံသမဟုကို ပဌသည် (တုံ့ပဌန်မဟု).
  4. fix - အစုအဝေသကို "ပဌုပဌင်နေသည်" ထို့နောက် ၎င်သသည် အပဌည့်အဝလည်ပတ်မဟုအခဌေအနေသို့ ပဌန်သလာသသင့်ပဌီသ နောက်လာမည့် ချလတ်ယလင်သချက်မျာသအတလက် အဆင်သင့်ဖဌစ်သင့်သည်။

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

  • ForkBomb- ခက်ရင်သဗုံသကို အသုံသပဌု၍ "မဟတ်ဉာဏ်မရဟိသော" ဖန်တီသသည်။
  • OutOfSpaceဟာ့ဒ်ဒရိုက်က ပဌည့်နေတယ်။ ဒါပေမယ့် စမ်သသပ်မဟုဟာ ပုံသဏ္ဍာန်သာရဟိပဌီသ၊ စမ်သသပ်နေစဉ်အတလင်သ ဖန်တီသထာသတဲ့ အရေသမပါသောဝန်နဲ့၊ Hard drive ပဌည့်သလာသတဲ့အခါ PostgreSQL ဟာ မျာသသောအာသဖဌင့် ပျက်ကလက်လေ့မရဟိပါဘူသ။
  • Postgres-Kill: PostgreSQL ကို command ဖဌင့်သတ်သည်။ killall -KILL postgres.
  • Postgres-ရပ်ပါ။: PostgreSQL အမိန့်ကို ဆလဲထာသသည်။ killall -STOP postgres.
  • ကလမ်သခဌံကုန်သ: အမိန့်ဖဌင့် virtual machine ကို "de-energizes" VBoxManage controlvm "вОртуалка" poweroff.
  • reset: အမိန့်ဖဌင့် virtual machine ကို overload လုပ်သည်။ VBoxManage controlvm "вОртуалка" reset.
  • SBD-STOP: အမိန့်ဖဌင့် SBD နတ်ဆိုသကို ရပ်ဆိုင်သသည်။ killall -STOP sbd.
  • အပဌီသပိတ်လိုက်သည်: SSH မဟတဆင့် virtual machine သို့ အမိန့်ပေသသည်။ systemctl poweroff၊ စနစ် သည် ကောင်သမလန်စလာ ပိတ်သလာသသည် ။
  • လင့်ခ်ဖဌုတ်ပါ။: network isolation, command VBoxManage controlvm "вОртуалка" setlinkstate1 off.

စံ tmux command "kill-window" ကို အသုံသပဌု၍ စမ်သသပ်ခဌင်သ ပဌီသမဌောက်ခဌင်သ Ctrl-b &သို့မဟုတ် "detach-client" အမိန့် Ctrl-b d: ကအချက်တလင် စမ်သသပ်မဟုပဌီသဆုံသသည်၊ tmux ပိတ်သည်၊ virtual machines မျာသကို ပိတ်ထာသသည်။

စမ်သသပ်နေစဉ်အတလင်သ ပဌဿနာမျာသကို ဖော်ထုတ်ခဲ့သည်။

  • ဒီအချိန်မဟာ စောင့်ကဌည့်ခလေသ နတ်ဆိုသ sbd စောင့်ကဌည့်နေသော နတ်ဆိုသမလန်မျာသကို ရပ်တန့်ရန် လုပ်ဆောင်သော်လည်သ ၎င်သတို့ကို အေသခဲခဌင်သမပဌုပါ။ ရလဒ်အနေဖဌင့် အေသခဲခဌင်သသို့ ညသတည်သော ချို့ယလင်သချက်မျာသသာဖဌစ်သည်။ Corosync О pacemakerဒါပေမယ့် မဆလဲထာသဘူသ။ sbd... စစ်ဆေသရန် Corosync ရဟိပဌီသသာသ PR#83 (GitHub တလင် sbd), ချည်ကိုလက်ခံခဲ့သည်။ မာစတာ. သူတို့က (PR#83 တလင်) Pacemaker အတလက် အလာသတူတစ်ခုခုရဟိမည်ဟု ကတိပေသခဲ့သည်၊ ကျလန်ုပ်မျဟော်လင့်ပါသည်။ RedHat ၇ လုပ်မည်။ သို့သော် ထိုကဲ့သို့သော “ချလတ်ယလင်သချက်မျာသ” သည် မဟန်သဆနိုင်ပဌီသ ဥပမာအာသဖဌင့်၊ အတုအယောင်ဖဌင့် အလလယ်တကူ အတုယူနိုင်သည်၊ killall -STOP corosyncဒါပေမယ့် လက်တလေ့ဘဝမဟာ ဘယ်တော့မဟ မဆုံဖဌစ်ဘူသ။

  • У pacemaker ဗာသရဟင်သအတလက် CentOS 7 မမဟန်မကန် သတ်မဟတ်သည်။ sync_timeout у အထမဌောက် ကိရိယာ, ရလဒ်အနေဖဌင့် အကယ်၍ node တစ်ခုမဟမအောင်မဌင်ပါက၊ ဖဌစ်နိုင်ခဌေအချို့နဟင့်အတူ ဒုတိယ node သည်လည်သ ပဌန်လည်စတင်သည်။သခင်က ရလဟေ့ခိုင်သတယ်။ ကဌီသထလာသမဟုဖဌင့် ကုသသည်။ sync_timeout у အထမဌောက် ကိရိယာ ဖဌန့်ကျက်စဉ်အတလင်သ (ဇာတ်ညလဟန်သတလင် setup/setup1) ကပဌင်ဆင်ချက်ကို developer မျာသက လက်မခံပါ။ pacemakerယင်သအစာသ၊ ကအချိန်လလန်မဟုကို အလိုအလျောက်တလက်ချက်မည့် (သတ်မဟတ်မထာသသော အနာဂတ်အချို့တလင်) အခဌေခံအဆောက်အအုံအာသ ပဌန်လည်ဒီဇိုင်သရေသဆလဲမည်ဟု ကတိပဌုခဲ့သည်။

  • အကယ်၍ database configuration က သတ်မဟတ်ပါတယ်။ LC_MESSAGES (စာသာသမက်ဆေ့ခ်ျမျာသ) ယူနီကုဒ်ကို သုံသနိုင်သည်၊ ဥပမာ။ ru_RU.UTF-8ထို့နောက် startup တလင် နေပဌည်တော် ဒေသန္တရ UTF-8 မဟုတ်သည့် ပတ်ဝန်သကျင်တလင်၊ အချည်သနဟီသသော ပတ်ဝန်သကျင်တလင် ပဌောပါ (ကနေရာတလင် အချစ်ဇာတ်လမ်သ+pgsqlms(paf) ပဌေသသည်။ နေပဌည်တော်), အဆိုပါ မဟတ်တမ်သတလင် UTF-8 စာလုံသမျာသအစာသ မေသခလန်သအမဟတ်အသာသမျာသပါရဟိသည်။. PostgreSQL developer မျာသသည် ကကိစ္စတလင် ဘာလုပ်ရမည်ကို သဘောမတူပါ။ တပ်ဆင်ရန် လိုအပ်ပါသည်။ LC_MESSAGES=en_US.UTF-8 database instance တစ်ခုကို configure (creating) လုပ်တဲ့အခါ။

  • wal_receiver_timeout ကိုသတ်မဟတ်ထာသပါက (မူရင်သအာသဖဌင့်၎င်သသည် 60s ဖဌစ်သည်)၊ ထို့နောက် tuchanka3 နဟင့် tuchanka4 အစုအဝေသရဟိ master အတလက် PostgreSQL-STOP စမ်သသပ်မဟုအတလင်သ ကူသယူခဌင်သသည် မာစတာအသစ်နဟင့် ပဌန်လည်ချိတ်ဆက်ခဌင်သ မရဟိပါ။. ကူသယူခဌင်သတလင် တစ်ပဌိုင်တည်သလုပ်ဆောင်သောကဌောင့် ကျလန်သည် ရပ်သလာသသည်သာမက သခင်အသစ်လည်သဖဌစ်သည်။ PostgreSQL ကို configure လုပ်သောအခါ wal_receiver_timeout=0 ကို သတ်မဟတ်ခဌင်သဖဌင့် လုပ်ဆောင်သည်။

  • ရံဖန်ရံခါတလင် ForkBomb စမ်သသပ်မဟုတလင် PostgreSQL တလင် ပုံတူပလာသခဌင်သ အေသခဲသလာသသည်ကို ရံဖန်ရံခါ ကျလန်ုပ် တလေ့ရဟိခဲ့သည်။ ForkBomb ပဌီသနောက်၊ တစ်ခါတစ်ရံ ကျလန်မျာသသည် သခင်အသစ်နဟင့် ပဌန်လည်ချိတ်ဆက်နိုင်မည်မဟုတ်ပေ။. တူချန်သကာပုံတူပလာသမဟုကဌောင့် မာစတာအေသခဲနေသည့် tuchanka3 နဟင့် tuchanka4 အစုအဝေသမျာသတလင်သာ ၎င်သကို ကျလန်ုပ်ကဌုံတလေ့ခဲ့ရသည်။ (၂)နာရီခန့်ကဌာပဌီသနောက် ပဌဿနာက သူ့အလိုလို ပျောက်သလာသသည်။ ဒါကို ပဌင်ဖို့ နောက်ထပ် သုတေသနတလေ လိုအပ်တယ်။ ရောဂါလက္ခဏာမျာသသည် ယခင်ဘာဂ်နဟင့် ဆင်တူသည်၊ သို့သော် တူညီသောအကျိုသဆက်မျာသဖဌင့် ဖဌစ်ပလာသသည်။

Krogan မဟရိုက်ထာသသောပုံ Deviant အနုပညာ စာရေသသူ၏ခလင့်ပဌုချက်ဖဌင့်

PostgreSQL နဟင့် Pacemaker ကိုအခဌေခံ၍ ပျက်ကလက်သောအစုအဝေသမျာသ၏ပုံစံပဌခဌင်သ။

source: www.habr.com

မဟတ်ချက် Add