تصویر شاخص F5 Load Balancer
وقتی F5 BIG-IP را فقط به چشم یک لودبالانسر ساده ببینیم، معمولاً طراحی در همان چند pool و virtual server خلاصه میشود. اما در عمل، پایداری سرویس بیشتر از هر چیز به چند تصمیم کوچک بستگی دارد: health monitor درست، انتخاب persistence مناسب، SSL profile تمیز، و اینکه بدانیم در زمان خطا دقیقاً از کجا باید شروع کنیم.
این نوشته قرار نیست آموزش کلیکبهکلیک F5 باشد. بیشتر یک چکلیست فنی است برای زمانی که میخواهیم یک سرویس وب را پشت F5 BIG-IP LTM قرار بدهیم و بعداً درگیر قطعیهای مبهم، sessionهای گمشده یا pool memberهایی که ظاهراً up هستند ولی سرویس واقعی کار نمیکند نشویم.
خیلی وقتها برای یک وبسرویس، فقط یک TCP monitor ساده میگذارند. نتیجه این میشود که F5 پورت ۴۴۳ یا ۸۰ را باز میبیند و member را up نگه میدارد، در حالی که اپلیکیشن پشت آن ممکن است خطای ۵۰۰ بدهد، صفحه login بالا نیاید، یا backend به دیتابیس وصل نباشد.
برای سرویسهای HTTP/HTTPS بهتر است health monitor حداقل یک URL واقعی را تست کند؛ نه الزاماً سنگینترین صفحه، ولی چیزی که معنیدار باشد. مثلاً:
GET /health HTTP/1.1rnHost: app.example.comrnConnection: Closernrn اگر اپلیکیشن endpoint مخصوص health ندارد، بهتر است با تیم نرمافزار هماهنگ شود و یک endpoint سبک ساخته شود. این endpoint نباید فقط وبسرور را چک کند؛ باید حداقل وابستگیهای اصلی سرویس را هم در حد قابل قبول بررسی کند.
در مانیتورهای HTTP/HTTPS، فقط ارسال request کافی نیست. بهتر است response هم بررسی شود. مثلاً اگر صفحه health باید عبارت OK یا status مشخصی برگرداند، همان را در receive string بگذاریم. این کار جلوی خیلی از false positiveها را میگیرد.
Send String: GET /health HTTP/1.1rnHost: app.example.comrnConnection: Closernrn
Receive String: OK اگر برنامه گاهی redirect میدهد، صفحه maintenance دارد، یا خروجی health آن دقیق نیست، باید همان ابتدا مشخص شود. وگرنه روز حادثه F5 را متهم میکنیم، در حالی که monitor از اول درست طراحی نشده بوده.
برای بعضی سرویسها persistence لازم است، برای بعضیها نه. مشکل از جایی شروع میشود که برای هر سرویس، بدون فکر کردن، source address persistence میگذاریم. پشت NAT یا proxy، تعداد زیادی کاربر ممکن است با یک IP دیده شوند و همین باعث میشود load balancing عملاً به چند member محدود شود.
برای انتخاب persistence باید اول بفهمیم state برنامه کجاست:
یکی از کاربردهای مهم F5، terminate کردن TLS روی خود BIG-IP است. این کار هم performance و هم مدیریت certificate را بهتر میکند، ولی فقط وقتی که profileها تمیز طراحی شده باشند.
برای SSL profile بهتر است چند چیز روشن باشد:
در محیطهایی که سرویسهای زیادی پشت F5 هستند، نامگذاری profileها خیلی مهم است. اسمهایی مثل clientssl_prod_app1_2026 شاید ساده به نظر برسند، ولی چند ماه بعد در زمان troubleshooting واقعاً کمک میکنند.
روش پیشفرض برای همهچیز جواب ایدهآل نیست. Round Robin ساده است، ولی برای memberهایی که ظرفیت متفاوت دارند یا requestها هموزن نیستند، همیشه بهترین انتخاب نیست.
قبل از تغییر method، بهتر است رفتار واقعی connectionها و response time بررسی شود. تغییر بدون مشاهده، بیشتر شبیه حدس زدن است تا مهندسی.
برای troubleshooting بهتر است از مسیر ساده شروع کنیم:
tmsh show ltm virtual /Common/vs_app
tmsh show ltm pool /Common/pool_app members
tmsh show ltm monitor
tmsh show sys connection cs-server-addr <client-ip> اگر memberها up هستند ولی کاربر خطا میگیرد، مانیتور را دوباره بررسی کنید. اگر فقط بخشی از کاربران مشکل دارند، persistence و NAT مسیر را ببینید. اگر SSL خطا میدهد، certificate chain، SNI و client/server SSL profile را جدا بررسی کنید.
در طراحی درست، F5 نقطهای است که میتواند دید خوبی از وضعیت سرویس بدهد: health، ترافیک، session، SSL، خطاها و گاهی حتی رفتار برنامه. برای همین در کنار فایروالهایی مثل فورتیگیت، Cisco Firepower و راهکارهای WAF مثل FortiWeb، نقش F5 در پایداری سرویسهای دیتاسنتری جدی است.
اگر این بخش خوب طراحی شود، هم قطعی کمتر میشود، هم زمان عیبیابی پایین میآید. اگر بد طراحی شود، F5 خودش تبدیل به جایی میشود که همه موقع حادثه به آن شک میکنند.
در امنیت شبکه معمولاً همه حواسها میرود سمت سرورها، آنتیویروس، کاربران، ایمیل و حملات فیشینگ.…
معرفی ابزار پایتونی FortigateToJuniper برای تبدیل اولیه policyها، objectها و address groupهای FortiGate به دستورهای…
اگر کار ما فقط وصل کردن چند کابل و نوشتن چند دستور روی روتر بود،…
وقتی میخواهیم فایروال، IPS یا یک تجهیز امنیتی لبه شبکه بخریم، معمولاً اولین چیزی که…
CentOS 7 سالها یکی از انتخابهای رایج برای سرورهای لینوکسی بود؛ مخصوصاً در محیطهایی که…
هاردنینگ یعنی کم کردن سطح حمله. نه با یک دستور جادویی، نه با نصب یک…