آموزش تنظیمات High Availability در فایروال FortiGate
آموزش تنظیمات FortiGate High Availability

FortiGate High Availability | در این آموزش میخواهیم به کمک یک سناریو به معرفی و پیاده سازی High Availability (HA) در فایروال FortiGate بپردازیم.
High availability چیست؟
High availability یا به اختصار HA در شبکه به معنی تلاش برای بالا بردن سطح دسترسی پذیری و افزایش زمان up time یک دستگاه است. یک دستگاه برای high available بودن، باید بتواند هنگام بروز مشکل، در سریعترین زمان ممکن آن را شناسایی کند و اگر یک سرویس به این دلیل از دسترس خارج شده بود، برای آن جایگزینی داشته باشد و تا زمان رفع مشکل به درخواستهای کاربران پاسخ بدهد. از آنجایی که امکان بروز یک مشکل در برنامهی در حال اجرا، یا برای سرورهای سرویسدهنده همیشه وجود دارد، عملن مدت زمان uptime سرویسها هیچوقت 100% نخواهد بود. ولی هرچه این مقدار به 100 نزدیکتر باشد به این معنی است که سرویس ارایه شده پایدارتر است.
یکی از راههای پیادهسازی HA، استفاده از redundancy یا افزونگی است. به این معنی که برای هر سرویس ارایه شده، حداقل دو پشتیبان وجود داشته باشد. شیوهی توزیع ترافیک بین دو پشتیبان میتواند متفاوت باشد. در یکی از معماریها به نام active-active، هر دو پشتیبان به طور همزمان ترافیک ورودی و درخواستهای کاربران را دریافت میکنند و زمانی که یکی از آنها به هر دلیلی از دسترس خارج شود، تمام ترافیک تا زمانی که اشکال به وجود آمده برطرف شود، به پشتیبان دوم ارسال میشود. در مقابل، در معماری active-passive، در شرایط عادی تنها یکی از پشتیبانها درخواستها را دریافت میکند و پشتیبان دیگر در زمان بروز مشکل، جایگزین آن میشود.
با استفاده از افزونگی از به جود آمدن تک نقطهی شکست یا SPOF (single point of failure) جلوگیری میشود. وجود SPOF به معنی ساختار/سیستم/دستگاهی است که هیچ جایگزینی ندارد و اگر از دسترس خارج شود، برای مدتی سرویسی که ارایه میکند، قطع میشود. برای نمونه، شبکهای از سرورها را در نظر بگیرید که در آن یک فایروال وظیفهی کنترل ترافیک ورودی را برعهده دارد. اگر فایروال برای مدتی خاموش شود، احتمالن سرورها قادر به دریافت ترافیک ورودی یا حتا ارسال بسته نیستند و اگر چنین اتفاقی رخ دهد، حمله کردن به این سرورها بسیار راحتتر از قبل خواهد بود.
چرا high available بودن اهمیت دارد؟
همانطور که پیشتر بیان شد، HA بودن یک سرویس سبب میشود حتا در زمان بروز مشکلهای غیرقابل پیشبینی، سرویس دادن به کاربران همچنان ادامه داشته باشد.
در رابطه با ذخیره کردن اطلاعات و نگهداری پایگاههای داده، این موضوع اهمیت بیشتری پیدا میکند. زمانی که یک سرویس دچار مشکل میشود، تا هنگامی که مشکل برطرف شود، به درخواستهای کاربران پاسخ داده نمیشود. ولی زمانی که یک پایگاه داده از دسترس خارج میشود یا عملکردی مانند قبل ندارد، احتمالن اطلاعات و دادههای کاربران تا زمان رفع مشکل ذخیره نخواهند شد. مشکل اساسیتر هنگامی اتفاق میافتد که تمام دادههایی که روی یک حافظه وجود دارند، از بین بروند. در این شرایط اگر این اطلاعات روی هیچ حافظهی دیگری وجود نداشته باشند، به طور کلی از بین میروند و شاید دیگر قابل برگشت نباشند.
چگونه میتوان HA را پیادهسازی کرد؟
از آنجایی که امکان بروز اتفاق در هر لایهای وجود دارد، باید تا حد امکان تعداد SPOFها در یک سیستم را کاهش داد. همچنین هم در لایهی شبکه و هم در لایهی کاربرد، میتوان از load balancer ها استفاده کرد. Load balancer ها ترافیک را بین دستگاههای سرویسدهنده پخش میکنند و اگر یک دستگاه از دسترس خارج شود، ترافیک آن را به دستگاههای جایگزین ارسال میکنند. گاهی اتفاقات لایهی سختافزار، مانند قطع شدن برق یک سرور، میتواند باعث ایجاد مشکل در ارایهی سرویس شود. برای جلوگیری از این مشکلات لازم است سرویسها روی سختافزارهای جداگانهای وجود داشته باشند (برای نمونه، برای یک سرویس از دو سرور جداگانه استفاده شود).
آموزش تنظیمات FortiGate High Availability

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

فایروال FW-A:
FortiGate-VM64-KVM # config sys int
FortiGate-VM64-KVM (interface) # edi port4
FortiGate-VM64-KVM (port4) # set ip 192.168.160.120 255.255.255.0
FortiGate-VM64-KVM (port4) # set allowaccess https http ssh ping
FortiGate-VM64-KVM (port4) # end
فایروال FW-B:
FortiGate-VM64-KVM # config sys int
FortiGate-VM64-KVM (interface) # edi port4
FortiGate-VM64-KVM (port4) # set ip 192.168.160.130 255.255.255.0
FortiGate-VM64-KVM (port4) # set allowaccess https http ssh ping
FortiGate-VM64-KVM (port4) # end
پس از این که تنظیمات لابراتوار را انجام دادیم میریم برای تنظیمات خود دستگاه ها به منظور HA، نکته ای که وجود داره بهتره OS هر دو دستگاه یکی باید و بهتر است هر دو دستگاه به صورت مستقیم با هم در ارتباط باشن که ما در این جا از پورت 3 روی هر دو دستگاه استفاده کردیم.
برای کانفیگ HA وارد تنظیمات و سپس قسمت System > HA می شویم، در اینجا یه مد وجود دارد:
- Standalone که یعنی HA وجود ندارد
- Active-Active که در این حالت هر دو دستگاه در حالت فعال می باشد.
- Active-Passive در این حالت یکی از فایروال ها فعال است و یکی دیگیر غیرفعال تا زمانی که فایروال اول از مدار خارج شود تا فایروال دوم جای آن را بگیرد.

ما مد Active-Active را انتخاب می کنیم، در اینجا چون میخواهیم فاروال FW-A به عنوان Master و اصلی قرار داشته باشد در قسمت Device priority عدد 255 که یعنی بالاترین اولویت را دارد قرار می دهیم.
در Cluster Settings و قسمت Group name ما یک نام و پسورد انتخاب می کنیم، این اسم و پسورد باید در هر تعداد HA که داریم یکی باشد و عملا یک کلاستر و ایجاد می کند که فورتی ها را در Group name که وارد میکنیم دسته بندی می کند.
Session pickup را نیز فعال می کنیم تا زمانی که یکی از فایروال ها قطع شد دقیقا همان Session و کاری که درحال انجام بود را ادامه دهد.
در قسمت Monitor interfaces نیز انترفیس هایی که میخواهیم مانیتور شود را وارد میکنیم و همچنین در قسمت Heartbeat interfaces هم اینترفیس که به صورت مستقیم به فروتی دوم متصل شده است را جهت ارسال پکت های Heartbeat انتخاب می کنیم.
در صورتی که میخواهید یک آی پی برای مدیریت دستگاه داشته باشید آن را در Management Interface Reservation وارد کنید ولی ما در این سناریو نیازی به آن نداشتیم.
همچنین در قسمت Unicast Heartbeat نیز میتوانید یک آدرس Unicast جهت ارسال پکت های Heartbeat قرار دهید که باز هم ما در این سناریو نیازی به آن نداریم.

بعد از OK کردن می توانید تنظیمات خود را مشاهده کنید.

حالا در فایروال دوم یعنی FW-B نیز اطلاعات را دقیقا مثل A وارد می کنیم با این تفاوت که چون میخواهیم این دستگاه به عنوان دستگاه دوم فعال باشد Device priority را روی عددی پایین تر برای مثال 64 قرار می دهیم.

بعد از این که OK بزنید ارتباط شما با دستگاه دوم FW-B قطع می شود و تمام تنظیمات شما از FW-A بر روی FW-B اعمال می شود.

بر اساس حجم تنظیماتی که دارید زمان لازم هست تا انتقال این تنظیمات به فایروال دوم و سینک شدن با هم انجام شود.

پس از این که Sync انجام شد وضعیت هر دو دستگاه سبز می شود.

نکته: در صورتی که نیاز دارید تا باقی پورت های شما هم مانیتور شود می توانید آن ها را در Monitor interfaces وارد نمایید.

حالا ما میخواهیم ارتباط HA ها و این که در زمان قطع شدن چه واکنشی نشان می دهند را تست کنیم، برای این کار همانطور که در تصاویر زیر مشخص است ما فایروال اصلی خود را FW-A را قطع می کنیم و در کمتر چند صدم ثانیه و تقریبا بدون قطع شدن ارتباط کاربر فایروال FW-B جواب کاربر را می دهد.

در تصویر زیر هم مشخص هست که زمانی که FW-A قطع شده است FW-2 به عنوان Master با همان IP فایروال FW-A فعال است.

در صورتی که فایروال FW-A شما دوباره در مدار قرار گرفت می توانید به صورت دستی نیز با دستور زیر Master را به حالت اول برگردانید البته توجه داشته باشید که این عملیات به صورت خود کار انجام می شود ولی در صورت نیاز می توان از دستور زیر هم استفاده کرد.
execute ha failover set <cluster_id>
execute ha failover unset <cluster_id>
برای مثال :
# execute ha failover set 1 Caution: This command will trigger an HA failover. It is intended for testing purposes. Do you want to continue? (y/n)y
همچنین از دستورات زیر نیز میتوانید برای HA Monitor و TroubleShooting استفاده کنید.
get system ha status
diagnose system ha status
FortiGate Failover (Active Passive)
برای حالت Active Passive نیز میتوانید ویدیوی زیر را مشاهده کنید:
امیدوارم این آموزش نیز مفید بوده باشد.
عالی