شب ۲۹: عیبیابی و بازیابی پس از بحران¶
بخش ۲۹ از مجموعهٔ آموزش Traefik در ۳۰ شب؛ هر جلسه برای ۶۰ تا ۹۰ دقیقه مطالعه، تمرین عملی، بررسی نتیجه و تمرین رفع خرابی طراحی شده است. مثالها مطابق منبع با Traefik Proxy v3.7 نوشته شدهاند؛ برای محیط عملیاتی نسخهٔ اصلاحی آزمودهشده یا digest مشخصی را ثابت کنید. تمرینها را روی میزبان یا کلاستر آزمایشگاهی اجرا کنید.
فهرست کامل دورهٔ ترافیک در ۳۰ شب
هدفهای یادگیری¶
- عیبیابی از کلاینت به داخل بدون پرش از لایهها.
- نگاشت نشانههای HTTP و TLS به دامنههای احتمالی خرابی.
- بازیابی وضعیت مطلوب و دادهٔ گواهی و سپس اثبات بازیابی سرویس.
تمرین عملی: مراحل بررسی رخداد¶
client → DNS → address/port/firewall → TLS/SNI → entrypoint
→ router/rule/priority → middleware → service → endpoint/network → app
date -u
dig +short whoami.example.test A
ip route get TARGET_IP
nc -vz TARGET_IP 443
openssl s_client -connect TARGET_IP:443 -servername whoami.example.test \
-showcerts -verify_return_error </dev/null
curl -sv --connect-timeout 3 --resolve whoami.example.test:443:TARGET_IP \
https://whoami.example.test/
ss -s
بررسیهای صفحهٔ کنترل پلتفرم:
docker compose ps && docker compose logs --since=10m traefik
docker service ps edge_traefik --no-trunc && docker service logs --since=10m edge_traefik
nomad job status traefik && nomad service info whoami
kubectl -n traefik get pod,svc,endpointslice && kubectl -n traefik logs deploy/traefik --since=10m
# Incident evidence template
started_utc: 2026-01-01T00:00:00Z
impact: "requests to HOST returned STATUS"
last_known_good: VERSION_OR_COMMIT
changes: []
layer_tests:
dns: pass
tcp: pass
tls: fail
router: unknown
working_hypothesis: certificate chain missing intermediate
rollback_decision: pending
راهنمای نشانهها:
| نشانه | بررسی را از اینجا آغاز کنید |
|---|---|
| پایان مهلت یا رد اتصال | listener، انتشار پورت، سلامت متعادلکنندهٔ بار، فایروال و مسیریابی |
| هشدار TLS یا خطای نام و اعتماد | SNI، SAN، زنجیرهٔ کامل، TLSOption و ساعت |
| 404 | entrypoint، Host و Path، اولویت و مالکیت class یا ارائهدهنده |
| 401/403 | احراز هویت، فهرست مجاز، هویت ارسالشده و ترتیب میانافزار |
| 421 | عدم تطابق SNI و Host یا رفتار TLS سختگیرانه و اتصال چنددامنهای |
| 429 | میانافزار نرخ و همزمانی و مدل IP مبدأ |
| بستهشدن اتصال توسط کلاینت، شبیه 499 | مهلت یا لغو کلاینت یا متعادلکنندهٔ بار |
| 502 | endpoint وجود دارد اما اتصال، پروتکل یا پورت شکست میخورد |
| 503 | سرور سالم یا در دسترس نیست، مدارشکن باز است یا وضعیت آمادگی مانع سرویسدهی است |
| 504 | اتصال یا پاسخ پشتصحنه از مهلت مجاز دیرتر بوده است |
تمرین بازیابی¶
- تنظیمات مطلوب را از commit امضاشده یا بازبینیشده یا بستهٔ بایگانیشده بازیابی کنید.
- secret و گواهی را از پشتیبان رمزگذاریشده با مالک و مجوز اصلی برگردانید.
- روی میزبان یا کلاستر آزمایشگاهی پاک، وضعیت را با وضعیت مطلوب تطبیق دهید.
- ابتدا اشیای صفحهٔ کنترل و سپس HTTP و HTTPS آزمایشی و مشاهدهپذیری را بررسی کنید.
- هر اعتبارنامهٔ افشاشده هنگام عیبیابی را بچرخانید.
- خط زمانی، شرایط مؤثر و یک اقدام پیشگیرانه با مسئول مشخص ثبت کنید.
هرگز وضعیت زنده را برای «آزمایش» حذف نکنید. خرابی قابلبازگشت تزریق کنید: قاعدهٔ Host نادرست در آزمایشگاه، صفرکردن تعداد پشتصحنهٔ آزمایشگاهی، ایمیج canary ناموفق، مسدودکردن شبکهٔ آزمایشگاه یا گواهی موقت منقضی.
نکتههای عیبیابی¶
- هر بار یک متغیر را تغییر دهید و برای هر مشاهده زمان ثبت کنید.
- پیش از حذف لاگ و رویداد با restart یا پاکسازی زمانبند، آنها را حفظ کنید.
- وقتی اثر روی کاربر از آستانهٔ اعلامشده گذشت، بازگشت به نسخهٔ سالم شناختهشده را ترجیح دهید.
- هنگام ارجاع به سطح پشتیبانی بالاتر، خروجی کلاینت، وضعیت صفحهٔ کنترل، تغییرات اخیر و خط زمانی دقیق ارائه کنید.
خودآزمایی¶
- تفاوت معمول 404 و 502 در Traefik چیست؟ 404: مسیریاب قابلاستفادهٔ منطبق نیست؛ 502: مسیریاب منطبق است اما اتصال یا پروتکل بالادستی شکست خورده است.
- چرا از کلاینت شروع میکنیم؟ زنجیرهٔ واقعی وابستگی را میآزماید و مانع تمرکز محدود بر صفحهٔ کنترل میشود.
- چه زمانی بازیابی کامل است؟ وقتی سرویس از بیرون تأیید شده، نشانهها پایدارند و وضعیت بازیابی و ایمن شده است.
- اثبات کنید: در هر یک از لایههای TLS، مسیریاب و پشتصحنه خرابی تزریق کنید و بدون داشبورد تشخیص دهید.