اوبونتوسیستم عامل لینوکسمقالات وب

چگونه در لینوکس کلاسترینگ/ High Availability را پیکربندی کنیم؟

High Availability ( قابلیت در دسترس پذیری بالا) به کیفیتی از سیستم اطلاق می شود که به طور مداوم و بدون از کارافتادگی برای بازه زمانی طولانی به کار خود ادامه می دهد. راه حل های مربوط به HA را می توان به کمک نرم افزار یا سخت افزار اجرا کرد. یکی از رایج ترین راه حل های ایجاد در دسترس پذیری بالا استفاده از کلاسترینگ(Clustering) است. در دنیای کامپیوتر، کلاسترها از دو یا چند رایانه تشکیل شده اند که به همراه هم برای انجام یک وظیفه خاص عمل می کنند. در چنین وضعیتی، تنها یک node خدمات و سرویس ها را فراهم می کند و node ثانویه در صورت بروز از کار افتادگی وارد عمل می شود. کلاسترها انواع مختلفی دارند که از جمله آن ها می توان به Storage، HA، Load Balancing وHigh Performance اشاره کرد. در این مقاله قصد داریم نحوه پیکربندی کلاسترینگ در لینوکس را با هم مرور کنیم. پس همراه وب ایده باشید.


برای راه اندازی کلاستر، ما حداقل به دو سرور نیاز خواهیم داشت. در این مقاله ما از دو سرور لینوکسی با مشخصات زیر استفاده می کنیم:
Node1: 192.168.10.10
Node2: 192.168.10.11
در ادامه سعی می کنیم مباحث پایه ای نحوه توسعه، پیکربندی و حفظ در دسترس پذیری بالا / کلاسترینگ را در اوبونتو مورد بررسی قرار دهیم.

پیکربندی تنظیمات DNS لوکال بر روی هر سرور:

برای اینکه دو سرور ما بتوانند با هم ارتباط داشته باشند باید تنظیمات مناسبی برای DNS داشته باشیم. برای اینکار باید سری به فایل /etc/hosts در هر دو سرور بزنیم. این فایل را به کمک ویرایشگر مدنظر خود باز کنید.

$ sudo vim /etc/hosts

 

ورودی های زیر را در فایل بالا وارد نمایید. شما باید از ای پی آدرس واقعی سرورهای خود استفاده کنید:

192.168.10.10 node1.example.com
192.168.10.11 node2.example.com

 

تغییرات ایجاد شده را ذخیره کنید و فایل را ببندید.

نصب وب سرور NGINX:

خوب حالا باید وب سرور خودمان را به کمک دستورات زیر نصب کنیم. انجام اینکار بسیار ساده و اسان خواهد بود:

$ sudo apt install nginx [On Ubuntu]
$ sudo yum install epel-release && sudo yum install nginx [On CentOS 7]

 

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

$ sudo systemctl enable nginx
$ sudo systemctl start nginx
$ sudo systemctl status nginx

 

بعد از اینکه سرویس های NGINX را استارت کردید، باید یک صفحه سفارشی ایجاد کنید تا کارکرد هر دو سرور را تست کنید. در این بخش سعی می کنیم محتوای صفحه ایندکس NGINX را همانند زیر اصلاح کنیم:

$ echo "This is the default page for node1.example.com" | sudo tee /usr/share/nginx/html/index.html #VPS1
$ echo "This is the default page for node2.example.com" | sudo tee /usr/share/nginx/html/index.html #VPS2

 

نصب و پیکربندی Corosync و Pacemaker:

در این مرحله باید Pacemaker, Corosync و Pcs را بر روی هر node نصب کنیم. برای اینکار از دستورات زیر کمک بگیرید.

$ sudo apt install corosync pacemaker pcs #Ubuntu
$ sudo yum install corosync pacemaker pcs #CentOS

 

بعد از اینکه فرآیند نصب کامل شد، باید مطمئن شوید که pcs daemon بر روی هر سرور به درستی کار می کند:

$ sudo systemctl enable pcsd
$ sudo systemctl start pcsd
$ sudo systemctl status pcsd

 

ایجاد کلاستر:

در طول فرایند نصب، کاربر سیستم به نام hacluster ایجاد شده است. پس باید تایید هویت مورد نیاز برای Pcs را تنظیم کنیم. اجازه دهید یک پسورد برای کاربر ایجاد شده تنظیم کنیم. ما باید از پسورد یکسانی بر روی هر دو سرور استفاده نماییم.

 

$ sudo passwd hacluster

 

سپس بر روی یکی از سرورها(Node1)، دستور زیر را اجرا می کنیم تا فرایند تایید هویت راه اندازی شود:

$ sudo pcs cluster auth node1.example.com node2.example.com -u hacluster -p password_here --force

 

در این مرحله یک کلاستر ایجاد می کنیم و برخی از node ها را بر روی آن قرار می دهیم.

$ sudo pcs cluster setup --name examplecluster node1.example.com node2.example.com

 

کلاستر ایجاد شده را در بوت فعال می کنیم و سرویس را استارت می نماییم.

$ sudo pcs cluster enable --all
$ sudo pcs cluster start --all

 

در این مرحله باید به کمک دستور زیر ببینیم سرویس های کلاستر به درستی کار می کنند یا خیر.

$ sudo pcs status
OR
$ sudo crm_mon -1

 

از نمونه خروجی های موجود می توان متوجه شد که هشدارهایی وجود دارد.

پیکربندی گزینه های مربوط به کلاستر:

اولین گزینه غیر فعال کردن STONITH بر روی Pacemaker است. این کامپوننت به محافظت از داده های شما کمک می کند. چون ما هنوز هیچ دستگاهی را پیکربندی نکرده ایم باید این قابلیت را هم غیر فعال کنیم.
برای اینکار می توانید از دستور زیر استفاده کنید:

$ sudo pcs property set stonith-enabled=false

 

به کمک اجرای دستور زیر می توانید Quorum policy را هم نادیده بگیرید:

$ sudo pcs property set no-quorum-policy=ignore

 

بعد از اینکه گزینه های بالا را اجرا کردید، دستور زیر را اجرا نمایید تا بتوانید فهرستی از property ها را مشاهده کنید و مطمئن شوید که گزینه های بیان شده در بالا غیر فعال شده اند.

$ sudo pcs property list

 

اضافه کردن سرویس کلاستر/ منابع:

در این بخش نگاهی به نحوه اضافه کردن منابع کلاستر می اندازیم. در ادامه سعی می کنیم یک آی پی ادرس شناور تنظیم کنیم. این آی پی آدرس در یک شبکه یا دیتاسنتر می تواند فورا از سروی به سرور دیگر برود. به خاطر داشته باشید که آی پی آدرس شناور تنها برای موقعیت های از کارافتادگی نیست و می تواند کاربرد دیگری هم داشته باشد. باید کلاستر را به گونه ای پیکربندی کنیم که تنها یک عضو فعال از آن بتواند در یک بازه زمانی خاص به ای پی شناور پاسخ دهد یا صاحب آن باشد.
دو منبع برای کلاستر خود اضافه می کنیم: یکی آی پی آدرس شناور به نام floating_ip و دیگری منبعی برای وب سرور به نام http_server.
در ابتدا آی پی آدرس شناور را اضافه می کنیم. به دستور زیر توجه کنید:

$ sudo pcs resource create floating_ip ocf:heartbeat:IPaddr2 ip=192.168.10.20 cidr_netmask=24 op monitor interval=60s

 

در دستور بالا:
• floating_ip: نام سرویس است
• ocf:heartbeat:IPaddr2 : به Pacemaker می گوید از چه اسکریپتی استفاده کند.
• op monitor interval=60s : به Pacemaker دستور می دهد سلامت این سرویس ها را هر یک دقیقه یکبار بررسی کند.
سپس منبع دوم را اضافه می کنیم:

$ sudo pcs resource create http_server ocf:heartbeat:nginx configfile="/etc/nginx/nginx.conf" op monitor timeout="20s" interval="60s"

 

بعد از اینکه سرویس های کلاستر را اضافه کردید، دستور زیر را وارد کنید تا وضعیت منابع را بررسی نمایید:

$ sudo pcs status resources

 

اگر خروجی این دستورات را بررسی کنید متوجه می شود که دو منبع بر روی آن فهرست شده است. سرویس ای پی شناور هنوز off است زیرا node اولیه در حال کار است. اگر فایر والی بر روی سیستم دارید باید ترافیک را برای nginx فعال کنید:

-------------- CentOS 7 --------------
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=high-availability
$ sudo firewall-cmd --reload

-------------- Ubuntu --------------
$ sudo ufw allow http
$ sudo ufw allow high-availability
$ sudo ufw reload

 

تست HA/ کلاسترینگ:

اخرین و مهم ترین بخش از کار تست کلاسترینگ و HA است. مرورگر خود را باز کنید و ای پی آدرس 192.168.10.20 را وارد نمایید. شما باید از طریق node2.example.com ، صفحه پیش فرض NGINX را مشاهده نمایید. برای ایجاد از کارافتادگی، دستور زیر را وارد کنید:

$ sudo pcs cluster stop http_server

 

سپس صفحه را با ای پی ادرس 192.168.10.20 دوباره بارگذاری نمایید. حالا باید از طریق node1.example.com به صفحه NGINX دسترسی داشته باشید.

3.1/5 - (8 امتیاز)
برچسب ها

نوشته های مشابه

‫2 نظرها

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

بستن