راه اندازی سرویس Redundant
راه اندازی سرویس Redundant
نصب و تنظيم سرويس DRBD
حداقل به دو سرور برای راه اندازی نياز است: B Server and A Server
for Example:
Server A (IBSngA) (eth0 192.168.98.1) <> (eth0 192.168.98.2) Server B (IBSngB) Server A (eth1 192.168.10.4) <> RAS <> Server B (eth1 192.168.10.2)
اسکريپ هايی که در سرويس IBSng برای اين منظور آماده شده اند، نصب به اسم سرور ها کار ميکنند لذا تنظيمات زير ضروريست:
Name For Server A → IBSngA Name For Server B → IBSngB
add IBSngA in Sever A and add IBSngB in Server B > # nano /etc/hostname # /etc/init.d/hostnome.sh start
هر سرور حداقل دو عدد کارت شبکه نياز دارد:
۱ اتصال سرور ها بصورت Back to Back برای ارتباط سرويس DRBD
۲ اتصال هر دو سرور به RAS مشترک
برقراری ارتباط دو سرور بدون نياز به وارد کردن پسورد (SRV two Trust:(
# cd /root/.ssh (if not Exist, Create it) sshkeygen (default select in all question) in IBSngA > cat id_rsa.pub and copy content to authorized_keys in IBSngB in IBSngB > cat id_rsa.pub and copy content to authorized_keys in IBSngA in the two server ssh to another till accept ssh key once # nano /etc/hosts in IBSngA , add: 192.168.98.2 (ip address of ibsngB) IBSngB # nano /etc/hosts in IBSngB , add: 192.168.98.1 (ip address of ibsngA) IBSngA (in my Example: eth0 Ip address in Server A: 192.168.98.1 and eth0 Ip address in Server B: 192.168.98.2)
تعداد Size Block در پارتيشنی که قرار است به DRBD اختصاص دهيم بايد در هر دو سرور يکی باشد. بر روی هر دو سرور:
# apget install drbd8utils # cd /etc/drbd.d/ # mv global_common.conf /home/global_common.conf.origin # cp /usr/local/src/tools/file/replicate/drbd/* .
به ازای هر زوج بايد يک sr داشته باشيم و هر زوج فقط بروی يک فايل سيستم در هر طرف کار ميکند (به ازای هر جفت پارتيشن که قرار است باهم Sync شوند بايد يک فايل sr داشته باشيم) بر روی هر دو سرور:
# nano r0.res on IBSngA { device /dev/drbd1; disk /dev/sda3; > on partitioni ke gharare pare beshe address 192.168.98.1:7789; > IP eth server A ke back to back be B vasle metadisk internal; } on IBSngB { device /dev/drbd1; disk /dev/sda3; address 192.168.98.2:7789; metadisk internal; } Ctrl + X Save file
بر روی هر دو سرور:
/etc/init.d/drbd restart
اگر در اين لحظه دستور overviewdrbd را بزنيم Unconfigured را نمايش ميدهد. بر روی هر دو سرور دستورات زير را وارد ميکنيم بجز آخری که بايد فقط روی سرور Primary زده شود:
# drbdadm createmd r0 # drbdadm attach r0 # drbdadm syncer r0 # drbdadm connect r0 ***only in server that want to Primary: # drbdadm overwritedataofpeer primary r0
اگر در اين لحظه دستور overviewdrbd را بزنيم سروری که دستور فوق را هم زده باشيم بصورت Primary و سرور ديگر را Secondary نمايش ميدهد. در حال حاضر فقط /drbd1/dev در دو سرور داريم و تغييرات فقط روی سرور Primary قابل انجام است. فرمت کردن پارتيشن drbd1 در سرور Primary:
# mkfs.xfs /dev/drbd1
در صورت نصب نبودن xfs.mkfs:
# aptget install xfsprogs
سپس پارتيشن drbd1 را mount ميکنيم:
# mount /dev/drbd1 /var/lib/postgresql
در حال حاضر هر فايلی درون اين پارتيشن بريزيم در سرور Secondary نيز ريخته ميشود. تنظيمات در سرويس IBSng:
# ibsngtools Services → Redundancy → DRBD → Configuration: # Network configuration #
[Network] ip های اين قسمت برای ارتباط با شبکه و RAS مشترک ميباشد. در مثال ما eth1 در هر دو سرور:
IBSng_A=192.168.10.4 IBSng_B=192.168.10.2
ip اين قسمت برای حالتی که هر دو سرور ما از بيرون بک سرور و با اين ip شناخته شود:
float_ip=192.168.10.3
کارت شبکه مجازی که از طريق اين به درخواست های کاربران و روتر ها جواب ميدهد:
float_interface=eth1:HA #float_ip2=192.168.2.3 #float_interface2=eth1:HA
ip که هر دو سرور برای تست ارتباط خودشان بايد ببينند و صورت عدم ارتباط ممکن است از Primary يه Secondary برود:
ras_ip=192.168.1.1
ممکن است ارتباط بين پارتيشن های drbd در سرورها قطع شود. در اين موقع به اندازه ی ۹۰۰ ثانيه يا ۱۵ دقيقه صبر ميکند، اگر ارتباط بزقرار شد اطلاعات سينک ميشود در غير اين صورت ديگر اطلاعات سينک نخواهد شد حتی اگر بعد از اين زمان ارتباط برقرار شود:
sync_time_failed=900 # Status Services # # options:( yes or Blank ) # # Default: #
سرويس هايی که بايد بعد از استارت شدن drbd مجدد استارت شوند را با yes مقدار ميدهيم. لازم بذکر است برای مخابرات ها فقط دو تای اولی نياز است:
[Services] postgres_enable= yes IBSng_enable= urldump_enable=yes dispacher_enable= general_enable=yes restartd=
- Run Static Command #
دستورات که نسبت شبکه های مختلف ممکن است متفاوت باشد را در اين قسمت وارد ميکنيم:
[commands] #cprofile1=('touch /tmp/testfile') cprofile1=('ip route add 192.168.0.0/24 (renge shabake biron) dev eth0 (vasl be net biron) proto kernel scope link src 192.168.98.1 (ip float)') cprofile2=('ip route add 172.16.1.1 (renge shabake biron) dev eth0 (vasl be net biron) via src 192.168.98.1 (ip float)')
Ctrl + X and Save config.
- ibsngtools
Services → Redundancy → DRBD → Health Checker (DRBD) status > Enable
- /etc/init.d/health_checker restart
بر روی سرور ها دستور زير را وارد ميکنيم:
- go_master → in Primary Server
- go_slave → in Secondary Server
- drdboverview