طرح بازیابی (Recovery Plan) برای یک وب اپلیکیشن — راهنمای جامع
در سلسله مطالب راهنمای توزیع نهایی یک اپلیکیشن وب برای محیط production دیدیم که چگونه میتوان سرورهای مختلف را راهاندازی و تست کرد. در این بخش با طرح بازیابی (Recovery Plan) آشنا میشویم. منظور از طرح بازیابی مجموعهای از رویههای مستند شده برای احیای اپلیکیشن از وضعیتهای احتمالی از کار افتادگی یا خطاهای مدیریتی در زمان راهاندازی سرور است. تهیه یک طرح بازیابی همچنین به شناسایی اجزا و دادههای حیاتی برای محیط سرور اپلیکیشن شما کمک میکند.
یک طرح بازیابی بسیار ساده در زمان از کار افتادن سرور میبایست شامل فهرستی از مراحل باشد که با در هنگام راهاندازی اولیه سرور اجرا شدهاند و همچنین گامهای اضافی که برای بازیابی دادههای اپلیکیشن از نسخههای پشتیبان استفاده میشوند. یک طرح بازیابی بهتر علاوه بر مستندات خوب از اسکریپتهای توزیع و ابزارهای مدیریت پیکربندی مانند Ansible, Chef, یا Puppet برای کمک به خودکارسازی و تسریع فرایند بازیابی نیز بهره میگیرد.
در این بخش از راهنما شیوه ایجاد یک طرح بازیابی ابتدایی برای اپلیکیشن نمونه خودمان که وردپرس است را نمایش میدهیم. البته بدیهی است که احتمالاً نیازهای شما متفاوت خواهند بود؛ اما این راهنما به شما کمک میکند تا مقدمات تدارک یک طرح بازیابی برای اپلیکیشن خود را دریابید.
الزامات طرح بازیابی
الزامات ابتدایی ما این است که قادر باشیم از دست دادن هر کدام از سرورها را در مجموعه خود جبران کنیم و کارکرد اپلیکیشن و دادههای آن را در زمان معقولی بازیابی نماییم. بدین منظور برای هر سرور یک موجودی تهیه میکنیم، تعیین میکنیم که کدام دادهها باید پشتیبانگیری شوند و یک طرح بازیابی بر مبنای داراییهای موجود تهیه میکنیم. البته اگر هر کدام از این طرحهای بازیابی اجرا شوند، اپلیکیشن باید تست شود تا مطمئن شویم که بازیابی به طرز صحیحی کار میکند.
برای هر نوع سروری که در اپلیکیشن ما وجود دارد یک نوعت خاصی از طرح بازیابی مورد نیاز است:
- سرور پایگاه داده
- سرور اپلیکیشن
- سرور توزیع بار
ابتدا از سرور پایگاه داده آغاز میکنیم:
سرور پایگاه داده
با ردگیری گامهای ابتدایی که برای راهاندازی این سرور پایگاه داده در بخشهای پیشین این راهنما برداشتهایم، میبینیم که سرور پایگاه داده ما در مراحل زیر ایجاد شده است:
- نصب MySQL
- پیکربندی MySQL
- ریاستارت MySQL
- ایجاد پایگاه داده و کاربران
طرح بازیابی سرور پایگاه داده
وقتی به روش ایجاد پایگاه داده دقیق شویم میبینیم که به جز دادههای موجود در داخل پایگاه داده باقی مراحل را میتوان از صفر دوباره آغاز کرد. در مورد مثال مورد استفاده در این راهنما یعنی اپلیکیشن وردپرس، اغلب دادههای اپلیکیشن (یعنی نوشتههای بلاگ) در این پایگاه داده ذخیره شدهاند. این بدان معنی است که اگر میخواهیم سرور پایگاه داده را بازیابی کنیم، میبایست پشتیبانهایی از پایگاه داده نگهداری کنیم. همچنین باید فایل پیکربندی MySQL را نیز پشتیبانگیری کنیم چون تا حدودی تغییر مییابد.
بر اساس موجودی سرور پایگاه داده، طرح بازیابی این سرور به صورت زیر تنظیم میشود:
پشتیبانهای مورد نیاز:
- پایگاه داده MySQL
- پیکربندی MySQL
- مراحل بازیابی
- نصب MySQL
بازیابی فایل پیکربندی و بهروزرسانی آدرس IP ورودی (در صورت تغییر)
- بازیابی پایگاه داده
- ریاستارت MySQL
اکنون که چشماندازی از طرح بازیابی سرور پایگاه داده در دست داریم باید جزییات مراحل بازیابی را بررسی کرده و مطمئن شویم که پشتیبانهای ضروری را ذخیرهسازی کردهایم. این بخش از مراحل تهیه طرح بازیابی به عنوان یک تمرین بر عهده شما خواننده عزیز قرار میگیرد، زیرا الزامات این بخش بسته به طراحی عملی هر اپلیکیشنی متفاوت است. در مورد اپلیکیشن مثال این راهنما میتوانید از آموزش «توزیع وب اپلیکیشنها در محیط Production» به عنوان راهنمای طراحی مراحل بازیابی استفاده کنید.
سرورهای اپلیکیشن
با پیگیری مراحل راهاندازی سرورهای اپلیکیشن در بخشهای پیشین این راهنما میدانیم که سرورهای اپلیکیشن با اجرای مراحل زیر راهاندازی شدهاند:
- نصب و پیکربندی آپاچی و پیاچپی
- دانلود و پیکربندی اپلیکیشن (وردپرس)
- کپی فایلهای نصب به ریشه سند
- کپی فایلهای اپلیکیشن به همه سرورهای اپلیکیشن
طرح بازیابی سرور اپلیکیشن
با نگاهی به مراحل فوق میبینیم که سرور اپلیکیشن ما به جز فایلهای اپلیکیشن میتواند از صفر مجدداً راهاندازی شود. در مورد اپلیکیشن مثالی این راهنما یعنی وردپرس، فایلهای اپلیکیشن شامل فایلهای پیکربندی وردپرس نیز هستند که اطلاعات اتصال به پایگاه داده را نیز در برمیگیرد. همچنین فایلهای افزونههای نصب شده و فایلهای آپلود شده نیز وجود دارند. این بدان معنی است که اگر میخواهیم سرور اپلیکیشن را بازیابی کنیم، باید پشتیبانهایی از فایلهای اپلیکیشن تهیه کنیم.
از آنجا که فایلهای اپلیکیشن طوری تنظیم شدهاند که روی چندین سرور کپی شوند، در صورتی که سرورهای اپلیکیشن از کار بیفتند یا دادهها در جایی حذف شوند، تنها کافی است دادهها را از نسخههای پشتیبان بازیابی کنیم. اگر دستکم یک سرور اپلیکیشن به درستی کار کند، با وجود فایلهای اپلیکیشن صحیح و تنظیم کپی خودکار فایلها میتوانیم فایلهای صحیح را به همه سرورهای اپلیکیشن دیگر که ممکن است از کار افتاده باشند کپی کنیم.
بر اساس موجودی سرورهای اپلیکیشن، چشمانداز کلی طرح بازیابی سرور اپلیکیشن به صورت زیر خواهد بود:
پشتیبانهای مورد نیاز:
- فایلهای اپلیکیشن (در مثال ما دایرکتوری /var/www/html را شامل میشود.)
- مراحل بازیابی
- نصب و پیکربندی آپاچی و پیاچپی
- کپی فایلهای اپلیکیشن از سرور اپلیکیشنی که کار میکند
اگر فایلهای اپلیکیشن نتوانند کپی شوند (مثلاً همه سرورها از کار افتاده باشند) میتوان آنها را از نسخه پشتیبان بازیابی کرد.
اینک که چشماندازی از طرح بازیابی سرور اپلیکیشن داریم، باید جزییات مراحل بازیابی را بررسی کنیم تا مطمئن شویم که همه پشتیان های مورد نیاز را حفظ میکنیم. این بخش به عنوان تمرین بر عهده شما قرار میگیرد، چون جزییات کار بسته به نوع اپلیکیشن متفاوت خواهد بود. در مورد اپلیکیشن مثال این راهنما یعنی وردپرس میتوانید از آموزش «توزیع وب اپلیکیشنها در محیط Production» به عنوان راهنمای طراحی مراحل بازیابی استفاده کنید.
سرور توزیع بار (Load Balancer)
با پیگیری مراحل راهاندازی سرور توزیع بار که در بخش پیشین این آموزش ارائه شده، میبینیم که گامهای اساسی به صورت زیر هستند:
- دریافت گواهی SSL و فایلهای مرتبط
- نصب HAProxy
- پیکربندی HAProxy
- ریاستارت کردن HAProxy
طرح بازیابی سرور توزیع بار
با نگاهی به موجودی فوق میبینیم که سرور توزیع بار ما به جز فایلهای گواهی SSL میتواند از صفر مجدداً ایجاد شود. این بدان معنی است که در طرحی که برای بازیابی سرور توزیع بار مینویسیم، باید پشتیبانهایی از فایلهای گواهی SSL تهیه کنیم. همچنین باید از فایلهای پیکربندی HAProxy نیز پشتیبان تهیه کنیم.
بر اساس موجودی سرور توزیع بار چشمانداز کلی طرح بازیابی سرور توزیع بار به صورت زیر خواهد بود:
پشتیبانهای مورد نیاز
- فایلهای گواهی SSL و فایلهای مرتبط با آن
- فایل پیکربندی HAProxy
مراحل بازیابی
- بازیابی فایلهای گواهی SSL
- نصب HAProxy
- بازیابی فایل پیکربندی HAProxy
- ریاستارت HAProxy
اینک که این چشمانداز را برای تهیه طرح بازیابی سرور توزیع بار در دست داریم، میتوانیم جزییات و مراحل آن را طراحی کنیم تا مطمئن شویم که همه پشتیبانهای مورد نیاز را ذخیره ساختهایم. این بخش نیز به عنوان تمرینی بر عهده شما قرار داده میشود، چون الزامات هر برنامهای با اپلیکیشنهای دیگر متفاوت است. در مورد اپلیکیشن نمونه این راهنما یعنی وردپرس میتوانید به بخشهای پیشین این آموزش که سرور توزیع بار راهاندازی شده است مراجعه کنید.
ملاحظات دیگر
اگر بازیابی یکی از اجزا نیازمند پیکربندی اجزای دیگری باشد، مثلاً آدرس IP سرور پایگاه داده تغییر یابد، در این صورت باید اطمینان حاصل کنید که مراحل مناسب را در طرحهای بازیابی تدارک دیدهاید.
همچنین باید طرحهای بازیابی برای اجزای دیگری که در مجموعه کلی شما وجود دارند تهیه کنید. این اجزا شامل DNS، و همه اجزای دیگری مانند سرورهای پشتیبانگیری، نظارت و گزارشگیری است که ممکن است در آینده اضافه کنید. از آنجا که این ترکیب سرورها به طور مداوم در حال تکمیل شدن است، میبایست به تناوب طرحهای بازیابی خود را بازبینی کنید. ما در این راهنما هنوز مراحل تهیه پشتیان و بازیابی آن را بررسی نکردهایم و در بخش بعدی این کار را انجام میدهیم.
سخن پایانی
پس از آمادهسازی طرحهای بازیابی برای سرورهای مختلف میبایست این اطلاعات را در محلی قرار دهید که برای هر کسی که میخواهید بازیابی را اجرا کند در دسترس باشد و کاملاً از این مجموعه سرور اپلیکیشن جدا باشد. در بخش بعدی این راهنما اقدام به راهاندازی سرورهای پشتیبانگیری میکنیم که برای پشتیبانی از این طرحهای بازیابی الزامی هستند.
اگر این نوشته مورد توجه شما قرار گرفته است، پیشنهاد میکنیم موارد زیر را نیز ملاحظه کنید:
- مجموعه آمورشهای طراحی و برنامه نویسی وب
- ابزارها و راهکارهای مدیریت وبسایتها
- تنظیم سرورهای محیط توزیع نهایی (Production) برای وب اپلیکیشن — راهنمای مقدماتی
- انتخاب پلتفرم مناسب برای ساخت اپلیکیشن — رایانه شخصی، وب، موبایل یا کراسپلتفرم
- Node.js چیست و چه نقشی در توسعه وب دارد؟ — به زبان ساده
- مفاهیم و استراتژی های مختلف بازاریابی اپلیکیشن های موبایل
==