خانه / فناوری / مقیاس بندی خودکار وردپرس با داکر و AWS
مقیاس بندی خودکار وردپرس با داکر و AWS

مقیاس بندی خودکار وردپرس با داکر و AWS

زمانی که سایت وردپرسی خود را ایجاد می کنید ممکن است سوالات زیادی در ذهن داشته باشید. اولین و مهم ترین سوالی که به ذهنتان خطور می کند این است که تعداد بازدید کنندگانی که سایت می تواند مدیریت کند چقدر است؟ اگر سایت شما جزو سایت های تجارت الکترونیکی باشد این موضوع چقدر مهم خواهد بود؟ بر اساس گزارشات سایت آمازون، با هر ۱۰۰ میلی ثانیه تاخیری که در بارگذاری سایت رخ می دهد ۱ درصد از فروش کمتر می شود. امروزه، بیشتر مشتریان انتظار دارند صفحات سایت در کمتر از ۳ ثانیه بارگذاری شود.  خوب همانطور که می دانید سرعت بخشیدن به سایت برای یک بازدید کننده کار نسبتا اسانی است اما زمانی که تعداد بازدید کنندگان افزایش پیدا می کند این موضوع ممکن است به یک مشکل بزرگ تبدیل شود.  اگر تاخیر سایت شما به خاطر حجم زیادی از بازدید کنندگانی است که از سرتاسر جهان به سایت سر می زنند می توانید از CDN هایی همچون CloudFlare یا AKAMAI استفاده کنید تا سایت را به  کاربرانتان نزدیک تر سازید. تمامی این موارد می تواند سرعت سایت را بهبود ببخشد زیرا بیشتر تصاویر و فایل های ویدئویی بدون وجود تاخیر می توانند در اختیار کاربران قرار گیرند. با این وجود باید به خاطر داشته باشید که  فایل های جاوااسکریپت و CSS باید در کمتر از چند میلی ثانیه بارگذاری شوند.  پلتفرم پلسک تمامی فناوری های جدید را در خود دارد و باعث می شود سایت شما با سرعت بیشتری بارگذاری شود و عملکرد خوبی داشته باشد.

تمامی اینکارها تنها با چند کلیک ساده امکان پذیر خواهد بود. اما زمانی که تعداد بازدیدکنندگان سایت شما افزایش پیدا می کند( با محبوب شدن سایت در میان کاربران این موضوع رخ می دهد) وجود یک سرور نمی تواند به تنهایی تمامی این درخواست ها را مدیریت نماید. زمانی را به خاطر بیاورید که در صف فروشگاهی ایستاده اید و منتظر هستید نوبتتان برسد تا صورتحساب را پرداخت نمایید. اگر خدمات رسانی این فروشگاه خوب باشد سعی می کند یک باجه جدید به آن اضافه کند تا حجم کار میان کارمندان توزیع گردد.  اگر فروشگاهی این موضوع را نادیده بگیرد، مشتریان تجربه خوبی از خرید خود نخواهند داشت و دفعه بعد سعی می کنند از فروشگاه رقیب خرید نمایند. این موضوع در مورد سایت و مشتریان آن نیز صدق می کند. اگر بتوانید تجربه خوبی در اختیار مشتریان خود قرار دهید و رضایت آن ها را کسب کنید مطمئن باشید مزایای بسیار زیادی دریافت خواهید کرد. یکی از این مزایا ایجاد رابطه پایدار بین مشتری و شرکت است. خوب حالا سوال اینجاست که وردپرس چگونه می تواند حجم زیادی از درخواست ها را مدیریت کند؟ بدیهی است که در چنین شرایطی به سرورهای متعدد نیاز خواهد بود. اما اضافه کردن یک یا دو سرور اضافی به تنهایی کارساز و مفید نیست. همچنین اگر بخواهید از همان ابتدا ۱۰ سرور جداگانه داشته باشید متحمل هزینه های گزافی خواهید شد. چیزی که در این شرایط به درد شما می خورد مقیاس بندی سایت است .اگر ترافیک کمتری در سایت خود دارید هزینه های کمتری نیز خواهید داشت. زمانی که ترافیک سایت افزایش پیدا می کند، زیرساخت های موجود نیز باید به طور خودکار مقیاس بندی شود تا بتواند حجم بار را مدیریت نماید. این فرایند به  کنترل هزینه ها می انجامد زیرا مجبور نیستید پول اضافی بابت چیزی که استفاده نکرده اید پرداخت کنید. به عبارت دیگر، اگر بتوانید همه کارها را به درستی انجام دهید و فرایند مقیاس بندی را به شیوه صحیح اجرا نمایید، هزینه های افزایش یافته برای سرورها اسیبی به درآمد شما وارد نمی کند. در چنین شرایطی اگر ترافیک شما کاهش پیدا کند هزینه های مرتبط با سرور نیز کمتر می شود.

تا به این جای کار سناریوی موجود را با هم مرور کردیم. مطمئنم شما نیز دوست دارید نحوه انجام این فرآیند را یاد بگیرید.  برای اینکه بتوانید وردپرس خود را به طور خودکار مقیاس بندی کنید باید مراحل زیر را دنبال نمایید:

  1. سرور پایگاه داده خود را با قدرت کافی بر روی دستگاه جداگانه تنظیم نمایید.
  2. تمامی فایل های استاتیک خود را به فضای ذخیره سازی فایل انتقال دهید. اینکار باعث می شود دسترسی به فایل ها با سرعت بیشتری انجام شود.
  3. یک CDN در سایت خود ایجاد کنید تا بتواند تمامی فایل های استاتیک را به کاربر نزدیک کند و سرعت تحویل آن را افزایش دهد.
  4. سرورهای متعددی را با سایت وردپرسی یکسان تنظیم کنید.
  5. سعی کنید یک متعادل کننده بار(load-balancer) ایجاد کنید تا بار بین سرورهای وردپرسی را تنظیم کند.
  6. بسته به اینکه چگونه می خواهید سایت خود را به روزرسانی کنید می توانید از دو روش زیر استفاده کنید:
  • تمامی instance ها را دوباره توسعه دهید تا تغییرات موجود اعمال شود.
  • شما می توانید از یک فایل سیستم اشتراکی استفاده کنید که تمامی instance ها از آن بهره مند می شوند.

حالا باید بتوانید سرعت instance های خود را به صورت خودکار افزایش دهید. اگر نیاز به کاهش سرعت و حجم instance باشد اینکار نیز باید به طور خودکار انجام شود.

چگونه به این هدف دست پیدا کنیم؟

در این شرایط به زیرساخت هایی نیاز داریم که به ما اجازه دهند اینکار را از طریق API ها و رویدادهایی که توانایی مقیاس بندی خودکار دارند مدیریت کنیم. در این مقاله ما از Amazon AWS استفاده می کنیم زیرا یکی از فراهم کنندگان محبوب خدمات ابری است. اما باید به خاطر داشته باشید که Microsoft Azure و Google Compute Platform نیز توانایی ها و نقاط قوت خود را دارند و می توانند به راحتی با AWS رقابت نمایند. بر اساس نیازی که دارید یکی از این موارد را انتخاب کنید و مراحل بعدی را دنبال نمایید . پلسک در تمامی پلتفرم های فراهم کننده خدمات ابری به خوبی کار می کند و به عنوان اپلیکیشن در AWS Marketplace موجود است.  قبل از اینکه به سراغ API ها برویم باید در مورد نحوه توسعه وردپرس بر روی سرورها تصمیم بگیریم.  هیچ کس دوست ندارد توسعه وردپرس را به صورت دستی انجام دهد . این موضوع بدین معنی است  که اجزای مقایس بندی خودکار در مورد  اضافه کردن یا حذف سرور تصمیم می گیرد.  شما می توانید از Chef، Puppet، Ansible یا اسکریپت ساده bash برای این کار استفاده کنید اما اولویت اصلی استفاده از داکر است که می تواند محتوای سایت را بسته بندی کند و آن را پیکربندی نماید. در نهایت می توانید image داکر را در هر کدام از سرورهای خود قرار دهید و ان را به عنوان کانتینر اجرا نمایید. با این رویکرد ساده، پیکربندی آن بسیار راحت تر خواهد بود.

 ایجاد Image داکر:

برای ایجاد Image داکر اولین کاری که باید انجام دهید توصیف و توضیح آن در Dockerfile دارید. در این پست می توانید Dockerfile که استفاده می کنیم را مشاهده کنید. با کمک دستور زیر می توانیم Image خود را بر اساس آخرین نسخه وردپرس ایجاد کنیم:

۱

 $ docker build -t janloeffler/wordpress-aws-scaler:latest .

بعد از ایجاد آن، باید آن را در رجیستری داکر قرار دهیم که  محل ذخیره سازی Image داکر است. به دستور زیر نگاه کنید:

۱

 $ docker push janloeffler/wordpress-aws-scaler:latest

شما می توانید Image خود را که حاوی وردپرس به صورت محلی است اجرا کنید تا آن را تست نمایید. باید پارامترهایی را مشخص کنید . برخی از این پارامترها شامل  hostname پایگاه داده است:

۱

 $ docker run -p 80:80 -p 443:443 -it janloeffler/wordpress-aws-scaler:latest

مقیاس بندی:

خوب همانطور که گفتیم از AWS در این مقاله استفاده می کنیم. AWS دارای REST APIs های متعددی است که هر کدام از آن ها پارامترهای مختلفی خواهند داشت.برخی از این پارامترها اختیاری هستند و می توان از آن ها برای پیکربندی انعطاف پذیر استفاده کرد. شما می توانید به طور مستقیم  به API ها دسترسی داشته باشید  یا از  AWS CLI به صورت مستقیم در پوسته خود استفاده نمایید. در این مثال از CLI استفاده می کنیم که کاربرد و عیب یابی آن ساده تر و راحت تر است.

برای اینکه بتوانیم وردپرس خود را به سرعت مقیاس بندی کنید به API های زیر نیاز خواهید داشت:

  1. EC2                              (برای مدیریت سرورهای مجازی)
  2. S3                                ( برای بارگذاری فایل ها به سیستم ذخیره سازی فایل)
  3. S3api                           ( برای مدیریت مکان ذخیره سازی فایل)
  4. RDS                             (برای مدیریت پایگاه داده)
  5. ELB                              (برای مدیریت متعادل کننده بار)
  6. AutoScaling                 (برای پیکربندی مقیاس سازی خودکار)
  7. CloudWatch                (برای بررسی بار در سرورها)
  8. CloudFront                  (تنظیم CDN)
  9. SNS                             ( کانال اعلان بین مانیتورینگ و مقیاس بندی خودکار)
  10. Route53                      ( مدیریت دامنه ها و ورودی DNS)
  11. IAM                             ( مدیریت مجوز دسترسی زیرساخت ها)

باید بدانید که تنها EC2 API می تواند ۲۱۰ (دویست و ده) API calls را برای مدیریت منابع محاسباتی در AWS فراهم کند.  برای اینکه بتوانید تمامی EC2 instance های خود در اکانت AWS را لیست کنید دستور زیر را اجرا نمایید:

۱

 $ aws ec2 describe-instances

از آنجایی که توضیح تمامی API call ها سخت و دشوار است، نمی توان تمامی این موارد را در یک مقاله بیان کرد. به همین خاطر از این موضوع می گذریم و راه حلی را فراهم می کنیم که می تواند مدیریت و مقیاس بندی خودکار وردپرس را تنها با یک دستور واحد انجام دهد. خبر خوب این است که این راه حل متن باز و رایگان است. شما می توانید از Plesk WordPress AWS Scaler استفاده کنید.  کافیست مخزن را بر روی دستگاه محلی خود با دستور زیر دانلود کنید:

۱

 $ git clone https://github.com/plesk/wordpress-aws-scaler.git

۱

 $ cd wordpress-aws-scaler

حالا می توانید اسکریپت Plesk WordPress AWS Scaler را اجرا کنید تا گزینه های موجود را ببینید:

۱

 $ sh manage-wordpress.sh

بر اساس نیازهای خود قادر خواهید بود پیکربندی را تنظیم کنید:

  • عنوان سایت وردپرسی
  • مجوزهای مورد نیاز برای ادمین
  • آدرس ایمیل
  • نام دامنه
  • لایسنس های جدید
  • پیکربندی EC2 و RDS مثلا سایز سرور

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

۱

 $ sh manage-wordpress.sh create

برای به روزرسانی تمامی Instance ها با نسخه جدید سایت دستور زیر را اجرا نمایید:

۱

 $ sh manage-wordpress.sh update

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

۱

 $ sh manage-wordpress.sh delete

امیدواریم از این آموزش لذت برده باشید.

منبع

جوابی بنویسید

ایمیل شما نشر نخواهد شدخانه های ضروری نشانه گذاری شده است. *

*