راه اندازی سرویس Redundant

از ویکی پارس پویش
(تفاوت بین نسخه‌ها)
پرش به: ناوبری, جستجو
 
(۳ ویرایش میانی توسط یک کاربر نشان داده نشده‌است)
سطر ۱: سطر ۱:
 
راه اندازی سرویس Redundant
 
راه اندازی سرویس Redundant
  
 
+
Install and Configure DRBD
نصب و تنظيم سرويس DRBD
+
  
 
حداقل به دو سرور برای راه اندازی نياز است: B Server and A Server
 
حداقل به دو سرور برای راه اندازی نياز است: B Server and A Server
سطر ۴۸: سطر ۴۷:
 
تعداد Size Block در پارتيشنی که قرار است به DRBD اختصاص دهيم بايد در هر دو سرور يکی باشد.
 
تعداد Size Block در پارتيشنی که قرار است به DRBD اختصاص دهيم بايد در هر دو سرور يکی باشد.
 
بر روی هر دو سرور:
 
بر روی هر دو سرور:
# ap­get install drbd8­utils
+
<div dir=ltr lang=en>
# cd /etc/drbd.d/
+
# ap­get install drbd8­utils
# 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 IBSng­A {
+
# nano r0.res
device /dev/drbd1;
+
on IBSng­A {
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
meta­disk internal;
+
address 192.168.98.1:7789; ­­> IP eth server A ke back to back be B vasle
}
+
meta­disk internal;
on IBSng­B {
+
}
device /dev/drbd1;
+
on IBSng­B {
disk /dev/sda3;
+
device /dev/drbd1;
address 192.168.98.2:7789;
+
disk /dev/sda3;
meta­disk internal;
+
address 192.168.98.2:7789;
}
+
meta­disk 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>
 
اگر در اين لحظه دستور overview­drbd را بزنيم Unconfigured را نمايش ميدهد.
 
اگر در اين لحظه دستور overview­drbd را بزنيم Unconfigured را نمايش ميدهد.
 
بر روی هر دو سرور دستورات زير را وارد ميکنيم بجز آخری که بايد فقط روی سرور Primary زده شود:
 
بر روی هر دو سرور دستورات زير را وارد ميکنيم بجز آخری که بايد فقط روی سرور Primary زده شود:
# drbdadm create­md r0
+
<div dir=ltr lang=en>
# drbdadm attach r0
+
# drbdadm create­md r0
# drbdadm syncer r0
+
# drbdadm attach r0
# drbdadm connect r0
+
# drbdadm syncer r0
***only in server that want to Primary:
+
# drbdadm connect r0
# drbdadm ­­ ­­overwrite­data­of­peer primary r0
+
***only in server that want to Primary:
 +
# drbdadm ­­ ­­overwrite­data­of­peer primary r0
 +
</div>
 
اگر در اين لحظه دستور overview­drbd را بزنيم سروری که دستور فوق را هم زده باشيم بصورت Primary و سرور ديگر
 
اگر در اين لحظه دستور overview­drbd را بزنيم سروری که دستور فوق را هم زده باشيم بصورت 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:
# apt­get install xfsprogs
+
<div dir=ltr lang=en>
 +
# apt­get 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:
# ibsng­tools
+
<div dir=ltr lang=en>
Services → Redundancy → DRBD → Configuration:
+
# ibsng­tools
 
+
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.
# ibsng­tools
+
<div dir=ltr lang=en>
Services → Redundancy → DRBD → Health Checker (DRBD) status ­­> Enable
+
# ibsng­tools
# /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
# drdb­overview
+
# go_slave → in Secondary Server
 +
# drdb­overview
 +
</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 (IBSng­A) (eth0 ­ 192.168.98.1) <­­­> (eth0 ­ 192.168.98.2) Server B (IBSng­B)
Server A (eth1 ­ 192.168.10.4) <­­­> RAS <­­­> Server B (eth1 ­ 192.168.10.2)

اسکريپ هايی که در سرويس IBSng برای اين منظور آماده شده اند، نصب به اسم سرور ها کار ميکنند لذا تنظيمات زير ضروريست:

Name For Server A → IBSng­A
Name For Server B → IBSng­B
add IBSng­A in Sever A and add IBSng­B 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)
ssh­keygen (default select in all question)
in IBSng­A ­­> cat id_rsa.pub and copy content to authorized_keys in IBSng­B
in IBSng­B ­­> cat id_rsa.pub and copy content to authorized_keys in IBSng­A
in the two server ssh to another till accept ssh key once
# nano /etc/hosts in IBSng­A , add:
192.168.98.2 (ip address of ibsng­B) IBSng­B
# nano /etc/hosts in IBSng­B , add:
192.168.98.1 (ip address of ibsng­A) IBSng­A
(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 اختصاص دهيم بايد در هر دو سرور يکی باشد. بر روی هر دو سرور:

# ap­get install drbd8­utils
# 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 IBSng­A {
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
meta­disk internal;
}
on IBSng­B {
device /dev/drbd1;
disk /dev/sda3;
address 192.168.98.2:7789;
meta­disk internal;
}
Ctrl + X ­­ Save file

بر روی هر دو سرور:

/etc/init.d/drbd restart

اگر در اين لحظه دستور overview­drbd را بزنيم Unconfigured را نمايش ميدهد. بر روی هر دو سرور دستورات زير را وارد ميکنيم بجز آخری که بايد فقط روی سرور Primary زده شود:

# drbdadm create­md r0
# drbdadm attach r0
# drbdadm syncer r0
# drbdadm connect r0
***only in server that want to Primary:
# drbdadm ­­ ­­overwrite­data­of­peer primary r0

اگر در اين لحظه دستور overview­drbd را بزنيم سروری که دستور فوق را هم زده باشيم بصورت Primary و سرور ديگر را Secondary نمايش ميدهد. در حال حاضر فقط /drbd1/dev در دو سرور داريم و تغييرات فقط روی سرور Primary قابل انجام است. فرمت کردن پارتيشن drbd1 در سرور Primary:

# mkfs.xfs /dev/drbd1

در صورت نصب نبودن xfs.mkfs:

# apt­get install xfsprogs

سپس پارتيشن drbd1 را mount ميکنيم:

# mount /dev/drbd1 /var/lib/postgresql

در حال حاضر هر فايلی درون اين پارتيشن بريزيم در سرور Secondary نيز ريخته ميشود. تنظيمات در سرويس IBSng:

# ibsng­tools
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=
  1. 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.

# ibsng­tools
Services → Redundancy → DRBD → Health Checker (DRBD) status ­­> Enable
# /etc/init.d/health_checker restart

بر روی سرور ها دستور زير را وارد ميکنيم:

# go_master → in Primary Server
# go_slave → in Secondary Server
# drdb­overview

Trubleshooting DRBD

برای بررسی مشکلات DRBD در ابتدای دو فایل زیر را بررسی میکنیم :

/var/log/IBSng/ibs_redundancy.log
/var/log/IBSng/ibs_check_drbd.log
ابزارهای شخصی

گویش‌ها
فضاهای نام
عملکردها
گشتن
جعبه‌ابزار