GH GambleHub

استراتژی های DR و RTO/RPO

1) اصول اساسی

1. اهداف قبل از وسیله ابتدا RTO/RPO و سناریوهای بحرانی را فرموله می کنیم، سپس تکنولوژی را انتخاب می کنیم.

2. تقسیم بندی بر اساس اهمیت همه خدمات نیاز به «طلا» ؛ تقسیم بر اساس انتقاد تجاری

3. سازگاری، تکرار، تشخیص فساد و نقطه بازیابی مهم تر از سخت افزار است.
4. اتوماسیون و قابلیت اطمینان DR بدون IaC، تست های رگرسیون بازیابی و تله متری بی معنی است.
5. آموزه ها و شواهد یک برنامه بدون «روز بازی» منظم، توهم آمادگی است.
6. ایمنی و انطباق رمزگذاری، جداسازی، پشتیبان گیری WORM/تغییر ناپذیر، DPA/حوزه های قضایی.

2) شرایط و مکاتبات

RTO - زمان از لحظه رویداد تا زمانی که سرویس «عادی» بازگردانده شود.
RPO «سن» آخرین نقطه داده سالم در بازیابی است.
RLO (Recovery Level Objective): سطح عملکردی که باید بازسازی شود (حداقل سرویس قابل قبول).
MTD (حداکثر خرابی قابل تحمل) - آستانه ای که پس از آن کسب و کار آسیب غیر قابل قبول را متحمل می شود.
RTA/RPA (واقعی) - زمان واقعی/نقطه بازیابی از شیوه.

ارتباطات: RTO ≤ MTD ؛ RPA ≤ RPO شکاف بین اهداف و واقعیت موضوع پس از مرگ و بهبود است.

3) کلاس های استراتژی DR (سطح آمادگی)

سطح بندیتوضیحات محصولنمونه RTO/RPOهزینه هانرم افزار
پشتیبان گیری/بازیابیفقط پشتیبان گیری و تصویر محیط زیستRTO: ساعت روز، RPO: ساعت$سیستم های غیر بحرانی، گزارش دهی
نور خلبان«جرقه»: حداقل پشته مطرح شده است، داده ها تکرار شده استRTO: ده ها دقیقه ساعت، RPO: دقیقه ساعت$$متوسط بحرانی، پس انداز
آماده به کار گرمپایه گرم: تقریبا آماده، بار کمRTO: دقیقه - <ساعت، RPO: دقیقه$$$هسته B2C، دروازه های پرداخت
فعال/منفعلکلون منفعل کامل، feilover خودکارRTO: دقیقه، RPO: ثانیه دقیقه$$$$API های مهم ماموریت
فعال/فعالهر دو سایت در فروشRTO≈0، RPO≈0. $$$$$SLO شدید، محصولات جهانی

قانون: حداقل سطح مناسب برای ریسک تجاری را انتخاب کنید.

4) سناریوهایی که ما از آن دفاع می کنیم

از دست دادن منطقه/ابر/مرکز داده (برق، شبکه، ارائه دهنده).
فساد داده ها/خطای اپراتور (حذف، کپی شکسته، فساد منطقی).
بدافزار/باج افزار.
نقص انتشار/پیکربندی (قطع جرم).
فروپاشی اعتیاد (KMS، DNS، اسرار، ارائه دهنده پرداخت).
رویدادهای حقوقی (مسدود کردن، ممنوعیت صادرات داده ها از حوزه قضایی).

برای هر سناریو، RTO/RPO، سطح DR، playbook، افراد مسئول را مشخص کنید.

5) استراتژی های داده (کلید RPO)

5. 1 پشتیبان گیری

کامل + افزایشی + سیاهههای مربوط به معامله (برای DB).
تغییر ناپذیر/WORM storages and offline copies («air-gapped»).
کاتالوگ پشتیبان گیری با ابرداده و امضای رمزنگاری ؛ تست برنامه ریزی شده بازیابی.

5. 2 تکرار

همزمان (RPO کم، ↑latentnost، خطر انتشار اسپویل).
ناهمزمان (تاثیر کم بر روی perf، RPO> 0 ؛ با کودک فاسد ترکیب کنید).
CDC (Change Data Capture) برای تکرار جریان و بازسازی وضعیت.

5. ۳ محافظت در برابر فساد منطقی

نسخه/» نقاط در زمان» (PITR) با یک پنجره ≥ N روز.
امضاهای ثابت (تعادل، مبالغ، chexums) تشخیص زودهنگام داده های «شکسته» هستند.
کانال های تکرار «آهسته» (تاخیر 15-60 دقیقه) به عنوان یک بافر در برابر فساد فوری.

طرح انتخاب نقطه بازیابی:
python def pick_restore_point(pitr, anomaly_signals, max_age):
healthy = [p for p in pitr if not anomaly_signals. after(p. time)]
return max(healthy, key=lambda p: p. time if now()-p. time <= max_age else -1)

6) برنامه، وضعیت، کش

لایه بدون حالت - مقیاس و راه اندازی مجدد در هر منطقه (تصویر/نمودار/مانیفست در Git).
وضعیت (DB/caches/kew): منبع حقیقت یکی از DB ها است ؛ کش ها و شاخص ها بیش از حد هستند.
Idempotence و دوباره درایو - تحویل مجدد از حوادث مجاز است; از outbox/inbox، dedup و نسخه ها استفاده کنید.

7) شبکه و نقطه ورود

GSLB/DNS-feilover: تاخیر/مبتنی بر سلامت، TTL کوتاه برای سقوط پنجره.
پروکسی Anycast/L7: IP واحد، مسیریابی بهداشت منطقه ای.
حوزه های منطقه ای و سیاست های قضایی (جغرافیایی برای PII).
فایل گواهی/KMS: زنجیرهای یدکی، کلید دوگانه.

شبه کد Feilover:
python if slo_breach("region-a") or health("region-a")==down:
route. shift(traffic, from_="region-a", to="region-b", step=20) # канарим enable_readonly_if_needed()

8) مدل عملیاتی و اتوماسیون

IaC/GitOps: زیرساخت منطقه دوم = کد، استقرار «تک دکمه».
سیاست به عنوان کد: دروازه «هیچ DR manifests/پشتیبان گیری/هشدار - بدون انتشار».
Runbooks: دستورالعمل های گام به گام و «دکمه قرمز» یکسان برای هر دو منطقه.
اسرار: اعتبارات کوتاه مدت، فدراسیون OIDC، طرح سازش/فراخوان.

دروازه (ایده):
rego package dr deny["Missing PITR ≥ 7d"] {
input. db. pitr_window_days < 7
}
deny["No restore test in 30d"] {
now() - input. db. last_restore_test > 3024h
}

9) تمرین و آزمایش (روزهای بازی)

جدول سناریو: از دست دادن پایگاه داده، «شکسته» داده ها، شکست KMS، افت منطقه، حد خروج ناگهانی.
فرکانس: سه ماهه برای ماموریت بحرانی ؛ هر شش ماه یک بار - برای بقیه.
معیارهای ورزش: RTA/RPA در مقابل اهداف، نسبت مراحل اتوماتیک، تعداد مداخلات دستی، خطاهای کتابچه راهنمای کاربر.
هرج و مرج دود در انتشار: تخریب وابستگی نباید «شکستن» مسیرهای DR.

نمونه ای از یک مینی تمرین:

T0: cut off the primary database (firewall drop)
T + 2m: GSLB shift 20% of traffic, then 100% at SLO_ok
T + 6m: checking business invariants and lag replication
T + 10m: post-drill: fixing RTA/RPA, playbook improvements

10) کتاب های بازی (قالب متعارف)

yaml playbook: "dr-failover-region-a-to-b"
owner: "platform-sre"
rto: "15m"
rpo: "5m"
triggers:
- "health(region-a)==down"
- "slo_breach(payments)"
prechecks:
- "backup_catalog ok; last_restore_test < 30d"
- "pitr_window >= 7d"
steps:
- "Announce incident; open war-room; assign IC"
- "Freeze writes in region-a (flag write_readonly)"
- "Promote db-b to primary; verify replication stopped cleanly"
- "Shift GSLB 20%→50%→100%; monitor p95/error"
- "Enable compensations and re-drive queues"
validation:
- "Business invariants (balances, duplicate_checks)"
- "Synthetic tests green; dashboards stable 30m"
rollback:
- "If db-b unhealthy: revert traffic; engage restore from PITR T-Δ"
comms:
- "Status updates each 15m; external note if SEV1"

11) معیارهای مشاهده DR

تاخیر ماکت (ثانیه)، RPO رانش (تفاوت بین هدف و RPO واقعی).
بازگرداندن SLI: زمان بهبودی سرد/گرم توسط محیط.
پوشش:٪ از خدمات با playbooks/پشتیبان گیری/PITR ≥ N روز.
نمره مته: نسبت مراحل اتوماتیک، توزیع RTA، میزان خطا.
غیر قابل تغییر:٪ از پشتیبان گیری در WORM/air-gapped.
معیارهای رویداد: طول صف/سرعت درایو مجدد پس از جعلی.

12) هزینه و تجارت آف

CapEx/OpEx: پایه گرم ارزان تر از Active/Active است، اما گران تر از نور خلبان است.
خروج: تکرار بین منطقه ای/بین ابر هزینه پول ؛ کش/فشرده سازی/تجمع محلی.
RTO/RPO در مقابل $: هر «نه» در دسترس بودن و یک دوم از RPO چندین برابر گران تر است - هماهنگ با کسب و کار.
پنجره های سبز: تکرار دسته ای - در ساعات ارزان/» سبز«.

13) ایمنی و انطباق

رمزگذاری «در حالت استراحت» و «در حال انتقال»، دامنه های KMS را بر اساس منطقه جدا می کند.
پشتیبان گیری غیر قابل تغییر، حفاظت از باج افزار: «3-2-1» (3 نسخه، 2 رسانه، 1 آفلاین)، MFA-حذف.
حوزه های قضایی: جغرافیایی برای PII، محلی سازی پشتیبان گیری، نگهداری قانونی در بالای TTL.
دسترسی به زمان: نقش موقت برای عملیات DR، ورود به سیستم حسابرسی.

14) ضد الگوهای

«بیایید بعداً یک برنامه بنویسیم» - DR بدون تمرین.
تکرار بدون محافظت در برابر فساد منطقی - بلافاصله خطا را چند برابر می کند.
یک منطقه KMS/اسرار - بدون feilover ممکن است.

پشتیبان گیری بدون بازیابی منظم - «Shredinger» دکتر

معاملات همزمان نزدیک بین مناطق، تأخیر/سقوط آبشار هستند.
بدون اولویت بندی: همان سطح DR برای همه چیز (گران و بی فایده).

15) چک لیست معمار

1. RTO/RPO/RLO تعریف شده توسط سرویس و سناریو ؟

2. داده های طبقه بندی شده: منبع حقیقت، PITR/پنجره، WORM/تغییر ناپذیر ؟

3. آیا DR (پشتیبان گیری/بازگرداندن، خلبان، گرم، A/P، A/A) در هر سرویس انتخاب شده است ؟

4. شبکه: GSLB/Anycast، گواهینامه ها/کلید ها با حاشیه، پرچم های فقط خواندنی ؟

5. برنامه: idempotence، outbox/inbox، معاملات جبران ؟

6. IaC/GitOps/سیاست به عنوان کد: یک کلیک بر روی نورد کردن منطقه دوم ؟

7. تمرین: برنامه، KPI RTA/RPA، فعالیت های پس از آموزش ؟

8. نظارت: تاخیر، RPO-رانش، بازگرداندن SLI، مته نمره، پشتیبان گیری تغییر ناپذیر ؟

9. امنیت/انطباق: دامنه های KMS، حوزه های قضایی، حقوقی ؟

10. هزینه: خروج از بودجه، پنجره های سبز، سطح اقتصادی صدا ؟

16) دستور العمل های کوچک و طرح

16. 1 PITR برای Postgres (ایده):

bash base backup daily + WAL archive pg_basebackup -D/backups/base/$ (date +% F)
archive_command='aws s3 cp %p s3://bucket/wal/%f --sse'
restore pg_restore --time "2025-10-31 13:21:00Z"...

16. 2- محافظت در برابر فساد منطقی (تأخیر در تکثیر):

yaml replication:
mode: async apply_delay: "30m" # window to roll back on corruption

16. 3 سوئیچینگ ترافیک (GSLB شبه API):

bash gslb set-weight api. example. com region-a 0 gslb set-weight api. example. com region-b 100

16. 4 بررسی ناوردا پس از feilover (pseudocode):

python assert total_balance(all_accounts) == snapshot_total assert no_duplicates(events_since(t_failover))

نتیجه گیری

DR توانایی تصمیم گیری فنی و سازمانی سریع تر از آسیب رشد می کند. RTO/RPO های واقع بینانه را شناسایی کنید، در دسترس بودن کافی را انتخاب کنید، زیرساخت ها و چک ها را خودکار کنید، به طور مرتب ورزش کنید و RTA/RPA های واقعی را اندازه گیری کنید. سپس حادثه به یک فاجعه تبدیل نمی شود، بلکه به یک حادثه کنترل شده با نتیجه قابل پیش بینی تبدیل می شود.

Contact

با ما در تماس باشید

برای هرگونه سؤال یا نیاز به پشتیبانی با ما ارتباط بگیرید.ما همیشه آماده کمک هستیم!

Telegram
@Gamble_GC
شروع یکپارچه‌سازی

ایمیل — اجباری است. تلگرام یا واتساپ — اختیاری.

نام شما اختیاری
ایمیل اختیاری
موضوع اختیاری
پیام اختیاری
Telegram اختیاری
@
اگر تلگرام را وارد کنید — علاوه بر ایمیل، در تلگرام هم پاسخ می‌دهیم.
WhatsApp اختیاری
فرمت: کد کشور و شماره (برای مثال، +98XXXXXXXXXX).

با فشردن این دکمه، با پردازش داده‌های خود موافقت می‌کنید.