اطلاعیه

بستن
هنوز اطلاعیه ای در دست نیست.

آموزش High Availability نصب و کانفیگ CoroSync و Pacemaker سرور مجازی لینوکس CentOS

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    آموزش High Availability نصب و کانفیگ CoroSync و Pacemaker سرور مجازی لینوکس CentOS

    مفهوم High Availability در دنیای اینترنت و وب هاستینگ و شبکه ، بسیار گسترده و وسیع است و شامل مباحث فراوانی است . در این قسمت قصد داریم تا سیستم High Availability را به صورت خیلی ساده و با نصب و کانفیگ برنامه های CoroSync و Pacemaker بر روی سیستم عامل لینوکس CentOS 5.8 نسخه فاینال پیاده سازی کنیم . در انتهای این مقاله ، قادر خواهید بود تا ۲ سرور مجازی مختلف را Sync کرده و در صورت متوقف شدن سرویس دهی هر یک از ۲ سرور یا node ، پینگ آی پی شما نخوابد و سرویس دهی وب سرور آپاچی ادامه داشته باشد .

    در گذشته برای کلاسترینگ و پیاده سازی High Availability در سرور های لینوکسی از نرم افزار قدیمی Hearbeat استفاده میشد . امروزه برنامه Pacemaker جای هارت بیت را گرفته است و مشهور ترین نرم افزار کلاسترینگ به حساب می آید .

    اجرای High Availability و کلاسترینگ در سرور مجازی لینوکس
    Click image for larger version  Name:	a_w_technologia_3-300x212.jpg Views:	1 Size:	15.3 KB ID:	18686

    ابتدا selinux و iptables را در سیستم عاملی لینوکس کلیه سرور ها غیر فعال کنید.

    به روز رسانی پکیج های مورد نیاز لینوکس :

    کد PHP:
    yum install yum-utils

    yum provides 
    */libperl.so

    yum install perl

    yum provides 
    */libesmtp.so.5 
    نصب پیش نیاز های پیس میکر و کورو سینک :

    کد PHP:
    su -

    rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/$(uname -i)/epel-release-5-4.noarch.rpm

    wget -/etc/yum.repos.d/pacemaker.repo http://clusterlabs.org/rpm/epel-5/clusterlabs.repo 
    حالا با اجرای فرمان زیر برنامه های CoroSync و Pacemaker را بر روی لینوکس CentOS نود اول که در اینجا سرور مجازی A هست نصب میکنیم :

    کد PHP:
    yum install -y pacemaker.$(uname -icorosync.$(uname -i
    نصب برنامه Pacemaker بر روی سرور مجازی لینوکس
    Click image for larger version  Name:	tumblr_lbro32bsb31qzagr8-300x150.png Views:	1 Size:	17.6 KB ID:	18687


    کانفیگ کردن CoroSync :
    ابتدا برای ایجاد یک تاییدیه و تصدیق یا authentication باید یک فایل با نام و مسیر /etc/corosync/authkey در تمام node های کلاستر یا خوشه و از طریق ssh ایجاد نماییم . در صورتی که در انجام این مراحل و اجرای کورو سینک ، با پیغام خطای Invalid digest مواجه شوید ، بدان معناست که که authentication یا هنوز بین node ها تایید نشده است ، و یا مشکلی در مرحله authentication به وجود آمده است .

    کد PHP:
    # 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/authkeychmod 0400 /etc/corosync/authkeychown hacluster:haclient /etc/corosync/authkey” 
    در مرحله بعدی باید فایل corosync.conf.example واقع در مسیر /etc/corosync/ را به corosync.conf تغییر نام داده و سپس آن را ویرایش کنیم . در اینجا من یک کپی جدید از این فایل را در همان مسیر ایجاد میکنم تا در صورت بروز اشتباه ، فایل اصلی از بین نرود . سپس با کمک فرمان vi فایل فوق را باز میکنیم و تغییرات زیر را در آن اعمال می نماییم :

    کد PHP:
    cp /etc/corosync/corosync.conf.example /etc/corosync/corosync.conf

    vi 
    /etc/corosync/corosync.conf 
    با اضافه کردن این دستورات به فایل مذکور ، CoroSync را وادار به اجرا با یوزر root میکنیم . تنها در این صورت است که CoroSyn قابلیت تعامل با Pacemaker را به دست خواهد آورد :

    کد PHP:
     aisexec {

    # Run as root – this is necessary to be able to manage resources with Pacemaker

    userroot

    group
    root


    مقادیر زیر را بری شروع کار Pacemaker وارد میکنیم :

    کد PHP:
    cat <<-END >>/etc/corosync/corosync.conf

    service 
    {

    # Load the Pacemaker Cluster Resource Manager

    namepacemaker

    ver
    0

    }

    END 
    با اجرای دستوارت زیر و با کمک ssh و root ، تنظیمات اعمال شده در فایل corosync.conf را در تمام node های موجود در کلاستر و خوشه کپی می کنیم :

    کد PHP:
    # 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 اول و با دستور زیر فولدر لاگ را ایجاد میکنیم :

    کد PHP:
    mkdir /var/log/cluster
    سپس به صورت ریموت ، و از طریق ssh این فولدر را روی بقیه نود های کلاستر میسازیم :

    کد PHP:
    node=172.25.3.26

    ssh root
    @$node “mkdir /var/log/cluster/” 
    با اجرای فرمان زیر ، سرویس CoroSync را استارت میکنیم :

    کد PHP:
    service corosync start 
    با یکی از فرمان های زیر ، وضعیت CoroSync در سرور را چک میکنیم . در صورتی که کورو سینک به درستی اجرا نشده باشد ، با اجرای دستورات زیر با پیغام خطا و همچنین توضیحاتی در رابطه با علت بروز مشکل مواجه میشویم :

    کد PHP:
    crm_mon

    # Or for a single chunk of info

    crm status 
    برای آشنایی با سایر command ها و دستورات CoroSync میتوانید از فرمان زیر استفاده کنید :

    کد PHP:
    crm –help 
    در صورتی که کورو سینک در node اول کلاستر بدون مشکل و ارور خاصی اجرا شد ، میتوانید در node های بعدی نیز به صورت remote و از طریق ssh سرویس کورو سینک را اجرا نمایید :

    کد PHP:
    node=172.25.3.26

    ssh root
    @$node — service corosync start 
    قبل از ادامه کار ، با اجرای دستور زیر چک کنید آیا همه چیز به درستی کار میکند یا خیر :

    کد PHP:
    crm_verify -
    همانطور که ملاحظه میکنید با پیغام خطا مواجه میشوید.دلیل بروز این پیام خطا ، استفاده کردن Pacemaker از سرویس STONITH است . برای حل مشکل دستورات زیر را در تمام نود ها اجرا کنید :

    کد PHP:
    crm configure property stonith-enabled=false

    crm_verify 
    -
    کلاسترینگ Clustering
    Click image for larger version  Name:	clustering-BalancerArch-300x223.png Views:	1 Size:	15.1 KB ID:	18688

    اختصاص دادن یک IP به خوشه و کلاستر :
    یکی از مهم ترین قسمت های کار ، اختصاص دادن یک IP به کلاستر ایجاد شده است . این کار به ما توانایی ارتباط بر قرار کردن با کلاستر را فارغ از اینکه کدام یک از node ها با کدام آدرس های IP در حال سرویس دهی و یا down هستند را میدهد . بنا بر این آدرس IP خوشه ، یک آدرس جدید است که در هیچ یک از نود ها نباید استفاده شده باشد .

    نکته : من یک بار اینجا ip رو اشتباه وارد کردم و بعد از اون هر کاری که کردم نتونستم عوضش کنم…هنگام ست کردم مجدد ip با پیغام خطایی مبنی بر اینکه قبلا این عملیات انجام شده مواجه میشدم ، در نهایت همه چیز رو پاک کردم از اول کانفیگ کردم!!!بنا بر این دقت کنید اشتباه وارد نکنید چون دردسرش زیاده . اگر کسی از دوستان هم بلده چجوری میشه ClusterIP رو تغییر داد ، اعلام کنه تا ضمیمه کنم.
    برای اختصاص دادن آدرس به کلاستر دستورات زیر را با همین شکل و ip انتخاب شده توسط شما در تمام نود ها اجرا میکنیم تا node های موجود در خوشه قرار بگیرند :

    کد PHP:
    crm configure primitive ClusterIP ocf:heartbeat:IPaddr2 \
    params ip=172.25.3.20 cidr_netmask=21 \
    op monitor interval=30s 
    دستورات زیر را در نود ها اجرا میکنیم تا از اختصاص پیدا کردن ip به کلاستر و قرار گرفتن موفقیت آمیز هر نود در خوشه اطمینان حاصل کنیم :

    کد PHP:
    crm configure show
    crm status 
    حالا باید failback را غیر فعال کنیم زیرا در اینجا نیازی به failback برای هیچ یک از نود ها نداریم :

    کد PHP:
    crm configure rsc_defaults resource-stickiness=100
    crm configure show 
    ما در اینجا فقط ۲ نود داریم ، بنا بر این نیازی به چک کردم تعداد node ها و اینکه آیا به حد نصاب رسیده اند یا خیر نداریم . این قابلیت برای زمانی است که تعداد نود ها زیاد باشد . بنا بر این این سرویس را در Pacemaker متوقف و Disable میکنیم :

    کد PHP:
    crm configure property no-quorum-policy=ignore
    crm configure show 
    هم اکنون اگر یکی از node ها از حالت سرویس دهی خارج شده یا Down شود ، سرویس دهی به node دیگر انتقال می یابد و قطع نمیشود .

    کلاستر کردن وب سرور آپاچی :
    هم اکنون می توانیم به خوشه ایجاد شده ، recouce معرفی کنیم تا بر اساس مفاهیم High Availability آن را پایدار کنیم . در صورت خارج شدن یک نود از سرویس دهی ، وب سرور آپاچی بر روی node دیگر به سرویس دهی خود ادامه خواهد داد .

    ابتدا وب سرور آپاچی Apache و بنامه دانلود Wget را در لینوکس CentOS نصب میکنیم :

    کد PHP:
    yum install -y httpd wget 
    با اجرای دستورات زیر ، صفحه پیش فرض ایندکس را برای وب سرور آپاچی میسازیم تا متوجه شوید وب سرور آپاچی در حال پردازش کدام درخواست ها می باشد :

    کد PHP:
    source /etc/sysconfig/network
    cat 
    <<-END >/var/www/html/index.html
    <html>
    <
    body>The Apache cluster is on$HOSTNAME</body>
    </
    html>
    END 
    کلاستر کردن وب سرور آپاچی
    Click image for larger version  Name:	d21-300x206.png Views:	1 Size:	32.1 KB ID:	18689
    وب سرور آپاچی به صورت پیش فرض به پیس میکر Pacemaker اجازه چک کردن سرویس و آگاهی یافتن از اصطلاحا live بودن آپاچی و اینکه آیا وب سرور در حال سرویس دهی می باشد یا از حالت سرویس دهی خارج شده است را نمیدهد . برای ایجاد این مجوز و آگاه کردن Pacemaker از وضعیت لحظه ای سرویس وب سرور آپاچی باید فایل httpd.conf را که به صورت پیش فرض در مسیر /etc/httpd/conf/httpd.conf در لینوکس واقع شده است ، به صورت زیر کانفیگ کنید :

    ابتدا با کمک دستور ویرایش فایل vi فایل httpd.conf را باز و آماده ویرایش میکنیم :

    کد PHP:
    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 فایل را ذخیره کرده و سرویس آپاچی را مجددا راه اندازی میکنیم :

    کد PHP:
    service httpd restart 
    حالا باید تنظیمات مربوط به کلاستر کردن آپاچی را در CoroSync و Pacemaker نیز اضافه کنیم تا وب سرور آپاچی به صورت کامل کلاستر و در محدوده خوشه قرار بگیرد :

    کد PHP:

    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 کانفیگ میکنیم :

    کد PHP:
    crm configure colocation website-with-ip INFINITYWebSite ClusterIP
    crm configure show
    crm_mon 
    حالا باید pacemaker را طوری کانفیگ کنیم تا ClusterIP قبل از وب سایت استارت شود و فقط زمانی متوقف شود که سرویس دهی وب سایت متوقف شده است .

    کد PHP:
    crm configure order apache-after-ip mandatoryClusterIP WebSite
    crm configure show 
    سیستم High Availability با موفقیت بر روی ۲ نود که در اینجا ۲ سرور مجازی با سیستم عامل لینوکس توزیع CentOS هستند ، پیاده سازی شد و وب سرور آپاچی اصطحا کلاستر شد .

    نویسنده Babak Ajideh
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 02-07-2021, 06:16 PM.

    #2
    سلام
    انشالله طی ماه آینده این پروژه ha رو بنده روی لینوکس پیاده سازی می کنم و یک فیلم آموزشی و گزارش از کارکردش بصورت اختصاصی داخل انجمن قرار میدم.

    دوستانی هم که تمایل دارند به هر طریقی هم کاری کنند .. تماس بگیرند.

    راه های ارتباطی هم که فقط پیغام خصوصی :95:

    کامنت

    درباره انجمن منطقه لینوکسی ها

    انجمن منطقه لینوکسی ها با هدف ارتقاء سطح علمی کاربران در سطح جهانی و همچنین کمک به بالا بردن سطح علمی عمومی در زمینه های تخصصی فوق پایه گذاری شده است. انجمن منطقه لینوکسی ها از طریق کارشناسان و متخصصان پاسخگوی سوالات گوناگون کاربران مبتدی یا پیشرفته میباشد تا حد امکان تلاش شده که محیطی متنوع و کاربر پسند و به دور از هرگونه حاشیه جهت فعالیت کاربران در این انجمن ایجاد شود. لذا ما به صورت مستمر برای پیشرفت کمی و کیفی محتوی و اطلاعات انجمنمان میکوشیم که این برای ما ارزشمند و حائز اهمیت است. کلیه حقوق،اطلاعات و مقالات در این انجمن متعلق به سایت منطقه لینوکسی ها میباشد، و هرگونه نسخه برداری بدون ذکر منبع مورد پیگرد قانونی خواهد شد.

    شبکه های اجتماعی
    در حال انجام ...
    X