مدت زمان مطالعه:
0

High Availability یا HA در FortiWeb برای کاهش Downtime ناشی از خرابی Appliance، Interface، کابل، عملیات نگهداری یا Upgrade استفاده میشود. اما HA فقط با قرارگرفتن دو دستگاه در یک Group ساخته نمیشود؛ Firmware، License، Heartbeat، Virtual MAC، شبکه Client-side و Server-side، Health Check، Session Behavior و مسیر مدیریت هر Member باید دقیق طراحی و آزمایش شوند.
در FortiWeb چند نوع State وجود دارد که معمولاً با یکدیگر اشتباه گرفته میشوند: Configuration Synchronization، FortiWeb Session Synchronization، Layer 7 Persistence Synchronization، Backend Health Check Synchronization، TLS Session و Web Application Session. هرکدام رفتار متفاوتی در Failover دارند و فعالکردن یکی الزاماً دیگری را حفظ نمیکند.
این مقاله Modeهای Active-Passive، Standard Active-Active و High Volume Active-Active را مقایسه میکند و یک سناریوی کامل Active-Passive را با GUI و CLI، Reserved Management، تست Failover، Session Test، Split-Brain و Out-of-Sync از سطح مقدماتی تا پیشرفته توضیح میدهد.
این مقاله برای شاخه FortiWeb 7.6 نوشته شده و نسخه مبنا FortiWeb 7.6.9 است. جزئیات CLI با CLI Reference رسمی 7.6.7 و 7.6.8 تطبیق داده شدهاند. در FortiWeb 7.4 ساختار اصلی HA مشابه است، اما Health Check Synchronization و بعضی قابلیتهای Active-Active شاخه 7.6 توسعه یافتهاند. در FortiWeb 8.0 دستور Manual Failover با execute ha failover اضافه شده است؛ این دستور را برای شاخه 7.6 فرض نکنید.
مروری بر این مقاله
| خرابی یا رخداد | آیا HA FortiWeb پوشش میدهد؟ | شرط یا کنترل تکمیلی |
|---|---|---|
| خرابی سختافزار FortiWeb | بله | Member سالم، Sync و Network Redundancy |
| قطع Interface Monitorشده | بله | Monitor صحیح و کابلهای Member دوم |
| خرابی Heartbeat اصلی | در صورت Backup Link | Heartbeat Backup مستقل |
| خرابی Switch مشترک | خیر، اگر هر دو Member به همان Switch وابسته باشند. | دو Switch و مسیر مستقل |
| خرابی Backend Server | بهتنهایی خیر | Server Pool و Health Check |
| خرابی Session Store برنامه | خیر | Shared Session Store یا Application HA |
| خرابی کامل Site | خیر | DR، GSLB یا Multi-Site Design |
| خطای Configuration که Sync شده است | خیر | Revision، Backup و Change Control |
| Mode | روش کار | مزیت | محدودیت |
|---|---|---|---|
| Active-Passive | یک Primary Traffic را پردازش میکند و Secondary آماده Failover است. | سادگی، ریسک کمتر و رفتار قابل پیشبینی | ظرفیت Secondary در حالت عادی استفاده نمیشود. |
| Active-Active Standard | Primary اتصالها را میان Memberها توزیع میکند. | استفاده از ظرفیت چند Member | پیچیدگی Session Sync و Load Distribution |
| Active-Active High Volume | برای Throughput و معماری پیشرفته با VIP یا Load Balancer طراحی شده است. | مقیاسپذیری بالاتر | طراحی IP، Load Balancer و Operation Mode پیچیدهتر |
| FortiWeb Operation Mode | HA قابل استفاده |
|---|---|
| Reverse Proxy | Active-Passive، Active-Active Standard و High Volume |
| True Transparent Proxy | Active-Passive و Standard Active-Active |
| Transparent Inspection | Active-Passive |
| Offline Protection | Active-Passive |
| WCCP | Active-Passive |
| نوع State | نمونه | رفتار در HA |
|---|---|---|
| Configuration | Server Policy، Certificate، Profile | از Primary Sync میشود. |
| FortiWeb Session | Session موردنیاز برخی Featureهای FortiWeb | در Active-Active و طبق شرایط Sync میشود. |
| Application Session | Login Session داخل Application | روی FortiWeb نیست؛ به Cookie و Backend بستگی دارد. |
| TLS Session | Cipher، Key و Handshake State | Sync نمیشود؛ Re-handshake انجام میشود. |
| Persistence Mapping | کاربر به Backend شماره 2 هدایت شود. | در Active-Passive با L7 Persistence Sync |
| Health State | Backend Up یا Down | با Health Check Sync منتقل میشود. |
Primary بیشتر تنظیمات Configuration را به Secondaryها منتقل میکند. هدف این است که Member جایگزین پس از Failover همان Server Policy، Certificate، Protection Profile و Network Configuration لازم را داشته باشد.
FortiWeb Session با Session خود Web Application یکسان نیست. Login Session برنامه معمولاً با Cookie، Token یا Server-side Session Store نگهداری میشود. FortiWeb ممکن است برای Featureهایی مانند Client Management، Authentication یا Persistence State جداگانه داشته باشد.
طبق مستند Fortinet، Sessionهایی که کمتر از 30 ثانیه برقرار بودهاند Sync نمیشوند. فقط Sessionهای قدیمیتر از 30 ثانیه برای Synchronization واجد شرایطاند.
State مربوط به TLS Handshake و Session Keyها Sync نمیشود. پس از Failover، Client معمولاً TLS Session را دوباره برقرار میکند. این Re-handshake ممکن است وقفه کوتاهی ایجاد کند، اما الزاماً Login Session برنامه را از بین نمیبرد.
این قابلیت در Active-Passive استفاده میشود تا Mapping Persistence میان Primary و Secondary Sync شود. برای مثال کاربری که بر اساس Cookie Persistence به Backend شماره 2 هدایت شده است، بعد از Failover نیز به همان Backend هدایت شود.
Health Check Sync وضعیت Up یا Down بودن Backendها را از Primary به Secondary منتقل میکند. بدون این قابلیت، Member جدید بعد از Failover ممکن است برای مدت کوتاهی Health State را از ابتدا محاسبه کند.
config system ha
set hlck-sync enable
set hlck-period-sync enable
set hlck-period-timeout 600
end
execute ha synchronize health-check
Heartbeat برای تشخیص سلامت Member و انتقال Sync Data استفاده میشود. Heartbeat Traffic میتواند شامل اطلاعات حساس Configuration باشد و پهنای باند قابل توجهی مصرف کند.
کاهش بیش از حد Interval یا Threshold Failover را سریعتر میکند، اما حساسیت به Jitter، CPU Spike و Packet Loss را افزایش میدهد. مقدارهای پیشفرض یا مستند باید نقطه شروع باشند و بدون تست تغییر نکنند.
Device Priority عددی است که عدد کوچکتر اولویت بالاتری دارد. Override تعیین میکند Priority نسبت به Uptime اهمیت بیشتری داشته باشد.
| Override | رفتار عمومی | کاربرد |
|---|---|---|
| Disable | Member فعال ممکن است بعد از بازگشت Member ترجیحی Primary باقی بماند. | کاهش Failback غیرضروری |
| Enable | Member دارای Priority بهتر بعد از بازگشت میتواند Primary شود. | Preferred Primary ثابت |
Override میتواند بعد از Recovery یک Failback دوم ایجاد کند. اگر Application به تغییر Connection حساس است، ممکن است ترجیح دهید Member سالم فعلی Primary بماند تا Maintenance Window.
در Active-Passive و Standard Active-Active، Traffic Portها از Virtual MAC استفاده میکنند. هنگام Failover، Member جدید Virtual MAC را بهعهده میگیرد و ARP یا Neighbor Solicitation ارسال میکند تا Switch و Neighborها Mapping جدید را یاد بگیرند.
در Active-Passive و Standard Active-Active، بیشتر Interface Configurationها Sync میشوند. برای اینکه هر Member IP مدیریتی مستقل داشته باشد، یک Interface را Reserved Management تعریف کنید.
اگر Management Station در Subnet دیگری است، HA Static Route یا HA Policy Route لازم است. Route مدیریت Memberها Node-specific است و باید روی هر Member بررسی شود.
config system ha
set ha-mgmt-status enable
set ha-mgmt-interface "port5"
end
get system status show system interface show system ha diagnose system ha status # بررسی Interface: diagnose netlink interface list # بررسی Route: get router info routing-table all
| پارامتر | Node 1 | Node 2 |
|---|---|---|
| Hostname | FWB-HA-01 | FWB-HA-02 |
| Mode | Active-Passive | |
| Group Name | PARTIAN-FWB-HA | |
| Group ID | 10 | |
| Priority | 1 | 5 |
| Override | Enable برای Preferred Primary ثابت | |
| Heartbeat اصلی | port3 | |
| Heartbeat Backup | port4 | |
| Monitor Interface | port1 port2 | |
| Reserved Management | 10.10.10.11/24 | 10.10.10.12/24 |
| Layer 7 Persistence Sync | Enable | |
| Health Check Sync | Enable | |
در این سناریو Node 1 باید همیشه Preferred Primary باشد، بنابراین Override فعال است. اگر جلوگیری از Failback خودکار مهمتر است، Override را غیرفعال کنید.
تمام مقدارهای مشترک باید یکسان باشند. فقط Hostname، Priority و Reserved Management IP متفاوت است.
Role، Serial، Priority، Uptime، Sync Status، Interface Status و Health را بررسی کنید.
config system ha
set mode active-passive
set group-id 10
set group-name "PARTIAN-FWB-HA"
set priority 1
set override enable
set hbdev "port3"
set hbdev-backup "port4"
set hb-interval 1
set hb-lost-threshold 3
set arps 5
set arp-interval 1
set monitor "port1" "port2"
set boot-time 30
set ha-mgmt-status enable
set ha-mgmt-interface "port5"
set 17-persistence-sync enable
set hlck-sync enable
set encryption enable
set key "REPLACE-WITH-STRONG-HA-KEY"
end
config system ha
set mode active-passive
set group-id 10
set group-name "PARTIAN-FWB-HA"
set priority 5
set override enable
set hbdev "port3"
set hbdev-backup "port4"
set hb-interval 1
set hb-lost-threshold 3
set arps 5
set arp-interval 1
set monitor "port1" "port2"
set boot-time 30
set ha-mgmt-status enable
set ha-mgmt-interface "port5"
set 17-persistence-sync enable
set hlck-sync enable
set encryption enable
set key "REPLACE-WITH-STRONG-HA-KEY"
end
در Active-Active، Primary Traffic را میان Memberها توزیع میکند. Session Table بهصورت پیشفرض میتواند از Heartbeat Interface منتقل شود. در Cluster پرترافیک، تا چهار Interface جدا برای Session Sync قابل تعریف است.
config system ha
set mode active-active-standard
set group-id 20
set group-name "PARTIAN-FWB-AAS"
set hbdev "port3"
set hbdev-backup "port4"
set session-pickup enable
set session-sync-dev "port5" "port6"
set session-sync-broadcast disable
set session-warm-up 20
end
| Algorithm | رفتار | نکته |
|---|---|---|
| IP | Source مشابه را به Member مشابه هدایت میکند. | برای بعضی Session-dependent Featureها مناسبتر است. |
| Least Connection | Member با Connection کمتر انتخاب میشود. | توزیع Dynamic |
| Round-robin | Memberها به ترتیب انتخاب میشوند. | سادگی، اما Affinity کمتر |
طبق CLI Reference، بعضی قابلیتهای Session Management FortiWeb با Algorithmهای By Connections یا Round-robin محدودیت دارند. قبل از انتخاب Algorithm، Featureهایی مانند Client Management، Authentication و Cookie-based Functionها را آزمایش کنید.
در Cluster دارای Memberهای یکسان معمولاً Weight برابر استفاده میشود. اگر ظرفیت واقعی Memberها متفاوت است، اساساً Cluster Design باید بازبینی شود؛ HA Memberها بهتر است هممدل و همظرفیت باشند.
get system ha status diagnose system ha status show system ha
execute ha synchronize cli execute ha synchronize all execute ha synchronize health-check
execute ha manage # یا در Buildهایی که Syntax Index میخواهد: execute ha manage <cluster-index>
Cluster Index با Serial Number تعیین میشود. قبل از تغییر Node-specific مطمئن شوید روی Member درست قرار دارید.
| آزمون | انتظار | نتیجه قابل قبول |
|---|---|---|
| Role Change | یک Secondary Primary شود. | بدون Dual Primary |
| Virtual IP | IP بدون تغییر بماند. | ARP/ND Update سریع |
| TLS | Re-handshake | Client Recover شود. |
| Application Login | ادامه Session | به طراحی Backend بستگی دارد. |
| Persistence | Backend قبلی | در صورت L7 Sync و Backend سالم |
| Health State | Backend Down شناخته شود. | Health Check Sync صحیح |
Upgrade HA باید بر اساس Upgrade Path و Release Notes انجام شود. قبل از Upgrade موارد زیر را بررسی کنید:
| نشانه | علت محتمل | بررسی | راهحل |
|---|---|---|---|
| هر دو Member Primary هستند. | Heartbeat قطع، Key متفاوت یا Multicast Block | Cable، VLAN، Group و Debug | Heartbeat را بازیابی و Traffic را کنترل کنید. |
| Cluster تشکیل نمیشود. | Mode، Group ID، Firmware یا Model متفاوت | System Status و HA Config | مقادیر را یکسان کنید. |
| Out-of-Sync | Heartbeat Loss یا Sync Daemon | HA Status و Debug | Manual Sync یا TAC |
| Failover طولانی است. | ARP/ND یا Switch Convergence | Packet Capture و MAC Table | ARP Setting و Network را Tune کنید. |
| Failover کاذب رخ میدهد. | Heartbeat بسیار حساس، CPU High یا Packet Loss | CPU، Error Counter و HA Debug | Link و Timing را اصلاح کنید. |
| Secondary قابل مدیریت نیست. | Reserved Mgmt یا Route تنظیم نشده | Interface و HA Route | Management Interface و Route بسازید. |
| Session حفظ نمیشود. | کمتر از 30 ثانیه، Sync غیرفعال یا App Local State | Session Age و Backend Log | تست صحیح و App HA |
| Backend اشتباه انتخاب میشود. | L7 Persistence Sync یا Health Sync | Pool، Persistence و Health | Sync را فعال و تست کنید. |
diagnose system ha status diagnose debug application hatalk 7 diagnose debug enable # پس از جمعآوری: diagnose debug disable