name2
March 23rd, 2013, 14:17
سلام
و اما آموزش: High Availability نصب و کانفیگ CoroSync و Pacemaker سرور مجازی لینوکس CentOS (http://compiler.ir/%d8%b3%d8%b1%d9%88%d8%b1-%d9%85%d8%ac%d8%a7%d8%b2%db%8c-high-availability-%d9%86%d8%b5%d8%a8-%d9%88-%da%a9%d8%a7%d9%86%d9%81%db%8c%da%af-corosync-%d9%88-pacemaker-%d9%84%db%8c%d9%86%d9%88%da%a9%d8%b3/)
مفهوم High Availability در دنیای اینترنت و وب هاستینگ و شبکه ، بسیار گسترده و وسیع است و شامل مباحث فراوانی است . در این قسمت قصد داریم تا سیستم High Availability را به صورت خیلی ساده و با نصب و کانفیگ برنامه های CoroSync و Pacemaker بر روی سیستم عامل لینوکس CentOS 5.8 نسخه فاینال پیاده سازی کنیم . در انتهای این مقاله ، قادر خواهید بود تا ۲ سرور مجازی مختلف را Sync کرده و در صورت متوقف شدن سرویس دهی هر یک از ۲ سرور یا node ، پینگ آی پی شما نخوابد و سرویس دهی وب سرور آپاچی ادامه داشته باشد .
در گذشته برای کلاسترینگ و پیاده سازی High Availability در سرور های لینوکسی از نرم افزار قدیمی Hearbeat استفاده میشد . امروزه برنامه Pacemaker جای هارت بیت را گرفته است و مشهور ترین نرم افزار کلاسترینگ به حساب می آید .
http://compiler.ir/wp-content/uploads/2012/11/a_w_technologia_3-300x212.jpg
(http://compiler.ir/wp-content/uploads/2012/11/a_w_technologia_3.jpg)
(http://compiler.ir/wp-content/uploads/2012/11/a_w_technologia_3.jpg) اجرای High Availability و کلاسترینگ در سرور مجازی لینوکس
ابتدا selinux و iptables را در سیستم عاملی لینوکس کلیه سرور ها غیر فعال کنید
به روز رسانی پکیج های مورد نیاز لینوکس :
yum install yum-utils
yum provides */libperl.so
yum install perl
yum provides */libesmtp.so.5
نصب پیش نیاز های پیس میکر و کورو سینک :
su -
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/$(uname -i)/epel-release-5-4.noarch.rpm
wget -O /etc/yum.repos.d/pacemaker.repo http://clusterlabs.org/rpm/epel-5/clusterlabs.repo
حالا با اجرای فرمان زیر برنامه های CoroSync و Pacemaker را بر روی لینوکس CentOS نود اول که در اینجا سرور مجازی (http://compiler.ir/%D8%B3%D8%B1%D9%88%D8%B1-%D9%85%D8%AC%D8%A7%D8%B2%DB%8C/) A هست نصب میکنیم :
yum install -y pacemaker.$(uname -i) corosync.$(uname -i)
http://compiler.ir/wp-content/uploads/2012/11/tumblr_lbro32bsb31qzagr8-300x150.png
(http://compiler.ir/wp-content/uploads/2012/11/tumblr_lbro32bsb31qzagr8.png)
(http://compiler.ir/wp-content/uploads/2012/11/tumblr_lbro32bsb31qzagr8.png) نصب برنامه Pacemaker بر روی سرور مجازی لینوکس
کانفیگ کردن CoroSync :
ابتدا برای ایجاد یک تاییدیه و تصدیق یا authentication باید یک فایل با نام و مسیر /etc/corosync/authkey در تمام node های کلاستر یا خوشه و از طریق ssh ایجاد نماییم . در صورتی که در انجام این مراحل و اجرای کورو سینک ، با پیغام خطای Invalid digest مواجه شوید ، بدان معناست که که authentication یا هنوز بین node ها تایید نشده است ، و یا مشکلی در مرحله authentication به وجود آمده است .
# Generate Key
corosync-keygen
# Define receiving server and copy to it.
node=172.25.3.26
cat /etc/corosync/authkey | ssh root@$node “cat >> /etc/corosync/authkey; chmod 0400 /etc/corosync/authkey; chown hacluster:haclient /etc/corosync/authkey”
در مرحله بعدی باید فایل corosync.conf.example واقع در مسیر /etc/corosync/ را به corosync.conf تغییر نام داده و سپس آن را ویرایش کنیم . در اینجا من یک کپی جدید از این فایل را در همان مسیر ایجاد میکنم تا در صورت بروز اشتباه ، فایل اصلی از بین نرود . سپس با کمک فرمان vi فایل فوق را باز میکنیم و تغییرات زیر را در آن اعمال می نماییم :
cp /etc/corosync/corosync.conf.example /etc/corosync/corosync.conf
vi /etc/corosync/corosync.conf
با اضافه کردن این دستورات به فایل مذکور ، CoroSync را وادار به اجرا با یوزر root میکنیم . تنها در این صورت است که CoroSyn قابلیت تعامل با Pacemaker را به دست خواهد آورد :
ai***ec {
# Run as root – this is necessary to be able to manage resources with Pacemaker
user: root
group: root
}
مقادیر زیر را بری شروع کار Pacemaker وارد میکنیم :
cat <<-END >>/etc/corosync/corosync.conf
service {
# Load the Pacemaker Cluster Resource Manager
name: pacemaker
ver: 0
}
END
با اجرای دستوارت زیر و با کمک ssh و root ، تنظیمات اعمال شده در فایل corosync.conf را در تمام node های موجود در کلاستر و خوشه کپی می کنیم :
# Define receiving server and copy to it
node=172.25.3.26
scp /etc/corosync/corosync.conf root@$node:/etc/corosync/corosync.conf
توجه داشته باشید که پکیج rpm ای که کوروسینک و پیس میکر را با آن نصب کردیم ، فولدر لاگ log را نساخته است در حالی که وجود این فلدر ضروری است . بنا بر این به صورت دستی و با اجرای دستورات زیر اقدام به ساخت این فولدر در node های کلاستر می نماییم :
ابتدا در node اول و با دستور زیر فولدر لاگ را ایجاد میکنیم :
mkdir /var/log/cluster/
سپس به صورت ریموت ، و از طریق ssh این فولدر را روی بقیه نود های کلاستر میسازیم :
node=172.25.3.26
ssh root@$node “mkdir /var/log/cluster/”
با اجرای فرمان زیر ، سرویس CoroSync را استارت میکنیم :
service corosync start
با یکی از فرمان های زیر ، وضعیت CoroSync در سرور را چک میکنیم . در صورتی که کورو سینک به درستی اجرا نشده باشد ، با اجرای دستورات زیر با پیغام خطا و همچنین توضیحاتی در رابطه با علت بروز مشکل مواجه میشویم :
crm_mon
# Or for a single chunk of info
crm status
برای آشنایی با سایر command ها و دستورات CoroSync میتوانید از فرمان زیر استفاده کنید :
crm –help
در صورتی که کورو سینک در node اول کلاستر بدون مشکل و ارور خاصی اجرا شد ، میتوانید در node های بعدی نیز به صورت remote و از طریق ssh سرویس کورو سینک را اجرا نمایید :
node=172.25.3.26
ssh root@$node — service corosync start
قبل از ادامه کار ، با اجرای دستور زیر چک کنید آیا همه چیز به درستی کار میکند یا خیر :
crm_verify -L
همانطور که ملاحظه میکنید با پیغام خطا مواجه میشوید.دلیل بروز این پیام خطا ، استفاده کردن Pacemaker از سرویس STONITH است . برای حل مشکل دستورات زیر را در تمام نود ها اجرا کنید :
crm configure property stonith-enabled=false
crm_verify -L
http://compiler.ir/wp-content/uploads/2012/11/clustering-BalancerArch-300x223.png
(http://compiler.ir/wp-content/uploads/2012/11/clustering-BalancerArch.png)
(http://compiler.ir/wp-content/uploads/2012/11/clustering-BalancerArch.png) کلاسترینگ Clustering
اختصاص دادن یک IP به خوشه و کلاستر :
یکی از مهم ترین قسمت های کار ، اختصاص دادن یک IP به کلاستر ایجاد شده است . این کار به ما توانایی ارتباط بر قرار کردن با کلاستر را فارغ از اینکه کدام یک از node ها با کدام آدرس های IP در حال سرویس دهی و یا down هستند را میدهد . بنا بر این آدرس IP خوشه ، یک آدرس جدید است که در هیچ یک از نود ها نباید استفاده شده باشد .
نکته : من یک بار اینجا ip رو اشتباه وارد کردم و بعد از اون هر کاری که کردم نتونستم عوضش کنم…هنگام ست کردم مجدد ip با پیغام خطایی مبنی بر اینکه قبلا این عملیات انجام شده مواجه میشدم ، در نهایت همه چیز رو پاک کردم از اول کانفیگ کردم!!!بنا بر این دقت کنید اشتباه وارد نکنید چون دردسرش زیاده . اگر کسی از دوستان هم بلده چجوری میشه ClusterIP رو تغییر داد ، اعلام کنه تا ضمیمه کنم
برای اختصاص دادن آدرس به کلاستر دستورات زیر را با همین شکل و ip انتخاب شده توسط شما در تمام نود ها اجرا میکنیم تا node های موجود در خوشه قرار بگیرند :
crm configure primitive ClusterIP ocf:heartbeat:IPaddr2 \
params ip=172.25.3.20 cidr_netmask=21 \
op monitor interval=30s
دستورات زیر را در نود ها اجرا میکنیم تا از اختصاص پیدا کردن ip به کلاستر و قرار گرفتن موفقیت آمیز هر نود در خوشه اطمینان حاصل کنیم :
crm configure show
crm status
حالا باید failback را غیر فعال کنیم زیرا در اینجا نیازی به failback برای هیچ یک از نود ها نداریم :
crm configure rsc_defaults resource-stickiness=100
crm configure show
ما در اینجا فقط ۲ نود داریم ، بنا بر این نیازی به چک کردم تعداد node ها و اینکه آیا به حد نصاب رسیده اند یا خیر نداریم . این قابلیت برای زمانی است که تعداد نود ها زیاد باشد . بنا بر این این سرویس را در Pacemaker متوقف و Disable میکنیم :
crm configure property no-quorum-policy=ignore
crm configure show
هم اکنون اگر یکی از node ها از حالت سرویس دهی خارج شده یا Down شود ، سرویس دهی به node دیگر انتقال می یابد و قطع نمیشود .
کلاستر کردن وب سرور آپاچی :
هم اکنون می توانیم به خوشه ایجاد شده ، recouce معرفی کنیم تا بر اساس مفاهیم High Availability آن را پایدار کنیم . در صورت خارج شدن یک نود از سرویس دهی ، وب سرور آپاچی بر روی node دیگر به سرویس دهی خود ادامه خواهد داد .
ابتدا وب سرور آپاچی Apache و بنامه دانلود Wget را در لینوکس CentOS نصب میکنیم :
yum install -y httpd wget
با اجرای دستورات زیر ، صفحه پیش فرض ایندکس را برای وب سرور آپاچی میسازیم تا متوجه شوید وب سرور آپاچی در حال پردازش کدام درخواست ها می باشد :
source /etc/sysconfig/network
cat <<-END >/var/www/html/index.html
<html>
<body>
<script type="text/javascript"><!--
var _gaq = _gaq || [];
_gaq.push(
['_setAccount', 'UA-10241535-3'],
['_trackPageview']
);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
//-->
</script>
The Apache cluster is on: $HOSTNAME</body>
</html>
END
http://compiler.ir/wp-content/uploads/2012/11/d21-300x206.png (http://compiler.ir/wp-content/uploads/2012/11/d21.png)
کلاستر کردن وب سرور آپاچی
وب سرور آپاچی به صورت پیش فرض به پیس میکر Pacemaker اجازه چک کردن سرویس و آگاهی یافتن از اصطلاحا live بودن آپاچی و اینکه آیا وب سرور در حال سرویس دهی می باشد یا از حالت سرویس دهی خارج شده است را نمیدهد . برای ایجاد این مجوز و آگاه کردن Pacemaker از وضعیت لحظه ای سرویس وب سرور آپاچی باید فایل httpd.conf را که به صورت پیش فرض در مسیر /etc/httpd/conf/httpd.conf در لینوکس واقع شده است ، به صورت زیر کانفیگ کنید :
ابتدا با کمک دستور ویرایش فایل vi فایل httpd.conf را باز و آماده ویرایش میکنیم :
vim /etc/httpd/conf/httpd.conf
سپس ExtendedStatus on و </Location /server-status> را در فایل httpd.conf پیدا کرده و آن ها را Uncomment میکنیم و از حالت کامنت بودن خارج میکنیم . سپس به دنبال عبارت All from .example.com در فایل httpd.conf گشته و آن را به Allow from 172.25 تغییر میدهیم . ip وارد شده در اینجا فقط برای مثال است و شما باید بر اساس تنظیمات سیستم خود آن را ست کنید . در نهایت با دستور :wq فایل را ذخیره کرده و سرویس آپاچی را مجددا راه اندازی میکنیم :
service httpd restart
حالا باید تنظیمات مربوط به کلاستر کردن آپاچی را در CoroSync و Pacemaker نیز اضافه کنیم تا وب سرور آپاچی به صورت کامل کلاستر و در محدوده خوشه قرار بگیرد :
crm configure primitive WebSite ocf:heartbeat:apache \
params configfile=/etc/httpd/conf/httpd.conf \
op monitor interval=1min
crm configure show
crm status
برنامه Pacemaker را برای قابلیت زنده نگه داشتن چندین recourse کانفیگ میکنیم :
crm configure colocation website-with-ip INFINITY: WebSite ClusterIP
crm configure show
crm_mon
حالا باید pacemaker را طوری کانفیگ کنیم تا ClusterIP قبل از وب سایت استارت شود و فقط زمانی متوقف شود که سرویس دهی وب سایت متوقف شده است .
crm configure order apache-after-ip mandatory: ClusterIP WebSite
crm configure show
سیستم High Availability با موفقیت بر روی ۲ نود که در اینجا ۲ سرور مجازی با سیستم عامل لینوکس توزیع CentOS هستند ، پیاده سازی شد و وب سرور آپاچی اصطحا کلاستر شد .
موفق باشید
و لينک منبع:
http://compiler.ir/%D8%B3%D8%B1%D9%88%D8%B1-%D9%85%D8%AC%D8%A7%D8%B2%DB%8C-high-availability-%D9%86%D8%B5%D8%A8-%D9%88-%DA%A9%D8%A7%D9%86%D9%81%DB%8C%DA%AF-corosync-%D9%88-pacemaker-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3/
و اما آموزش: High Availability نصب و کانفیگ CoroSync و Pacemaker سرور مجازی لینوکس CentOS (http://compiler.ir/%d8%b3%d8%b1%d9%88%d8%b1-%d9%85%d8%ac%d8%a7%d8%b2%db%8c-high-availability-%d9%86%d8%b5%d8%a8-%d9%88-%da%a9%d8%a7%d9%86%d9%81%db%8c%da%af-corosync-%d9%88-pacemaker-%d9%84%db%8c%d9%86%d9%88%da%a9%d8%b3/)
مفهوم High Availability در دنیای اینترنت و وب هاستینگ و شبکه ، بسیار گسترده و وسیع است و شامل مباحث فراوانی است . در این قسمت قصد داریم تا سیستم High Availability را به صورت خیلی ساده و با نصب و کانفیگ برنامه های CoroSync و Pacemaker بر روی سیستم عامل لینوکس CentOS 5.8 نسخه فاینال پیاده سازی کنیم . در انتهای این مقاله ، قادر خواهید بود تا ۲ سرور مجازی مختلف را Sync کرده و در صورت متوقف شدن سرویس دهی هر یک از ۲ سرور یا node ، پینگ آی پی شما نخوابد و سرویس دهی وب سرور آپاچی ادامه داشته باشد .
در گذشته برای کلاسترینگ و پیاده سازی High Availability در سرور های لینوکسی از نرم افزار قدیمی Hearbeat استفاده میشد . امروزه برنامه Pacemaker جای هارت بیت را گرفته است و مشهور ترین نرم افزار کلاسترینگ به حساب می آید .
http://compiler.ir/wp-content/uploads/2012/11/a_w_technologia_3-300x212.jpg
(http://compiler.ir/wp-content/uploads/2012/11/a_w_technologia_3.jpg)
(http://compiler.ir/wp-content/uploads/2012/11/a_w_technologia_3.jpg) اجرای High Availability و کلاسترینگ در سرور مجازی لینوکس
ابتدا selinux و iptables را در سیستم عاملی لینوکس کلیه سرور ها غیر فعال کنید
به روز رسانی پکیج های مورد نیاز لینوکس :
yum install yum-utils
yum provides */libperl.so
yum install perl
yum provides */libesmtp.so.5
نصب پیش نیاز های پیس میکر و کورو سینک :
su -
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/$(uname -i)/epel-release-5-4.noarch.rpm
wget -O /etc/yum.repos.d/pacemaker.repo http://clusterlabs.org/rpm/epel-5/clusterlabs.repo
حالا با اجرای فرمان زیر برنامه های CoroSync و Pacemaker را بر روی لینوکس CentOS نود اول که در اینجا سرور مجازی (http://compiler.ir/%D8%B3%D8%B1%D9%88%D8%B1-%D9%85%D8%AC%D8%A7%D8%B2%DB%8C/) A هست نصب میکنیم :
yum install -y pacemaker.$(uname -i) corosync.$(uname -i)
http://compiler.ir/wp-content/uploads/2012/11/tumblr_lbro32bsb31qzagr8-300x150.png
(http://compiler.ir/wp-content/uploads/2012/11/tumblr_lbro32bsb31qzagr8.png)
(http://compiler.ir/wp-content/uploads/2012/11/tumblr_lbro32bsb31qzagr8.png) نصب برنامه Pacemaker بر روی سرور مجازی لینوکس
کانفیگ کردن CoroSync :
ابتدا برای ایجاد یک تاییدیه و تصدیق یا authentication باید یک فایل با نام و مسیر /etc/corosync/authkey در تمام node های کلاستر یا خوشه و از طریق ssh ایجاد نماییم . در صورتی که در انجام این مراحل و اجرای کورو سینک ، با پیغام خطای Invalid digest مواجه شوید ، بدان معناست که که authentication یا هنوز بین node ها تایید نشده است ، و یا مشکلی در مرحله authentication به وجود آمده است .
# Generate Key
corosync-keygen
# Define receiving server and copy to it.
node=172.25.3.26
cat /etc/corosync/authkey | ssh root@$node “cat >> /etc/corosync/authkey; chmod 0400 /etc/corosync/authkey; chown hacluster:haclient /etc/corosync/authkey”
در مرحله بعدی باید فایل corosync.conf.example واقع در مسیر /etc/corosync/ را به corosync.conf تغییر نام داده و سپس آن را ویرایش کنیم . در اینجا من یک کپی جدید از این فایل را در همان مسیر ایجاد میکنم تا در صورت بروز اشتباه ، فایل اصلی از بین نرود . سپس با کمک فرمان vi فایل فوق را باز میکنیم و تغییرات زیر را در آن اعمال می نماییم :
cp /etc/corosync/corosync.conf.example /etc/corosync/corosync.conf
vi /etc/corosync/corosync.conf
با اضافه کردن این دستورات به فایل مذکور ، CoroSync را وادار به اجرا با یوزر root میکنیم . تنها در این صورت است که CoroSyn قابلیت تعامل با Pacemaker را به دست خواهد آورد :
ai***ec {
# Run as root – this is necessary to be able to manage resources with Pacemaker
user: root
group: root
}
مقادیر زیر را بری شروع کار Pacemaker وارد میکنیم :
cat <<-END >>/etc/corosync/corosync.conf
service {
# Load the Pacemaker Cluster Resource Manager
name: pacemaker
ver: 0
}
END
با اجرای دستوارت زیر و با کمک ssh و root ، تنظیمات اعمال شده در فایل corosync.conf را در تمام node های موجود در کلاستر و خوشه کپی می کنیم :
# Define receiving server and copy to it
node=172.25.3.26
scp /etc/corosync/corosync.conf root@$node:/etc/corosync/corosync.conf
توجه داشته باشید که پکیج rpm ای که کوروسینک و پیس میکر را با آن نصب کردیم ، فولدر لاگ log را نساخته است در حالی که وجود این فلدر ضروری است . بنا بر این به صورت دستی و با اجرای دستورات زیر اقدام به ساخت این فولدر در node های کلاستر می نماییم :
ابتدا در node اول و با دستور زیر فولدر لاگ را ایجاد میکنیم :
mkdir /var/log/cluster/
سپس به صورت ریموت ، و از طریق ssh این فولدر را روی بقیه نود های کلاستر میسازیم :
node=172.25.3.26
ssh root@$node “mkdir /var/log/cluster/”
با اجرای فرمان زیر ، سرویس CoroSync را استارت میکنیم :
service corosync start
با یکی از فرمان های زیر ، وضعیت CoroSync در سرور را چک میکنیم . در صورتی که کورو سینک به درستی اجرا نشده باشد ، با اجرای دستورات زیر با پیغام خطا و همچنین توضیحاتی در رابطه با علت بروز مشکل مواجه میشویم :
crm_mon
# Or for a single chunk of info
crm status
برای آشنایی با سایر command ها و دستورات CoroSync میتوانید از فرمان زیر استفاده کنید :
crm –help
در صورتی که کورو سینک در node اول کلاستر بدون مشکل و ارور خاصی اجرا شد ، میتوانید در node های بعدی نیز به صورت remote و از طریق ssh سرویس کورو سینک را اجرا نمایید :
node=172.25.3.26
ssh root@$node — service corosync start
قبل از ادامه کار ، با اجرای دستور زیر چک کنید آیا همه چیز به درستی کار میکند یا خیر :
crm_verify -L
همانطور که ملاحظه میکنید با پیغام خطا مواجه میشوید.دلیل بروز این پیام خطا ، استفاده کردن Pacemaker از سرویس STONITH است . برای حل مشکل دستورات زیر را در تمام نود ها اجرا کنید :
crm configure property stonith-enabled=false
crm_verify -L
http://compiler.ir/wp-content/uploads/2012/11/clustering-BalancerArch-300x223.png
(http://compiler.ir/wp-content/uploads/2012/11/clustering-BalancerArch.png)
(http://compiler.ir/wp-content/uploads/2012/11/clustering-BalancerArch.png) کلاسترینگ Clustering
اختصاص دادن یک IP به خوشه و کلاستر :
یکی از مهم ترین قسمت های کار ، اختصاص دادن یک IP به کلاستر ایجاد شده است . این کار به ما توانایی ارتباط بر قرار کردن با کلاستر را فارغ از اینکه کدام یک از node ها با کدام آدرس های IP در حال سرویس دهی و یا down هستند را میدهد . بنا بر این آدرس IP خوشه ، یک آدرس جدید است که در هیچ یک از نود ها نباید استفاده شده باشد .
نکته : من یک بار اینجا ip رو اشتباه وارد کردم و بعد از اون هر کاری که کردم نتونستم عوضش کنم…هنگام ست کردم مجدد ip با پیغام خطایی مبنی بر اینکه قبلا این عملیات انجام شده مواجه میشدم ، در نهایت همه چیز رو پاک کردم از اول کانفیگ کردم!!!بنا بر این دقت کنید اشتباه وارد نکنید چون دردسرش زیاده . اگر کسی از دوستان هم بلده چجوری میشه ClusterIP رو تغییر داد ، اعلام کنه تا ضمیمه کنم
برای اختصاص دادن آدرس به کلاستر دستورات زیر را با همین شکل و ip انتخاب شده توسط شما در تمام نود ها اجرا میکنیم تا node های موجود در خوشه قرار بگیرند :
crm configure primitive ClusterIP ocf:heartbeat:IPaddr2 \
params ip=172.25.3.20 cidr_netmask=21 \
op monitor interval=30s
دستورات زیر را در نود ها اجرا میکنیم تا از اختصاص پیدا کردن ip به کلاستر و قرار گرفتن موفقیت آمیز هر نود در خوشه اطمینان حاصل کنیم :
crm configure show
crm status
حالا باید failback را غیر فعال کنیم زیرا در اینجا نیازی به failback برای هیچ یک از نود ها نداریم :
crm configure rsc_defaults resource-stickiness=100
crm configure show
ما در اینجا فقط ۲ نود داریم ، بنا بر این نیازی به چک کردم تعداد node ها و اینکه آیا به حد نصاب رسیده اند یا خیر نداریم . این قابلیت برای زمانی است که تعداد نود ها زیاد باشد . بنا بر این این سرویس را در Pacemaker متوقف و Disable میکنیم :
crm configure property no-quorum-policy=ignore
crm configure show
هم اکنون اگر یکی از node ها از حالت سرویس دهی خارج شده یا Down شود ، سرویس دهی به node دیگر انتقال می یابد و قطع نمیشود .
کلاستر کردن وب سرور آپاچی :
هم اکنون می توانیم به خوشه ایجاد شده ، recouce معرفی کنیم تا بر اساس مفاهیم High Availability آن را پایدار کنیم . در صورت خارج شدن یک نود از سرویس دهی ، وب سرور آپاچی بر روی node دیگر به سرویس دهی خود ادامه خواهد داد .
ابتدا وب سرور آپاچی Apache و بنامه دانلود Wget را در لینوکس CentOS نصب میکنیم :
yum install -y httpd wget
با اجرای دستورات زیر ، صفحه پیش فرض ایندکس را برای وب سرور آپاچی میسازیم تا متوجه شوید وب سرور آپاچی در حال پردازش کدام درخواست ها می باشد :
source /etc/sysconfig/network
cat <<-END >/var/www/html/index.html
<html>
<body>
<script type="text/javascript"><!--
var _gaq = _gaq || [];
_gaq.push(
['_setAccount', 'UA-10241535-3'],
['_trackPageview']
);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
//-->
</script>
The Apache cluster is on: $HOSTNAME</body>
</html>
END
http://compiler.ir/wp-content/uploads/2012/11/d21-300x206.png (http://compiler.ir/wp-content/uploads/2012/11/d21.png)
کلاستر کردن وب سرور آپاچی
وب سرور آپاچی به صورت پیش فرض به پیس میکر Pacemaker اجازه چک کردن سرویس و آگاهی یافتن از اصطلاحا live بودن آپاچی و اینکه آیا وب سرور در حال سرویس دهی می باشد یا از حالت سرویس دهی خارج شده است را نمیدهد . برای ایجاد این مجوز و آگاه کردن Pacemaker از وضعیت لحظه ای سرویس وب سرور آپاچی باید فایل httpd.conf را که به صورت پیش فرض در مسیر /etc/httpd/conf/httpd.conf در لینوکس واقع شده است ، به صورت زیر کانفیگ کنید :
ابتدا با کمک دستور ویرایش فایل vi فایل httpd.conf را باز و آماده ویرایش میکنیم :
vim /etc/httpd/conf/httpd.conf
سپس ExtendedStatus on و </Location /server-status> را در فایل httpd.conf پیدا کرده و آن ها را Uncomment میکنیم و از حالت کامنت بودن خارج میکنیم . سپس به دنبال عبارت All from .example.com در فایل httpd.conf گشته و آن را به Allow from 172.25 تغییر میدهیم . ip وارد شده در اینجا فقط برای مثال است و شما باید بر اساس تنظیمات سیستم خود آن را ست کنید . در نهایت با دستور :wq فایل را ذخیره کرده و سرویس آپاچی را مجددا راه اندازی میکنیم :
service httpd restart
حالا باید تنظیمات مربوط به کلاستر کردن آپاچی را در CoroSync و Pacemaker نیز اضافه کنیم تا وب سرور آپاچی به صورت کامل کلاستر و در محدوده خوشه قرار بگیرد :
crm configure primitive WebSite ocf:heartbeat:apache \
params configfile=/etc/httpd/conf/httpd.conf \
op monitor interval=1min
crm configure show
crm status
برنامه Pacemaker را برای قابلیت زنده نگه داشتن چندین recourse کانفیگ میکنیم :
crm configure colocation website-with-ip INFINITY: WebSite ClusterIP
crm configure show
crm_mon
حالا باید pacemaker را طوری کانفیگ کنیم تا ClusterIP قبل از وب سایت استارت شود و فقط زمانی متوقف شود که سرویس دهی وب سایت متوقف شده است .
crm configure order apache-after-ip mandatory: ClusterIP WebSite
crm configure show
سیستم High Availability با موفقیت بر روی ۲ نود که در اینجا ۲ سرور مجازی با سیستم عامل لینوکس توزیع CentOS هستند ، پیاده سازی شد و وب سرور آپاچی اصطحا کلاستر شد .
موفق باشید
و لينک منبع:
http://compiler.ir/%D8%B3%D8%B1%D9%88%D8%B1-%D9%85%D8%AC%D8%A7%D8%B2%DB%8C-high-availability-%D9%86%D8%B5%D8%A8-%D9%88-%DA%A9%D8%A7%D9%86%D9%81%DB%8C%DA%AF-corosync-%D9%88-pacemaker-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3/