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

پاسخ به این مشکل، استفاده از پیکربندی یا ساختار (HA) است. ساختار High Availability‌، رویکردی برای تعریف اجزا، ماژول‌ها یا اجرای خدمات یک سیستم است که عملکرد عملیاتی مطلوب را حتی در مواقع جریان کاری زیاد، تضمین می‌کند. اگرچه هیچ قانون ثابتی برای پیاده سازی سیستم‌های HA وجود ندارد، اما به طور کلی چند کاربرد خوب وجود دارد که باید رعایت شود تا از کمترین منابع بیشترین بهره را ببرید.

 

 

چرا به سیستم HA نیاز داریم؟

قبل از صحبت درباره موارد دیگر می‌خواهیم Downtime (زمان از کار افتادگی) را تشخیص دهیم. Downtime دوره‌ای است که سیستم (یا شبکه) شما برای استفاده در دسترس نیست یا پاسخی نمی‌دهد. زمان از کار افتادگی، می‌تواند ضررهای هنگفتی به شرکت وارد کند، زیرا با از کار افتادن سیستم‌ها، تمامی خدمات نیز متوقف می‌شود. در آگوست ۲۰۱۳‌، آمازون به مدت ۱۵ دقیقه از کار افتاد (هم سرویس وب و هم سرویس موبایل) و در نهایت بیش از ۶۶۰۰۰ دلار در دقیقه، متحمل ضرر شد. این رقم بسیار زیاد است، حتی برای شرکتی به اندازه آمازون.

هدف اصلی اجرای ساختار High Availability، این است که مطمئن شوید سیستم یا برنامه شما به گونه‌ای پیکربندی شده است که بارهای مختلف و خرابی‌های مختلف را با کمترین توقف یا بدون آن، کنترل کند. مولفه‌های متعددی به شما در دستیابی به این هدف کمک می‌کنند که ما به طور خلاصه در مورد آنها بحث خواهیم کرد.

High Availability چگونه اندازه گیری می شود؟

سازمان‌هایی که قصد استفاده کامل از زیرساخت‌های ابری را دارند نیز باید بتوانند تقاضای دسترسی ۲۴ ساعته در ۷ روز هفته را برآورده کنند. در دسترس بودن می‌تواند به عنوان درصدی از زمان موجود بودن سیستم‌ها، اندازه گیری شود.

x = (n – y) * 100 / n

n کل دقیقه‌ها در یک ماه تقویم است و y کل دقایقی است که سرویس در ماه تقویمی تعریف شده، در دسترس نیست. High Availability به سادگی به مولفه یا سیستمی گفته می‌شود که به طور مداوم برای مدت زمان طولانی و مطلوب، کار می‌کند. سطح (HA) مطلوب و استاندارد یک محصول یا سیستم، با عنوان “پنج ۹”  یا (۹۹.۹۹۹ درصد) ، شناخته می‌شود که دستیابی به این سطح تقریبا غیر ممکن است. High availability برای هر سازمانی که امیدوار است از تجارت خود در برابر خطرات ناشی از قطع سیستم محافظت کند، الزامی است. این خطرات می‌تواند منجر به از دست دادن میلیون‌ها دلار شود.

آیا واقعاً ارزش این هزینه را دارد؟

این یک واقعیت است که اجرای ساختار High availability ‌، عملکرد بالاتری را برای شما به ارمغان می‌آورد، اما هزینه زیادی هم دارد.

چگونه به High availability دست یابیم؟

حالا که تصمیم گرفتید High availability را برای کار خود برگزینید، بیایید در مورد راه‌های اجرای آن صحبت کنیم. به صورت غیر شهودی، افزودن اجزای بیشتر به سیستم به ثبات آن و دستیابی به High availability کمک نمی‌کند. در واقع ممکن است عکس این موضوع، اتفاق بیفتد، زیرا اجزای بیشتر، احتمال خرابی را افزایش می‌دهند. طراحی‌های مدرن امکان توزیع جریان کاری را در چندین مورد مانند شبکه یا Cluster فراهم می‌کنند ، که به بهینه سازی استفاده از منابع، به حداکثر رساندن خروجی، به حداقل رساندن زمان پاسخ و جلوگیری از بار اضافی هر سیستم در فرآیند معروف به توازن بار، کمک می‌کند. همچنین شامل سوئیچ به یک منبع آماده به کار مانند سرور، مولفه یا شبکه در صورت خرابی منبع فعال، معروف به سیستم‌های Failover می‌باشد.

۱. استفاده از چندین سرور برنامه:

تصور کنید که یک سرور واحد برای ارائه خدمات خود دارید و افزایش ناگهانی ترافیک منجر به قطعی آن می‌شود (یا خراب می‌شود). در چنین شرایطی، تا زمانی که سرور شما مجدداً راه اندازی شود، نمی توانید به هیچ درخواستی پاسخ دهید که این شرایط نیز به زمان از کار افتادگی معروف است.

راه حل درست این است که برنامه خود را روی چندین سرور مستقر کنید. شما باید بار را بین همه این سرورها توزیع کنید، به طوری که هیچ یک از آن‌ها بار بیش از حد نداشته باشند و در عین حال، خروجی آن‌ها بهینه باشد. همچنین می‌توانید قسمت‌هایی از برنامه خود را در سرورهای مختلف مستقر کنید. به عنوان مثال، می‌تواند یک سرور جداگانه برای مدیریت نامه‌ها یا یک سرور جداگانه برای پردازش پرونده‌های ثابت مانند تصاویر (مانند شبکه تحویل محتوا) وجود داشته باشد.

۲.مقیاس بندی پایگاه داده:

پایگاه داده‌ها، جزو محبوب ترین و شاید یکی از ساده ترین روش‌ها برای ذخیره اطلاعات کاربر هستند. باید به خاطر داشته باشید که پایگاه داده‌ها به اندازه سرورهای برنامه شما، برای خدمات مهم هستند. پایگاه داده‌ها روی سرورهای جداگانه‌ای اجرا می‌شوند (مانند Amazon RDS) و همچنین مستعد خرابی هستند. بدتر اینکه خرابی پایگاه‌های داده می‌تواند منجر به از دست رفتن داده‌های کاربر شود که می‌تواند هزینه بر باشد.

افزونگی فرآیندی است که با ایجاد سیستم‌هایی با سطح دسترسی بالا، باعث دستیابی به قابلیت تشخیص از بین رفتن و جلوگیری از خرابی علل شایع می‌شود. این امر می‌تواند با حفظ Slave حاصل شود، که در صورت خراب شدن سرور اصلی، وارد عمل شود. مفهوم جالب دیگر مقیاس گذاری پایگاه داده‌ها، تقسیم بندی کردن است. shard یک پارتیشن افقی در یک پایگاه داده است، جایی که ردیف‌های همان جدول بر روی یک سرور جداگانه اجرا می‌شود.

۳.موقعیت‌های جغرافیایی متنوع:

افزایش برنامه‌ها و سپس پایگاه داده‌ها، گامی بزرگ رو به جلو است، اما اگر همه سرورها در یک مکان فیزیکی قرار بگیرند و حادثه‌ای وحشتناک مانند یک فاجعه طبیعی بر مرکز داده‌ای که سرورهای شما در آن قرار دارند تأثیر بگذارد، چه می‌کنید؟ این اتفاق می‌تواند منجر به خرابی‌های بالقوه زیادی شود.

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

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

بهترین روش‌ها

به منظور مهار خرابی‌های سیستم و پایین نگه داشتن هر دو زمان از کار افتادگی برنامه ریزی شده و برنامه ریزی نشده، استفاده از ساختار (HA) خصوصاً برای برنامه‌هایی با عملکرد حیاتی و ضروری، بسیار توصیه می‌شود.

کارشناسان (HA) معتقدند که برای High Availability سیستم، قطعات آن باید به خوبی طراحی شده و به دقت آزمایش شوند. طراحی و اجرای بعدی یک ساختار (HA) با توجه به طیف گسترده‌ای از نرم افزارها، سخت افزارها و گزینه‌های استقرار می‌تواند کاری دشوار باشد.

با این حال، یک تلاش موفق معمولاً با الزامات تجاری کاملاً مشخص و کاملاً درک شده‌ای آغاز می‌شود. ساختار انتخاب شده باید بتواند سطح امنیتی، مقیاس پذیری، عملکرد و دسترسی را برآورده کند.

تنها راه برای تضمین محیط‌های محاسباتی و داشتن سطح مطلوب تداوم عملیاتی در ساعات، تولید و طراحی آن‌ها با ساختار HA است. علاوه بر طراحی صحیح ساختار، شرکت‌ها می‌توانند با رعایت بهترین روش‌های توصیه شده برای HA، برنامه‌های مهم آنلاین  خود را حفظ کنند.

۱. پشتیبان گیری، بازیابی و تکثیر داده‌ها

علامت مشخصه یک برنامه‌ی خوبِ محافظت از داده، که در برابر خرابی سیستم محافظت می‌کند ، پشتیبان گیری صحیح و استراتژی بازیابی آن است. داده‌های ارزشمند هرگز نباید بدون پشتیبان گیری مناسب، تکثیر یا توانایی بازیابی داده‌ها ذخیره شوند. هر مرکز داده ای باید از قبل برای از بین رفتن یا نابودی داده‌ها، برنامه ریزی کند. خطاهای داده‌ای ممکن است باعث ایجاد مشکلات احراز هویت مشتری، آسیب رساندن به حساب‌های مالی و متعاقباً اعتبار جامعه کسب و کار شود. استراتژی توصیه شده برای حفظ یکپارچگی داده‌ها، ایجاد پشتیبانی کامل از پایگاه داده اصلی و سپس آزمایش سرور مرجع برای خرابی داده‌ها است. پشتیبان گیری کامل را در خط مقدم بازیابی خرابی سیستم، ایجاد کنید.

۲. Clustring

حتی با بالاترین کیفیت مهندسی نرم افزار، تمامی سرویس‌های برنامه در بعضی مواقع از کار می‌افتند. High availability‌ به طور کلی در مورد ارائه خدمات برنامه، بدون در نظر گرفتن خطا است. Clustring می‌تواند در صورت بروز خطا، خدمات فوری خرابی برنامه را ارائه دهد. سرویس برنامه‌ای که مجهز به ” آگاهی از Cluster ” است، می‌تواند از چندین سرور، منابع را فراخوانی کند و اگر سرور اصلی آفلاین شود، به سرور ثانویه بازمی‌گردد. یک Cluster (خوشه) High availability شامل چندین گره است که اطلاعات را از طریق شبکه حافظه مشترک داده‌ای، به اشتراک می‌گذارند. این بدان معناست که می‌توان هر گره را از شبکه جدا یا خاموش کرد و بقیه Cluster به طور عادی به کار خود ادامه دهند، البته تا زمانی که حداقل یک گره به طور کامل عملکرد داشته باشد. هر گره می‌تواند به صورت جداگانه ارتقا یابد و هنگام کار Cluster دوباره به آن متصل شود. با راه اندازی یک Cluster مجازی که از منابع سخت افزاری موجود، استفاده می‌کند، می‌توان هزینه بالای خرید سخت افزار اضافی برای پیاده سازی یک Cluster را کاهش داد.

۳. توازن بار شبکه

توازن بار راهی موثر در افزایش دسترسی برنامه‌های حیاتی تحت وب است. هنگامی که موارد خرابی سرور شناسایی می‌شود، ترافیک به طور خودکار در سرورهایی که هنوز در حال اجرا هستند توزیع و به صورت یکپارچه جایگزین می‌شوند. متعادل سازی بار نه تنها منجر به High availability می‌شود بلکه مقیاس پذیری افزایشی را نیز تسهیل می‌بخشد. تعادل بار شبکه را می‌توان از طریق یک مدل “فشاری-کششی” انجام داد که سطح بالاتری از تحمل خطا را در برنامه‌های خدماتی تسهیل می‌بخشد.

۴. راه حل غلبه بر خرابی

ساختار‌ High availability به طور سنتی از مجموعه‌ای از سرورهای اتصال ضعیف تشکیل شده است که دارای قابلیت خطا یا خرابی هستند. Failover در واقع یک حالت عملیاتی پشتیبان است که عملکرد مولفه‌های سیستم، زمانی که سیستم اصلی یا به دلیل خرابی و یا از کار افتادگی، آفلاین شوند از سیستم ثانویه استفاده می‌کند. یک «خرابی سرد» زمانی اتفاق می‌افتد که سرور ثانویه تنها پس از خاموش شدن کامل سرور اصلی، شروع به کار کند. “خرابی داغ” هنگامی اتفاق می‌افتد که همه سرورها همزمان فعالیت می‌کنند و بار در هر زمان به طور کامل به سمت یک سرور هدایت می‌شود. در هر دو سناریو، وظایف به طور خودکار در مولفه های سیستم آماده به کار، بارگزاری می‌شوند تا روند کار تا حد ممکن برای کاربر نهایی، باقی بماند. Failover را می‌توان از طریق DNS، در یک محیط خوب، کنترل کرد.

۵. افزونگی جغرافیایی

افزونگی جغرافیایی تنها خط دفاعی است که می‌تواند از خرابی سرویس در برابر حوادث فاجعه باری مانند بلایای طبیعی که باعث قطع سیستم می‌شود، جلوگیری کند. مانند راهکار geo-replication‌، چندین سرور در سایت‌های مجزا جغرافیایی مستقر می‌شوند. فضاها باید در سطح جهانی توزیع شوند و در یک منطقه خاص بومی سازی نشوند. اجرای برنامه‌های مستقل زیاد در هر یک از این فضاها بسیار مهم است، بنابراین در صورت خرابی در یک فضا، فضای بعدی می‌تواند به کار خود ادامه دهد. در حالت ایده آل، این فضاها نیز باید کاملاً مستقل از یکدیگر باشند.

۶. برای شکست برنامه ریزی کنید

علی رغم این واقعیت که استفاده از بهترین روش‌ها برای High availability، از برنامه ریزی‌های ضروری به هنگام برخورد با شکست است؛ اقدامات دیگری نیز وجود دارد که یک سازمان می‌تواند برای افزایش آمادگی خود در صورت خرابی سیستم و به دنبال آن وقوع زمان از کار افتادگی، اخذ کند. سازمان‌ها باید داده‌های خرابی یا مصرف منابع داده را که برای جداسازی اشکالات و تجزیه و تحلیل روندها استفاده می‌شوند، نگهداری کنند. این داده‌ها تنها از طریق نظارت مستمر بر عملیات جریان کار، قابل جمع آوری است. می‌توان در فضایی یک صفحه راهنمای بازیابی برای جمع آوری اطلاعات مربوط به اشکال‌ها، تاریخچه اشکالات و شروع سریع راه حل اشکالات، ایجاد کرد. یک برنامه اصلاحی، نه تنها باید به خوبی مستند باشد بلکه باید به طور منظم آزمایش شود تا از عملی بودن آن در هنگام برخورد با خطاهای برنامه ریزی نشده، اطمینان حاصل شود. آموزش کارکنان در زمینه مهندسی دسترسی، مهارت‌های آن‌ها را در طراحی، استقرار، حفظ  و نگهداری ساختار HA، بهبود می‌بخشد. همچنین باید سیاست‌های امنیتی برای جلوگیری از بروز قطع شدن سیستم به دلیل نقض امنیت نیز در نظر گرفته شود.

 

 

شرکت تیم‌یار نیز با ارائه این قابلیت، سعی در بستر سازی صحیح و ارائه کامل تیم‌یار ابری در سطح ملی و بین المللی را دارد و نسخه ۴ ERP تیم‌یار که قرار است تا پایان آذرماه ۱۳۹۹ ارائه شود، از قابلیت (HA) در سرویس ابری خود به طور کامل استفاده کرده است.

 

مترجم: نیلوفر نظری

منبع: getfilecloud