Keepalived မိတ်ဆက် – အပိုင်း (၁)
နည်းပညာနဲ့ ပတ်သတ်လာရင် Linux မှာလုပ်လို့ မရနိုင်တာ မရှိသလောက်ပါပဲ။ အခြားသော operating system တွေနဲ့ ကွာခြားချက်ကတော့ ကိုယ့်အိမ်မှာ စမ်းသပ်ချင်လို့လုပ်တဲ့ setup မှာရနိုင်တာနဲ့ production မှာစနစ်တကျ တည်ဆောက်ပြီးမှာရလာတဲ့ setupအတွက် ရနိုင်တာအများကြီး မကွာခြားပါဘူး။ Windows လို operating system မှာ trial တွေရနိုင်သော်လည်း ရေရှည်စမ်းသပ်အသုံးပြုဖို့အတွက်ကြတော့ ဘာမှများများစားစားမရှိသလိုမျိုးခံစားရပါတယ်။ တဘက်မှာလည်း BSD တို့လို alternative operating system တွေရှိသော်လည်း Linux မှာလောက်ပြီးပြည့်စုံတယ်လို့ မခံစားရပြန်ပါဘူး။ Tool တွေစုံစုံလင်လင်နဲ့ ပြီးပြည်စုံတဲ့ platform တစ်ခုလိုမျိုး စာရေးသူ အမြဲခံစားရပါတယ်။ အဲ့ဒါကြောင့်လည်း အရှေ့မှာထပ်ခါထပ်ခါ ပြောခဲ့သလိုမျိုးပဲ Linux operating system ကို မြတ်မြတ်နိုးနိုး စတင်လေ့လာလိုက်ကတည်းက နည်းပညာအတွက် သင်ကြားမှုမှာ ပိုမိုသင်ယူရလွယ်ကူလာပြီး တိုးတက်နှုန်းလည်း ပိုမြန်လာနိုင်တာတော့ စာရေးသူ တယောက်တည်းရဲ့ အတွေ့အကြုံ တစ်ခုတည်း ဖြစ်မယ်မထင်ပါဘူး။ ဒီ့အတွက် Linux လိုမျိုး ပြီးပြည့်စုံတဲ့ operating system တစ်ခုလည်းဖြစ်၊ open-source မှာလည်း လမ်းပြရှေ့ဆောင်လည်း ဖြစ်တဲ့အတွက် လေ့လာဖြစ်အောင်လေ့လာဖို့ကို တိုက်တွန်းလိုပါတယ်။
ဒီ post မှာတော့ Cisco routing နဲ့ switching မှာလုပ်လို့ရတဲ့ feature တစ်ခုဖြစ်တဲ့ Virtual Router Redundancy Protocol (VRRP) ကို routing and switching gear မပါပဲနဲ့ Linux ပေါ်မှာ setup လုပ်တဲ့ပုံစံကို မိတ်ဆက်ပေးလိုပါတယ်။ ပုံမှန်အားဖြင့် High Availability (HA) system တစ်ခုကိုတည်ဆောက်တော့မယ်ဆိုရင် VRRP ကို router တွေ switch တွေပေါ်မှာ configure လုပ်ကြပါတယ်။ အရှင်းဆုံးပြောရရင် VRRP ဟာ router နှစ်ခုကြားမှာ Virtual IP (VIP) ကိုအသုံးပြုပြီးတော့၊ router နှစ်ခုမှာ တစ်ခုလုံးဝ down သွားရင်တောင် ဆက်ပြီးတော့ routing နဲ့ switching မှာအလုပ်လုပ် အောင်သုံးတဲ့ redundancy protocol တစ်ခုပါ။ Cisco CLI မှာလည်း configure လုပ်ရတာ အရမ်းကြီးခက်ခဲတဲ့ အရာတော့မဟုတ်ပါဘူး။ IT networking နဲ့ ပတ်သတ်တဲ့ job interview တွေမှာဆို VRRP topic ဟာ မမေးမဖြစ် မေးခွန်းတစ်ခုပါ။ HA system တစ်ခုအတွက်အသုံးများတဲ့ topic တစ်ခုဖြစ်တဲ့အတွက် မသိမဖြစ်သိထားရမည့် အရာလည်းဖြစ်ပါတယ်။ အောက်မှာပြထားတဲ့ အတိုင်း ကိုယ့် network မှာအခုလိုမျိုး VRRP ကိုအသုံးပြုပြီးတော့ HA setup လုပ်နိုင်ပါတယ်။ သတိပြုရမှာက ပုံမှာကိုယ့်ရဲ့ server တွေကို Gateway မှာ router တစ်ခုချင်းစီရဲ့ IP ကို configure မလုပ်ပဲနဲ့ Virtual IP (VIP) ကိုအသုံးပြုရမှာဖြစ်ပါတယ်။

ဒါဆိုရင် VRRP ကို router တွေမှာဘယ်လိုမျိုး အသုံးပြုနိုင်သလဲဆိုတာမျက်လုံးထဲမှာမြင်မယ်ထင်ပါတယ်။ ဟုတ်ပြီ… ဒါဆိုစာရေးသူတို့ VRRP လိုမျိုး keepalived ကို Ubuntu Linux 20.04 LTS VMs နှစ်ခုပေါ်မှာ Apache web server ကိုအသုံးပြုပြီးတော့ Lab တစ်ခုတည်ဆောက်ကြည့်ရအောင်။ ပထမဆုံးအနေနဲ့ လိုအပ်တဲ့ Ubuntu 20.04 LTS VMs နှစ်ခုကို အရင် install လုပ်ပြီးတော့ ပြင်ဆင်ရပါ့မယ်၊ ပြီးရင်တော့ လိုအပ်တဲ့ Apache နဲ့ Keepalived ကိုအောက်မှာပြထားတဲ့ အတိုင်း VM နှစ်ခုလုံးပေါ်မှာ apt နဲ့ လုပ်ပြီး service နှစ်ခုလုံးကို enable လုပ်မယ်၊ start လုပ်လိုက်ပါ့မယ်။ စာရေးသူ ပထမ VM ကို web1 လို့ ခေါ်ပြီး၊ ဒုတိယ တစ်ခုကိုတော့ web2 ဆိုပြီးတော့ နာမည်ပေးထားပါ့မယ်။
အဲ့ဒါပြီးရင် install လုပ်ထားတဲ့ Apache နဲ့ Keepalived ကိုခပ်သွက်သွက်လေး အောက်ကအတိုင်း configure လုပ်လိုက်ရအောင်။ ပထမဆုံး web1 မှာ အခုလိုမျိုး configure လုပ်ရပါ့မယ်။ တခုသတိထားရမှာက keepalived.conf ကို အသစ် create လုပ်ရမှာဖြစ်ပါတယ်။ Keepalived ကို install လုပ်ပြီးရင်တောင် အဲ့ဒီ configuration file က /etc/keepalived/ မှာရှိမနေပါဘူး။
ပြီးရင် web2 ပေါ်မှာအောက်ကအတိုင်း ဆက်ပြီးတော့ configure လုပ်ပါ။
ဒီမှာ စာရေးသူတို့ ဘာတွေ configure လုပ်ထားသလဲဆိုတာ နည်းနည်းရှင်းပြဖို့လိုပါတယ်။ Apache web ပေါ်မှာတော့ လွယ်ပါတယ်၊ /var/www/html/index.html အတွက်တော့ web1 မှာဆိုရင် web1 မှန်းသိအောင် echo နဲ့ insert လုပ်သွားတာပါ။ Keepalived အတွက် configuration မှာတော့ နည်းနည်းထပ်ရှင်းဖို့လိုပါလိမ့်မယ်။
ဒီတပိုင်းမှာ unicast_src_ip နဲ့ unicast_peer နှစ်ခုမထည့်လည်း ရပါတယ်။ သို့သော် security အတွက် broadcast အစား unicast ကို အသုံးပြုချင်လို့ ဖြစ်ပါတယ်။ နောက်တပိုင်းမှာတော့ authentication နဲ့ virtual_ipaddress ကို သတ်မှတ်ပေးတာပါ။

web1 မှာ sudo systemctl status keepalived ဆိုပြီးတော့ service status ကြည့်လိုက်ရင် အောင်ကအတိုင်းတွေ့ရမှာပါ။
web2 မှာကြည့်ရင်တော့ အခုလိုမျိုးတွေ့ရမှာပါ။
ကိုယ်ကစမ်းချင်တယ်ဆိုရင်တော့ web browser ပဲဖြစ်ဖြစ်၊ terminalထဲမှာပဲဖြစ်ဖြစ် အောက်ကအတိုင်းရိုက်ထည့်ပြီးတော့ ကြည့်လို့ရပါတယ်။
web1 VM ကို shutdown လုပ်လိုက်မယ်ဆိုရင်တော့ အောက်ကအတိုင်း ပြောင်းသွားပါလိမ့်မယ်။ web2 ကို failover လုပ်သွားတာဖြစ်ပါတယ်။ ပြီးရင် web1 ကို boot ပြန်တက်လိုက်ပါ။
ရှင်းရှင်းလင်းလင်းတွေ့ချင်ရင်တော့ sudo systemctl status keepalived ကိုကြည့်လိုက်ရင် အခုလိုတွေ့ရမှာပါ။
web1 နဲ့ web2 Ubuntu 20.04 LTS server နှစ်လုံးကို အကုန်လုံး install လုပ်တာနဲ့ configure လုပ်တာ အချိန်ပေးရပါလိမ့်မယ်။ ဒီ့အတွက် စာရေးသူ Vagrant ကိုအသုံးပြုပြီးတော့ server နှစ်ခုကိုအောက်ကအတိုင်း stand up လုပ်ထားပါတယ်။
Vagrant ကို run ဖို့အတွက် လိုအပ်တဲ့ file တွေအားလုံးကို GitHub ပေါ်မှာတင်ပေးထားပါတယ်။
https://github.com/tylalin/ITmatic101/tree/master/infra_as_code/vagrant_files/keepalived_2nodes
ပထမတစ်ခေါက် vagrant up ကို run တဲ့အခါမှာတော့ bento ကနေပြီး Ubuntu 20.04 LTS image ကို download ဆွဲတဲ့အတွက် အနည်းငယ် ကြာပါလိမ့်မယ်။ Download ဆွဲပြီးသွားရင်တော့ နောက်အခေါက်တွေ run တဲ့အခါ ပထမတခေါက်လောက်မကြာတော့ပါဘူး။ Vagrant ကို setup လုပ်ပုံနဲ့ အသုံးပြုပုံကို အောက်က Link မှာသွားရောက်ဖတ်ရှုလို့ ရပါတယ်။
ဒီအပိုင်းမှာတော့ ဒီလောက်နဲ့ပဲရပ်လိုက်ပါ့မယ်။ ဒုတိယပိုင်းမှာ keepalived ကိုနောက်ပုံစံတမျိုးနဲ့ အသုံးပြုပြပြီး setup လုပ်တဲ့အခါမှာ Ubuntu 20.04 LTS VM လေးခု လိုအပ်ပါလိမ့်မယ်။
Last updated
Was this helpful?
