Patroni တွင် ယုံကြည်စိတ်ချရသော PostgreSQL အစုအဝေးတစ်ခုကို ကျွန်ုပ်တို့ မည်သို့တည်ဆောက်ခဲ့သနည်း။

Patroni တွင် ယုံကြည်စိတ်ချရသော PostgreSQL အစုအဝေးတစ်ခုကို ကျွန်ုပ်တို့ မည်သို့တည်ဆောက်ခဲ့သနည်း။

ယနေ့ခေတ်တွင် ကြီးမားသော စျေးကြီးသော ပရောဂျက်များတွင်သာမက နေရာတိုင်းတွင်ပါ ဝန်ဆောင်မှုများ မြင့်မားစွာရရှိရန် လိုအပ်ပါသည်။ “ဆောရီး၊ ပြုပြင်ထိန်းသိမ်းမှု ဆက်လက်လုပ်ဆောင်နေသည်” ဟူသော မက်ဆေ့ချ်ပါ ယာယီမရနိုင်သည့် ဝဘ်ဆိုက်များကို တွေ့ရှိနေရဆဲဖြစ်သော်လည်း အများအားဖြင့် သနားစရာကောင်းသော အပြုံးကို ဖြစ်စေသည်။ နောက်ထပ်ဆာဗာတစ်ခုဖွင့်သည့်အခါတွင် သင်သည် API သို့ခေါ်ဆိုမှုတစ်ခုသာလိုအပ်ပြီး "ဟာ့ဒ်ဝဲ" လည်ပတ်မှုအကြောင်းကို သင်စဉ်းစားရန်မလိုအပ်ဘဲ တိမ်များထဲတွင် ဤဘဝထဲသို့ ထည့်လိုက်ကြပါစို့။ ထို့အပြင် အရေးကြီးသောစနစ်တစ်ခုသည် အစုလိုက်နည်းပညာများနှင့် ထပ်နေသောအချိန်များကို အသုံးပြု၍ ယုံကြည်စိတ်ချစွာ မတည်ဆောက်ရခြင်းအတွက် အကြောင်းပြချက်များမရှိတော့ပါ။

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

မြင့်မားသောရရှိနိုင်မှုဗိသုကာတွင် အမွေအနှစ်

အမျိုးမျိုးသော opensource စနစ်များ ဖွံ့ဖြိုးတိုးတက်မှုအခြေအနေတွင် ၎င်းကို ပို၍ပင်တွေ့မြင်နိုင်သည်။ ဝယ်လိုအားများလာသည်နှင့်အမျှ အမွေအနှစ်ဖြေရှင်းနည်းများသည် မြင့်မားသောရရှိနိုင်မှုနည်းပညာများကို ထည့်သွင်းရန် တွန်းအားပေးခဲ့သည်။ ပြီးတော့ သူတို့ရဲ့ အရည်အသွေးလည်း မတူဘူး။ မျိုးဆက်သစ်ဖြေရှင်းချက်များသည် ၎င်းတို့၏ဗိသုကာလက်ရာ၏ အဓိကအချက်တွင် ရရှိနိုင်မှုမြင့်မားသည်။ ဥပမာအားဖြင့်၊ MongoDB သည် ၎င်း၏အဓိကအသုံးပြုမှုကိစ္စရပ်အဖြစ် အစုလိုက်အပြုံလိုက်နေရာယူထားသည်။ ဤ DBMS ၏ ပြင်းထန်သော ပြိုင်ဆိုင်မှု အားသာချက်ဖြစ်သည့် အစုအဝေးသည် အလျားလိုက် အတိုင်းအတာဖြစ်သည်။

PostgreSQL သို့ ပြန်သွားကြပါစို့။ ၎င်းသည် ရှေးအကျဆုံး လူကြိုက်များသော opensource ပရောဂျက်များထဲမှ တစ်ခုဖြစ်ပြီး၊ ၎င်းသည် ပြီးခဲ့သည့် ရာစုနှစ် 95th နှစ်တွင် ပထမဆုံးထွက်ရှိခဲ့သည်။ အချိန်အတော်ကြာအောင်၊ ပရောဂျက်အဖွဲ့သည် စနစ်ဖြင့်ဖြေရှင်းရန် လိုအပ်သော မြင့်မားသောရရှိနိုင်မှုပြဿနာအဖြစ် မစဉ်းစားခဲ့ပေ။ ထို့ကြောင့်၊ ဒေတာမိတ္တူဖန်တီးခြင်းအတွက် ကူးယူခြင်းနည်းပညာသည် 8.2 ခုနှစ်တွင် ဗားရှင်း 2006 တွင်သာ built-in ဖြစ်လာခဲ့သော်လည်း ၎င်းသည် ဖိုင်အခြေခံ (မှတ်တမ်းပို့ဆောင်ခြင်း) ဖြစ်သည်။ 2010 တွင်၊ ဗားရှင်း 9.0 သည် streaming replication ကိုမိတ်ဆက်ပေးခဲ့ပြီး၊ ၎င်းသည် ကျယ်ပြန့်သောအစုအဝေးများကိုဖန်တီးရန်အတွက်အခြေခံဖြစ်သည်။ ဤသည်မှာ အမှန်အားဖြင့် Enterprise SQL သို့မဟုတ် ခေတ်သစ် NoSQL ပြီးနောက် PostgreSQL နှင့် ရင်းနှီးသောသူများအတွက် အလွန်အံ့သြစရာဖြစ်ပါသည် - အသိုင်းအဝိုင်းမှ စံဖြေရှင်းချက်သည် ရိုးရှင်းစွာ synchronous သို့မဟုတ် asynchronous replication ပါရှိသော master-replica pair တစ်ခုဖြစ်သည်။ တစ်ချိန်တည်းမှာပင်၊ စတော့တွင်၊ မာစတာပြောင်းခြင်းကို ကိုယ်တိုင်လုပ်ဆောင်ပြီး သုံးစွဲသူများကို ကူးပြောင်းသည့်ပြဿနာကိုလည်း လွတ်လပ်စွာဖြေရှင်းရန် အဆိုပြုထားသည်။

ယုံကြည်စိတ်ချရသော PostgreSQL ကို မည်သို့ပြုလုပ်ရန် ကျွန်ုပ်တို့ ဆုံးဖြတ်ခဲ့ပုံနှင့် ၎င်းအတွက် ကျွန်ုပ်တို့ရွေးချယ်ခဲ့သည့်အရာ

သို့သော်၊ အဆက်မပြတ်အာရုံစိုက်ရန်မလိုအပ်သောအမှားခံနိုင်ရည်ရှိသောဖြေရှင်းချက်ကိုတည်ဆောက်ရန်ကူညီသောပရောဂျက်များနှင့်ကိရိယာများစွာမရှိပါက PostgreSQL သည်လူကြိုက်များလိမ့်မည်မဟုတ်ပါ။ တိမ်တိုက်ထဲမှာ Mail.ru တိမ်တိုက်ဖြေရှင်းချက် (MCS) တစ်ခုတည်းသော PostgreSQL ဆာဗာများနှင့် အညီအမျှ ကူးယူဖော်ပြသည့် မာစတာ-ပုံတူအတွဲများကို DBaaS စတင်လိုက်ကတည်းက ရရှိနိုင်ပါသည်။

ပုံမှန်အားဖြင့်၊ ကျွန်ုပ်တို့သည် လူတိုင်းအတွက် ပိုမိုလွယ်ကူစေရန်နှင့် ခလုတ်ကို ညဘက်တွင် အဆက်မပြတ်စောင့်ကြည့်ပြီး နိုးထနေစရာမလိုဘဲ အလွန်ရရှိနိုင်သော ဝန်ဆောင်မှုများအတွက် အခြေခံအဖြစ် လုပ်ဆောင်နိုင်သည့် PostgreSQL တပ်ဆင်မှုကို ရရှိစေလိုပါသည်။ ဤအပိုင်းတွင် သက်သေပြထားသော ဖြေရှင်းချက်ဟောင်းများနှင့် နောက်ဆုံးပေါ် တိုးတက်မှုများကို အသုံးပြုသည့် utilities မျိုးဆက်သစ် နှစ်မျိုးလုံးရှိသည်။

ယနေ့တွင်၊ မြင့်မားသောရရှိနိုင်မှုပြဿနာသည် ထပ်လောင်းဖြစ်ခြင်းတွင်မတည်ဘဲ (ထိုသို့ပြောခြင်းမရှိဘဲ) ၏သဘောဆန္ဒအရ—ခေါင်းဆောင်ရွေးကောက်ပွဲ အယ်လဂိုရီသမ်။ အများစုမှာ၊ အဓိက မတော်တဆမှုများသည် ဆာဗာများမရှိခြင်းကြောင့်မဟုတ်ဘဲ အများသဘောတူမှုဆိုင်ရာ ပြဿနာများကြောင့်ဖြစ်သည်- ခေါင်းဆောင်အသစ်ကို မရွေးချယ်ရသေး၊ ခေါင်းဆောင်နှစ်ဦးသည် မတူညီသောဒေတာစင်တာများတွင် ပေါ်လာကြသည်၊ စသည်တို့ဖြစ်သည်။ ဥပမာ - Github MySQL အစုအဝေးတွင် မတော်တဆမှုတစ်ခု - သူတို့ရေးသားခဲ့သည်။ အသေးစိတ် postmortem.

ဤအကြောင်းအရာတွင် သင်္ချာအခြေခံသည် အလွန်လေးနက်သည်။ တဖက်မှာလည်းရှိတယ်။ CAP သီအိုရီအခြားတစ်ဖက်တွင် HA solutions များတည်ဆောက်ခြင်းဆိုင်ရာ ဖြစ်နိုင်ခြေများအပေါ် သီအိုရီအရ ကန့်သတ်ချက်များချမှတ်ထားသည့် တစ်ဖက်တွင်၊ အများဆန္ဒကို ဆုံးဖြတ်ရန်အတွက် သင်္ချာနည်းဖြင့် သက်သေပြထားသော အယ်လဂိုရီသမ်များ၊ Paxos и ဖေါင်. ဤအခြေခံအပေါ်တွင်၊ အတော်လေးရေပန်းစားသော DCS (ဗဟိုချုပ်ကိုင်မှုလျှော့ချထားသော အများဆန္ဒပေးစနစ်များ) - Zookeeper, etcd, Consul. ထို့ကြောင့်၊ ဆုံးဖြတ်ချက်ချသည့်စနစ်သည် အမှီအခိုကင်းစွာ ရေးသားထားသော အယ်လဂိုရီသမ်တစ်မျိုးမျိုးပေါ်တွင် လုပ်ဆောင်နေပါက၊ ၎င်းကို အလွန်သတိထားသင့်သည်။ စနစ်အများအပြားကို ခွဲခြမ်းစိတ်ဖြာပြီးနောက် Zalando မှ အဓိကအားဖြင့် ဖန်တီးထားသော opensource စနစ်ဖြစ်သည့် Patroni တွင် အခြေချခဲ့သည်။

သီချင်းစာသား ကွဲလွဲမှုတစ်ခုအနေဖြင့်၊ ကျွန်ုပ်တို့သည် အသံဖမ်းရန်အတွက် အလျားလိုက်စကေးချနိုင်သော အစုအဝေးများကို ဘက်စုံမာစတာဖြေရှင်းနည်းများကိုလည်း ထည့်သွင်းစဉ်းစားခဲ့သည်ဟု ကျွန်တော်ပြောပါမည်။ သို့သော် အဓိကအကြောင်းရင်းနှစ်ရပ်ကြောင့် ထိုအစုအဖွဲ့ကို မဖန်တီးရန် ဆုံးဖြတ်ခဲ့ကြသည်။ ပထမဦးစွာ၊ ထိုသို့သော ဖြေရှင်းချက်များသည် မြင့်မားရှုပ်ထွေးပြီး အားနည်းချက်များ ပိုများသည်။ ကိစ္စအားလုံးအတွက် တည်ငြိမ်သောအဖြေတစ်ခုပြုလုပ်ရန် ခက်ခဲပါလိမ့်မည်။ ဒုတိယအနေနှင့်၊ ဤကိစ္စတွင် PostgreSQL သည် သန့်ရှင်းသော (ဇာတိ) မရှိတော့ဘဲ၊ အချို့သောလုပ်ဆောင်ချက်များသည် မရနိုင်တော့ဘဲ၊ အချို့သောအပလီကေးရှင်းများသည် လည်ပတ်နေစဉ်အတွင်း ဝှက်ထားသော ချို့ယွင်းချက်များရှိနိုင်သည်။

Patroni

ဒါဆို Patroni ဘယ်လိုအလုပ်လုပ်လဲ။ developer များသည် ဘီးကို ပြန်လည်မွမ်းမံပြီး အခြေခံအဖြစ် သက်သေပြထားသော DCS ဖြေရှင်းနည်းများထဲမှ တစ်ခုကို အသုံးပြုရန် အဆိုပြုခဲ့သည်။ ဖွဲ့စည်းမှုပုံစံများကို ထပ်တူပြုခြင်း၊ ခေါင်းဆောင်တစ်ဦးကို ရွေးချယ်ခြင်းနှင့် အထမြောက်ခြင်းဆိုင်ရာ ပြဿနာအားလုံးကို သူ့အတွက် ချန်ထားခဲ့သည်။ ဤအတွက် ကျွန်ုပ်တို့သည် etcd ကို ရွေးချယ်ခဲ့သည်။

ထို့နောက်၊ Patroni သည် PostgreSQL နှင့် ထပ်တူပြုခြင်းဆက်တင်များတွင် ဆက်တင်များအားလုံးကို မှန်ကန်သောအသုံးချပလီကေးရှင်းဖြင့် ကိုင်တွယ်ဖြေရှင်းပေးသည့်အပြင် switchover နှင့် failover (မာစတာ၏ ပုံမှန်နှင့် အရေးပေါ်ပြောင်းခြင်း) ဆိုင်ရာ command များကို လုပ်ဆောင်ပေးပါသည်။ အထူးသဖြင့် MCS cloud တွင်၊ သင်သည် မာစတာတစ်ခု၏ အစုအဝေးတစ်ခု၊ တစ်ပြိုင်နက်တည်း ပုံစံတူနှင့် တစ်ခု သို့မဟုတ် တစ်ခုထက်ပိုသော အညီအမျှ ပုံစံတူများကို ဖန်တီးနိုင်သည်။ synchronous ပုံတူတစ်ခုရှိနေခြင်းသည် အနည်းဆုံး ဆာဗာ 2 ခုရှိ ဒေတာလုံခြုံမှုကို သေချာစေပြီး ၎င်းသည် အဓိက “မာစတာကိုယ်စားလှယ်လောင်း” ဖြစ်လာမည့် ဤပုံတူဖြစ်သည်။

etcd ကို တူညီသောဆာဗာများတွင် အသုံးပြုထားသောကြောင့်၊ အကြံပြုထားသော ဆာဗာအရေအတွက်သည် အကောင်းဆုံးအထမြောက်ရန်အတွက် 3 သို့မဟုတ် 5 ဖြစ်သည်။ ထိုသို့သော အစုလိုက်အပြုံလိုက် စကေးသည် စာဖတ်ရန်အတွက် အလျားလိုက် အတိုင်းအတာဖြစ်သည် (အထက်တွင်ရေးရန်အတွက် ချိန်ညှိခြင်းအကြောင်း ကျွန်တော်ရေးထားသည်)။ သို့သော်၊ အထူးသဖြင့် မြင့်မားသော ဝန်များအောက်တွင် အပြိုင်အဆိုင် တူညီသော ပုံတူများသည် နှေးကွေးတတ်ကြောင်း သတိပြုပါ။

ထိုသို့သော ဖတ်ရှုပုံတူများ (hot standby) ကို အသုံးပြုခြင်းသည် အစီရင်ခံခြင်း သို့မဟုတ် ခွဲခြမ်းစိတ်ဖြာခြင်းလုပ်ငန်းများအတွက် တရားမျှတပြီး မာစတာဆာဗာတွင် ဝန်ကို သက်သာစေသည်။

ထိုသို့သောအစုအဝေးတစ်ခုကို သင်ကိုယ်တိုင်ပြုလုပ်လိုပါက၊ သင်လိုအပ်လိမ့်မည်-

  • ဆာဗာ ၃ ခု သို့မဟုတ် ထို့ထက်ပို၍ ပြင်ဆင်ပါ၊ ၎င်းတို့ကြားရှိ IP လိပ်စာနှင့် firewall စည်းမျဉ်းများကို ပြင်ဆင်ပါ။
  • etcd၊ Patroni၊ PostgreSQL ဝန်ဆောင်မှုများအတွက် ပက်ကေ့ခ်ျများ ထည့်သွင်းပါ။
  • etcd အစုအဝေးကို configure;
  • PostgreSQL နှင့်အလုပ်လုပ်ရန် patroni ဝန်ဆောင်မှုကို configure လုပ်ပါ။

ဆိုလိုသည်မှာ၊ စုစုပေါင်း၊ သင်သည် တစ်ဒါဇင် configuration ဖိုင်များကို မှန်မှန်ကန်ကန်ရေးရန် လိုအပ်ပြီး မည်သည့်နေရာတွင်မဆို အမှားမပြုလုပ်မိစေရန် လိုအပ်ပါသည်။ ဤအရာအတွက် သင်သည် Ansible ကဲ့သို့သော configuration management tool ကို သေချာပေါက် အသုံးပြုသင့်သည်။ သို့သော်၊ အလွန်ရရှိနိုင်သော TCP ချိန်ခွင်လျှာမရသေးပါ။ လုပ်တာက သီးခြားအလုပ်ပါ။

အဆင်သင့်လုပ်ထားသော အစုအဝေးကို လိုအပ်သော်လည်း၊ ဤအရာအားလုံးကို မလိုလားသူများအတွက်၊ ကျွန်ုပ်တို့သည် ဘဝကို ရိုးရှင်းအောင်ပြုလုပ်ပြီး ကျွန်ုပ်တို့၏ cloud ရှိ Patroni တွင် အဆင်သင့်လုပ်ထားသော အစုအဝေးတစ်ခုကို ဖန်တီး၍ အခမဲ့ စမ်းသပ်နိုင်ပါသည်။ အစုအဝေးကိုယ်တိုင်အပြင်၊

  • TCP ချိန်ခွင်လျှာ မတူညီသော ဆိပ်ကမ်းများတွင် ၎င်းသည် လက်ရှိမာစတာ၊ synchronous သို့မဟုတ် asynchronous ပုံစံတူကို အမြဲညွှန်ပြသည်;
  • လက်ရှိ Patroni မာစတာကိုပြောင်းရန်အတွက် API။

၎င်းတို့ကို MCS cloud API နှင့် ဝဘ်ကွန်ဆိုးလ်မှတဆင့် ဝင်ရောက်ကြည့်ရှုနိုင်ပါသည်။

Demo

MCS cloud ရှိ PostgreSQL အစုအဝေးတစ်ခု၏ စွမ်းရည်များကို စမ်းသပ်ရန်၊ DBMS နှင့် ပြဿနာများရှိသည့်အခါ တိုက်ရိုက်အပလီကေးရှင်းတစ်ခု မည်သို့ပြုမူသည်ကို ကြည့်ကြပါစို့။

အောက်တွင် အတုအယောင်ဖြစ်ရပ်များကို မှတ်တမ်းတင်ပြီး မျက်နှာပြင်သို့ သတင်းပို့မည့် အပလီကေးရှင်းအတွက် ကုဒ်ဖြစ်သည်။ အမှားအယွင်းများရှိပါက ၎င်းကို Ctrl + C ပေါင်းစပ်မှုဖြင့် ရပ်တန့်သည်အထိ ၎င်းကို အစီရင်ခံပြီး ၎င်းကို ကွင်းဆက်တစ်ခုတွင် ဆက်လက်လုပ်ဆောင်ပါမည်။

from __future__ import print_function

from datetime import datetime
from random import randint
from time import sleep
import psycopg2


def main():
    try:
        connection = psycopg2.connect(user = "admin",
                                      password = "P@ssw0rd",
                                      host = "89.208.87.38",
                                      port = "5432",
                                      database = "myproddb")

        cursor = connection.cursor()
        cursor.execute("SELECT version();")
        record = cursor.fetchone()
        print("Connection opened to", record[0])

        cursor.execute(
            "INSERT INTO log VALUES ({});".format(randint(1, 10000)))
        connection.commit()
        cursor.execute("SELECT COUNT(event_id) from log;")
        record = cursor.fetchone()
        print("Logged a value, overall count: {}".format(record[0]))
    except Exception as error:
        print ("Error while connecting to PostgreSQL", error)
    finally:
        if connection:
            cursor.close()
            connection.close()
            print("Connection closed")


if __name__ == '__main__':
    try:
        while True:
            try:
                print(datetime.now())
                main()
                sleep(3)
            except Exception as e:
                print("Caught error:n", e)
                sleep(1)
    except KeyboardInterrupt:
        print("exit")

အပလီကေးရှင်းသည် အလုပ်လုပ်ရန် PostgreSQL လိုအပ်သည်။ API ကို အသုံးပြု၍ MCS cloud တွင် အစုအဝေးတစ်ခု ဖန်တီးကြပါစို့။ OS_TOKEN variable တွင် API ကိုဝင်ရောက်အသုံးပြုရန်အတွက် တိုကင်တစ်ခုပါရှိသည် (openstack တိုကင်ပြဿနာ command ဖြင့်ရနိုင်သည်) တွင်၊ ကျွန်ုပ်တို့သည် အောက်ပါ command များကို ရိုက်ထည့်လိုက်ပါမည်။

အစုအဖွဲ့တစ်ခု ဖန်တီးပါ-

cat <<EОF > pgc10.json
{"cluster":{"name":"postgres10","allow_remote_access":true,"datastore":{"type":"postgresql","version":"10"},"databases":[{"name":"myproddb"}],"users":[{"databases":[{"name":"myproddb"}],"name":"admin","password":"P@ssw0rd"}],"instances":[{"key_name":"shared","availability_zone":"DP1","flavorRef":"d659fa16-c7fb-42cf-8a5e-9bcbe80a7538","nics":[{"net-id":"b91eafed-12b1-4a46-b000-3984c7e01599"}],"volume":{"size":50,"type":"DP1"}},{"key_name":"shared","availability_zone":"DP1","flavorRef":"d659fa16-c7fb-42cf-8a5e-9bcbe80a7538","nics":[{"net-id":"b91eafed-12b1-4a46-b000-3984c7e01599"}],"volume":{"size":50,"type":"DP1"}},{"key_name":"shared","availability_zone":"DP1","flavorRef":"d659fa16-c7fb-42cf-8a5e-9bcbe80a7538","nics":[{"net-id":"b91eafed-12b1-4a46-b000-3984c7e01599"}],"volume":{"size":50,"type":"DP1"}}]}}
EOF

curl -s -H "X-Auth-Token: $OS_TOKEN" 
-H 'Accept: application/json' 
-H 'Content-Type: application/json' 
-d @pgc10.json https://infra.mail.ru:8779/v1.0/ce2a41bbd1434013b85bdf0ba07c770f/clusters

Patroni တွင် ယုံကြည်စိတ်ချရသော PostgreSQL အစုအဝေးတစ်ခုကို ကျွန်ုပ်တို့ မည်သို့တည်ဆောက်ခဲ့သနည်း။

အစုအဝေးသည် တက်ကြွသောအခြေအနေသို့ ပြောင်းသောအခါ၊ အကွက်အားလုံးသည် လက်ရှိတန်ဖိုးများကို လက်ခံရရှိလိမ့်မည် - အစုအဝေးသည် အဆင်သင့်ဖြစ်နေပါပြီ။

GUI တွင်-

Patroni တွင် ယုံကြည်စိတ်ချရသော PostgreSQL အစုအဝေးတစ်ခုကို ကျွန်ုပ်တို့ မည်သို့တည်ဆောက်ခဲ့သနည်း။

ချိတ်ဆက်ပြီး ဇယားတစ်ခုကို ဖန်တီးကြည့်ရအောင်။

psql -h 89.208.87.38 -U admin -d myproddb
Password for user admin:
psql (11.1, server 10.7)
Type "help" for help.

myproddb=> CREATE TABLE log (event_id integer NOT NULL);
CREATE TABLE
myproddb=> INSERT INTO log VALUES (1),(2),(3);
INSERT 0 3
myproddb=> SELECT * FROM log;
 event_id
----------
        1
        2
        3
(3 rows)

myproddb=>

Patroni တွင် ယုံကြည်စိတ်ချရသော PostgreSQL အစုအဝေးတစ်ခုကို ကျွန်ုပ်တို့ မည်သို့တည်ဆောက်ခဲ့သနည်း။

အပလီကေးရှင်းတွင် PostgreSQL သို့ချိတ်ဆက်ရန်အတွက် လက်ရှိဆက်တင်များကို ကျွန်ုပ်တို့ညွှန်ပြပါမည်။ ကျွန်ုပ်တို့သည် TCP balancer ၏လိပ်စာကို သတ်မှတ်ပေးမည်ဖြစ်ပြီး၊ သို့ဖြင့် မာစတာလိပ်စာသို့ ကိုယ်တိုင်ပြောင်းရန် လိုအပ်မှုကို ဖယ်ရှားပါမည်။ စတင်လိုက်ရအောင်။ သင်တွေ့မြင်ရသည့်အတိုင်း၊ အဖြစ်အပျက်များသည် ဒေတာဘေ့စ်ထဲသို့ အောင်မြင်စွာ ဝင်ရောက်သွားပါပြီ။

Patroni တွင် ယုံကြည်စိတ်ချရသော PostgreSQL အစုအဝေးတစ်ခုကို ကျွန်ုပ်တို့ မည်သို့တည်ဆောက်ခဲ့သနည်း။

စီစဉ်ထားသော မာစတာကူးပြောင်းမှု

ယခု စီစဉ်ထားသည့် မာစတာခလုတ်တစ်ခုအတွင်း ကျွန်ုပ်တို့၏ အပလီကေးရှင်း၏ လုပ်ဆောင်ချက်ကို စမ်းသပ်ကြည့်ကြပါစို့။

Patroni တွင် ယုံကြည်စိတ်ချရသော PostgreSQL အစုအဝေးတစ်ခုကို ကျွန်ုပ်တို့ မည်သို့တည်ဆောက်ခဲ့သနည်း။

ကျွန်ုပ်တို့သည် လျှောက်လွှာကို စောင့်ကြည့်နေပါသည်။ အက်ပလီကေးရှင်းသည် အမှန်တကယ် အနှောင့်အယှက်ဖြစ်နေကြောင်း ကျွန်ုပ်တို့တွေ့မြင်ရသော်လည်း၊ ဤအခြေအနေမျိုးတွင် အများဆုံး 9 စက္ကန့်သာ ကြာပါသည်။

Patroni တွင် ယုံကြည်စိတ်ချရသော PostgreSQL အစုအဝေးတစ်ခုကို ကျွန်ုပ်တို့ မည်သို့တည်ဆောက်ခဲ့သနည်း။

ကားမှောက်မှု

အခု လက်ရှိ မာစတာဖြစ်တဲ့ virtual machine ရဲ့ ပျက်ကျမှုကို ပုံဖော်ကြည့်ရအောင်။ Horizon interface မှတဆင့် virtual machine ကိုသင်ရိုးရှင်းစွာပိတ်နိုင်သော်လည်း၎င်းသည်ပုံမှန်ပိတ်ခြင်းဖြစ်လိမ့်မည်။ Patroni အပါအဝင် ဝန်ဆောင်မှုအားလုံးမှ ထိုသို့သောခလုတ်ကို လုပ်ဆောင်ပါမည်။

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

Patroni တွင် ယုံကြည်စိတ်ချရသော PostgreSQL အစုအဝေးတစ်ခုကို ကျွန်ုပ်တို့ မည်သို့တည်ဆောက်ခဲ့သနည်း။

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

2019-03-29 10:45:56.071234
Connection opened to PostgreSQL 10.7 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36), 64-bit
Logged a value, overall count: 453
Connection closed
2019-03-29 10:45:59.205463
Connection opened to PostgreSQL 10.7 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36), 64-bit
Logged a value, overall count: 454

Connection closed
2019-03-29 10:46:02.661440
Error while connecting to PostgreSQL server closed the connection unexpectedly
        This probably means the server terminated abnormally
        before or while processing the request.

Caught error:
 local variable 'connection' referenced before assignment
……………………………………………………….. - здесь какое-то количество ошибок
2019-03-29 10:46:30.930445
Error while connecting to PostgreSQL server closed the connection unexpectedly
        This probably means the server terminated abnormally
        before or while processing the request.

Caught error:
 local variable 'connection' referenced before assignment
2019-03-29 10:46:31.954399
Connection opened to PostgreSQL 10.7 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36), 64-bit
Logged a value, overall count: 455
Connection closed
2019-03-29 10:46:35.409800
Connection opened to PostgreSQL 10.7 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36), 64-bit
Logged a value, overall count: 456
Connection closed
^Cexit

သင်မြင်သည့်အတိုင်း၊ အပလီကေးရှင်းသည် စက္ကန့် 30 ထက်နည်းသောအလုပ်ဆက်လုပ်နိုင်သည်။ ဟုတ်ကဲ့၊ ဝန်ဆောင်မှုအသုံးပြုသူအချို့သည် ပြဿနာများကို သတိပြုမိရန် အချိန်ရပါလိမ့်မည်။ သို့သော်၊ ၎င်းသည် ပြင်းထန်သော ဆာဗာချို့ယွင်းမှုဖြစ်ပြီး၊ ၎င်းသည် မကြာခဏ ဖြစ်ပွားလေ့မရှိပါ။ ဤကိစ္စတွင်၊ လူတစ်ဦး (စီမံခန့်ခွဲသူ) သည် ခလုတ်ပြောင်းသည့် ဇာတ်ညွှန်းဖြင့် အဆင်သင့်ရှိ ကွန်ဆိုးလ်တွင် ထိုင်မနေပါက အမြန်တုံ့ပြန်ရန် အချိန်မရှိပေ။

ကောက်ချက်

ထိုသို့သောအစုအဖွဲ့သည် စီမံခန့်ခွဲသူများအတွက် ကြီးမားသော အကျိုးကျေးဇူးကို ပေးစွမ်းသည်ဟု ကျွန်ုပ်ထင်သည်။ တကယ်တော့၊ ဒေတာဘေ့စ်ဆာဗာများ၏ ပြင်းထန်သော ပြိုကွဲမှုများနှင့် ပျက်ကွက်မှုများသည် အပလီကေးရှင်းအတွက် သိသာထင်ရှားလိမ့်မည်မဟုတ်သလို၊ အသုံးပြုသူအတွက်လည်း သိသာမည်မဟုတ်ပေ။ သင်သည် မည်သည့်အရာကိုမျှ အလျင်စလိုပြင်ရန် မလိုအပ်ဘဲ ယာယီဖွဲ့စည်းပုံများ၊ ဆာဗာများ စသည်တို့သို့ ပြောင်းရန် မလိုအပ်ပါ။ အကယ်၍ ထိုဖြေရှင်းချက်ကို cloud တွင် အဆင်သင့်လုပ်ထားသော ဝန်ဆောင်မှုအဖြစ် အသုံးပြုပါက၊ ၎င်းကို ပြင်ဆင်ရာတွင် အချိန်ဖြုန်းနေစရာ မလိုပါ။ ပိုစိတ်ဝင်စားစရာကောင်းတဲ့ အရာတစ်ခုကို လုပ်လာနိုင်ပါလိမ့်မယ်။

source: www.habr.com

DDoS ကာကွယ်ရေး၊ VPS VDS ဆာဗာများပါသည့် ဆိုက်များအတွက် ယုံကြည်စိတ်ချရသော hosting ကို ဝယ်ယူပါ။ 🔥 DDoS ကာကွယ်မှု၊ VPS VDS ဆာဗာများပါရှိသော ယုံကြည်စိတ်ချရသော ဝဘ်ဆိုက် hosting ကို ဝယ်ယူပါ | ProHoster