Arvan Blog

بلاگ

اتفاقات روزمره، اخبار مهم و دیگر مطالب ابر آروان

Open Categories
Close Categories
دسته‌بندی‌های بلاگ دسته‌بندی‌های بلاگ دسته‌بندی‌های بلاگ

Date ۱۴ شهریور ۱۳۹۶
Category مقاله‌
Avatar محمدعرفان شمسی
Date ۱۴ شهریور ۱۳۹۶
Category مقاله‌

امروزه برای تمامی افرادی که سرویسی در بستر شبکه ی جهانی اینترنت ارائه می دهدن، Availibility یا همان پایداری در ارائه سرویس دارای اولویت زیادی می باشد. فرقی نمی کند شما سایتی مانند دیجی کالا باشید که محصولاتی را در بستر اینترنت به فروش می رسانید، یا سازمانی هستید که دارای وب سایت بوده و به مشتریان خود خدمات الکترونیک ارائه می دهید. در تمامی این حالات آن چیزی که برای یک مدیر مهم می باشد، میزان پایداری سرویس ارائه شده در بستر اینترنت می باشد تا رضایت کاربران خود را فراهم کند.

طبیعی است که نیل به این هدف همیشه به راحتی امکان پذیر نیست. اولین و مهمترین دغدغه در این زمینه هزینه های گزافی می باشد که برای رسیدن به این پایداری میبایست پرداخت نمایید. مثلا می توانید با خرید 3 سرور به جای 1 سرور، سایت خود را همزمان بر روی 3 سرور جداگانه بالا بیاورید تا در صورت بروز مشکل برای هر سرور، سرور های جایگزین به ارائه ی سرویس مشغول شوند. (روش های کلاسترینگ و Load balancing )

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

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

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

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

این مشکل در ظاهر یک راه حل ساده دارد. شما می توانید هزینه کرده و یک خط دیگ اینترنت تهیه نمایید. ( که البته هزینه ی تهیه یک خط اینترنت بک آپ جداگانه برای سایت های که بازدید کنده ی زیادی دارند، بسیار زیاد خواهد بود ). اما با این حال و با فرض تهیه ی چنین خط جایگزینی، از آنجا که این خط جدید آدرس IP جدیدی نیز خواهد داشت، شما نمی توانید به راحتی از آن استفاده نمایید.

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

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

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

BGP Anycast چیست و چگونه این مشکل را حل می کند؟

قبل از اینکه به بررسی مفهوم و قابلیت های BGP Anycast بپردازیم، بهتر است مفاهیمی مانند Unicast, Multicast و Broadcast  را مرور نماییم. در شکل زیر این مفاهیم به روشنی نشان داده شده اند.

همان طور که مشاهده می کنید، Unicast به حالتی گفته می شود که یک مبدا بسته ای را برای یک مقصد ارسال نماید. Multicast به حالتی گفته می شود که یک مبدا بسته ای را برای گروهی از مقصد ها ارسال کند. و در نهایت Broadcast نیز به موردی گفته می شود که یک مبدا بسته ای به کل نود های یک شبکه که در یک Broadcast Domain قرار دارند، ارسال نماید. جدا از این مفاهیم، مفهوم دیگری به نام Anycast نیز وجود دارد که در شکل فوق شبیه به حالت Broadcast می باشد. اما در عمل این دو مفهوم کاملا با یدکدیگر متفاوت بوده و قابلیت های مختلفی نیز دارند. در ادامه به بخشی از این تفاوت ها اشاره خواهیم کرد.‍

هنگامی که شما بسته ای را در حالت Broadcast ارسال می نمایید، در حقیقت آن بسته را به آدرس FF:FF:FF:FF:FF:FF ارسال می کنید. در این حالت تمامی نود های شبکه که در آن ناحیه قرار دارند، بسته را دریافت می کنند. باید توجه داشت در این حالت هر نودی در شبکه آدرس IP منحصر به فرد خود را دارد. همچنین این پیغام به صورت پیش فرض از یک Broadcast Domain خارج نمی شود. اما در حالت Anycast این سناریو کلا متفاوت می باشد. در حالت Anycast چند مقصد وجود دارند که همگی آدرس مشابه ای دارند! ( تصور کنید سایت شما بازدید کننده ای زیادی دارد و می خواهید تعداد سرور های خود را از یک عدد به ۳ یا بیشتر ارتقا دهید. این سرور ها نیز قرار نیست در یک مکان باشند. بنابراین آدرس تمامی سرور ها باید در این سناریو یکی باشد ) حال وقتی یک مبدا اقدام به ارسال بسته ای می نماید، پیغام او به نزدیکترین گیرنده از لحاظ جغرافیایی ارسال خواهد شد و تنها آن گیرنده به درخواست جواب خواهد داد. با این کار سرعت پاسخ دهی به فرستنده نیز افزایش خواهد یافت. همچنین در صورتی که نزدیکترین گیرنده به هر دلیلی از مدار خارج شود، پیغام به مقصد بعدی ارسال خواهد شد.

قبل از ادامه بحث بهتر است نگاهی به پروتکل BGP نیز بیندازیم. در BGP هر شبکه اصطلاحا به یک AS نامگذاری می شود و سپس بین این ناحیه ها یا AS ها ارتباط و یا Peer شکل می گیرد. می توانید تصور کنید هر کشور یا شهری در دنیا یک  AS باشد و بین تمامی این AS ها ( در این سناریو هر کشور یا هر شهر ) ارتباط یا Peer برقرار می شود و به این ترتیب کل زیرساخت اینترنت شکل می گیرد.

با توضیحات فوق فکر کنید که ما قابلیت Anycast را با BGP ادغام نماییم. به این صورت که در هر کشور یا در سناریوی دقیق تر در هر شهر ( اگر به عنوان یک AS در نظر بگیریم ) یک سرور از وب سایت خود را قرار دهیم. سپس با کمک Anycast کاربران سایت خود را که در هر شهری قرار دارند، به سرور وب سایت خود در همان شهر هدایت نماییم! احتمالا می توانید تصور کنید با این کار به چه میزانی سرعت دسترسی به کاربران شما افزایش پیدا می کند و همچنین افزونگی و پایداری سایت شما نیز در برابر خرابی یک سرور افزایش چشمگیری پیدا میکند. این امکانات را در کنار امکانات دیگری مانند افزایش امنیت وب سایت، قابلیت های Caching و … نیز قرار دهید.

بنابراین  BGP Anyacst به شما اجازه می دهید دهد اصطلاحا Network Level Failover داشته باشید. یعنی سایت شما با یک آدرس واحد از مناطق مختلف در دسترس باشد و در صورتی که در یکی از مناطق سایت شما از دسترس خارج شود، کاربران بتوانند به وب سایت شما در منطقه ای دیگر متصل شده و سایت شما هیچ گاه از دسترس خارج نشود. همچنین در هر لحظه کاربران به نزدیک ترین سرور سایت شما متصل خواهند شد که این موضوع باعث افزایش دسترسی به وب سایت شما خواهد شد.

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

طبیعی است که برای این کار باید در مناطق مختلف دنیا سرور در اختیار داشته باشید و همچنین با شرکت های بزرگ اینترنتی NGP Peer داشته باشید که بسیار پر هزینه خواهد بود. این روش در واقع به نوعی روشی است که زیرساخت اینترنت جهان بر مبنای آن کار می کند.

همان طور که ملاحظه کردید، BGP Anycast قابلیت های بسیار زیادی دارد اما برای استفاده از آن نیازمند ایجاد یک زیرساخت بسیار بزرگی می باشد. به طور خلاصه شما بعد از استفاده از زیرساخت BGP Anycast باید ساختاری مشابه شکل زیر داشته باشید.

همان طور که ملاحظه می فرمایید، این روش نه تنها در تمامی بخش ها دارای قابلیت افزونگی می باشد، که توانایی افزایش سرعت دسترسی و جلوگیری از حملات تحت شبکه به وب سایت شما را نیز خواهد داشت. ما در شرکت ابرآروان مفتخریم که این زیرساخت بزرگ را به صورت کاملا بومی پیاده سازی کرده و امکان استفاده از آن را برای وب سایت ها با قیمتی بسیار مناسب فراهم آورده ایم. ما در شهرهای مختلف ایران و کشور های دیگری از جمله آمریکا، انگلستان، آلمان، ژاپن و … POP سایت هایی داریم که وب سایت شما را در تمامی این POP سایت ها قرار می دهیم تا کاربران هر ناحیه به نزدیکترین نقطه متصل شده و وب سیات شما را با سرعت بالایی مرور نماییند. همچنین در صورتی از دسترس خارج شدن وب سایت شما در یک ناحیه، کاربران به سرور دیگری متصل خواهند شد و به این ترتیب وب سایت شما هیچ گاه از دسترس خارج نخواهد شد. تمامی این قابلیت ها نیز تنها با عوض کردن آدرس NS وب سایت شما به آدرس های NS ابرآروان میسر خواهد شد و شما نیازمند انجام هیچ کار دیگری نخواهید بود. در واقع ما در ابرآروان مابین وب سایت شما و کاربرانتان قرار خواهیم گرفت و هر آن چیزی که شما به آن برای ارایه ی یک سرویس مطلوب اینترنتی احتیاج دارید، مانند سرعت و امنیت در اختیار شما قرار خواهیم داد.

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

این مقاله را با دوستان خود به اشتراک بگذارید

پاسخ به لغو
Comments نظرات