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