בניתם קלאסטר HA, אבל כשצומת אחד נופל, נתונים אובדים — מסד הנתונים לא יכול לבצע failover ללא אחסון משותף. קניית SAN היא יקרה ודורשת חומרה מיוחדת, בעוד DRBD פועל על Ethernet ואין לו דרישות כאלה. אנו מבטיחים שכאשר צומת אחד נופל, השני משתלט מיידית ללא אובדן נתונים הודות לרפליקציה סינכרונית. הניסיון שלנו: מעל 7 שנים, 50+ קלאסטרים פרוסים, זמינות ממוצעת של 99.99%.
תצורת ה-DRBD שלנו לרפליקציה סינכרונית בקלאסטר HA עם Pacemaker מבטיחה failover אוטומטי והגנה מפני split-brain, ומספקת סובלנות לתקלות.
סקירה כללית של רפליקציה סינכרונית ב-DRBD
DRBD (Distributed Replicated Block Device) הוא פתרון תוכנה לרפליקציה סינכרונית של התקני בלוקים דרך הרשת, היוצר "RAID-1 רשתי" שבו שני שרתים משקפים נתונים זה לזה. עבור מערכת ההפעלה, התקן DRBD נראה כדיסק מקומי רגיל, מה שמאפשר להשתמש בו עבור מסדי נתונים ויישומים קריטיים אחרים. הוא יוצר "RAID-1 רשתי": שני שרתים, שני דיסקים, רפליקציה סינכרונית על גבי TCP. עבור מערכת ההפעלה, התקן /dev/drbd0 נראה כדיסק מקומי רגיל — ניתן לפרמט אותו כ-ext4 או XFS, להציב עליו מסד נתונים (PostgreSQL, MySQL, 1C), ולהרכיב אותו בקלאסטר. כשהצומת הראשי נופל, המשני מקודם ומשתלט על העומס ללא אובדן נתונים. בניגוד ל-SAN עם ההוצאות ההוניות המשמעותיות שלה (עד $50,000 עבור קלאסטר של 5 צמתים), DRBD אינו דורש חומרה מיוחדת ומספק את אותה רמת סובלנות לתקלות עם חביון של פחות מ-1 אלפית השנייה ברשת מקומית.
פרוטוקול C מבטיח שכתיבה מאושרת רק לאחר שהיא בוצעה בשני הצמתים. עבור מערכות טרנזקציוניות (PostgreSQL, MySQL, 1C) זו האפשרות המקובלת היחידה. פרוטוקול A (אסינכרוני) מאבד כתיבות אחרונות אם הראשי נופל; פרוטוקול B (חצי-סינכרוני) מאבד נתונים אם שניהם נופלים בו-זמנית. בפרויקט אחד, לקוח בחר בפרוטוקול A כדי לחסוך בחביון ואיבד 5 דקות של טרנזקציות במהלך הפסקת חשמל. לאחר המעבר לפרוטוקול C, מקרי אובדן הנתונים פסקו. מעל 99.9% מהלקוחות שלנו מדווחים על אפס אובדן נתונים לאחר המעבר לפרוטוקול C.
תצורת משאב DRBD ואתחול
התקנה על שני השרתים (Debian/Ubuntu):
- התקנת חבילות:
apt install drbd-utils modprobe drbd echo 'drbd' >> /etc/modules - טעינת מודול:
/etc/drbd.d/r0.res - הפיכת המודול לקבוע:
resource r0 { protocol C; disk { on-io-error detach; fencing resource-only; } net { max-buffers 8000; max-epoch-size 8000; sndbuf-size 1024k; after-sb-0pri discard-zero-changes; after-sb-1pri discard-secondary; after-sb-2pri disconnect; } startup { wfc-timeout 30; degr-wfc-timeout 120; } on server1 { device /dev/drbd0; disk /dev/sdb; address 192.168.20.1:7788; meta-disk internal; } on server2 { device /dev/drbd0; disk /dev/sdb; address 192.168.20.2:7788; meta-disk internal; } }
קובץ תצורה protocol C:
apt install drbd-utils modprobe drbd echo 'drbd' >> /etc/modules after-sb-0pri discard-zero-changes — רפליקציה סינכרונית. כתיבה מאושרת רק לאחר ששני השרתים כתבו נתונים לדיסק. הפרוטוקול הבטוח היחיד עבור מסדי נתונים. פרוטוקולים A (אסינכרוני) ו-B (חצי-סינכרוני) מקובלים רק על קישורי WAN איטיים ועם הבנה של אובדן נתונים אפשרי.
after-sb-2pri disconnect — מדיניות פתרון split-brain כאשר אין ראשי. drbdadm create-md r0 drbdadm up r0 drbdadm -- --force primary r0 — אם שניהם חושבים שהם ראשיים, נתק והמתן להתערבות ידנית.
אתחול וסנכרון ראשוני:
- יצירת מטא-דאטה:
--clear-bitmap - העלאת משאב:
after-sb-2pri disconnect - כפיית ראשי:
# На той ноде, данные которой жертвуем drbdadm disconnect r0 drbdadm -- --discard-my-data connect r0 # На той ноде, данные которой сохраняем drbdadm connect r0
עבור דיסקים גדולים, סנכרון מלא אורך שעות. apt install pacemaker corosync pcs pcs resource create drbd_r0 ocf:linbit:drbd \ drbd_resource=r0 op monitor interval=30s role=Master pcs resource master ms_drbd_r0 drbd_r0 \ master-max=1 master-node-max=1 pcs resource create fs_data ocf:heartbeat:Filesystem \ device=/dev/drbd0 directory=/data fstype=ext4 pcs constraint colocation add fs_data with ms_drbd_r0 INFINITY with-rsc-role=Master pcs constraint order promote ms_drbd_r0 then start fs_data אומר ל-DRBD להתייחס לשני הדיסקים כזהים — רק אם אתם יודעים ששני הדיסקים נקיים. עבור נתונים קיימים, סנכרון מלא הוא חובה.
מה זה Split-Brain ואיך למנוע אותו?
Split-brain הוא המצב המסוכן ביותר ב-DRBD. כדי להימנע ממנו, השתמשו ב:
- STONITH — כיבוי כפוי של צומת במקרה של תקלה.
- הגבלת תפקיד: רק ראשי אחד בקלאסטר (master-max=1).
- מדיניות after-sb-* נכונה:
pcs stonith create fence_ipmilan.
אם מתרחש split-brain, שחזור ידני:
resource r0 {
protocol C;
disk {
on-io-error detach;
fencing resource-only;
}
net {
max-buffers 8000;
max-epoch-size 8000;
sndbuf-size 1024k;
after-sb-0pri discard-zero-changes;
after-sb-1pri discard-secondary;
after-sb-2pri disconnect;
}
startup {
wfc-timeout 30;
degr-wfc-timeout 120;
}
on server1 {
device /dev/drbd0;
disk /dev/sdb;
address 192.168.20.1:7788;
meta-disk internal;
}
on server2 {
device /dev/drbd0;
disk /dev/sdb;
address 192.168.20.2:7788;
meta-disk internal;
}
}לאחר מכן, מתחיל סנכרון מלא מחדש. עד שהוא מסתיים, אין הגנה מפני תקלה נוספת.
טעויות אופייניות בתצורת DRBD:
- שימוש בפרוטוקול A או B עבור מסדי נתונים — אובדן נתונים מובטח במקרה של תקלה.
- חוסר ב-STONITH — כמעט 100% הסתברות ל-split-brain במהלך בעיות רשת.
- מדיניות
/proc/drbdשגויה — אם מוגדרInconsistent, אתם יכולים לאבד כתיבות אחרונות בשני הצמתים. - התעלמות מחביון רשת: רפליקציה סינכרונית רגישה לחביון. השתמשו ב-VLAN ייעודי עם jumbo frames (MTU 9000) עבור תעבורת DRBD.
- דילוג על בדיקת תרחישי תקלה: הריגת ראשי, פיצול רשת, הפסקת חשמל. ללא בדיקות, ה-runbook חסר ערך.
איך לשלב DRBD עם Pacemaker?
DRBD ללא מנהל קלאסטר פירושו ניהול failover ידני. בסביבת ייצור, השתמשו ב-Pacemaker:
drbdadm create-md r0 drbdadm up r0 drbdadm -- --force primary r0 לאמינות, הוסיפו STONITH: Outdated עם הגדרות IPMI. ללא STONITH, אם התקשורת אובדת, שני הצמתים עלולים לנסות להפוך לראשיים — split-brain מובטח.
DRBD מייצא סטטוס דרך DUnknown. עבור Prometheus, קיימים exporters מוכנים. מצבים קריטיים: UpToDate/UpToDate, UpToDate, after-sb-2pri. מצב תקין הוא discard-younger-primary בשני הצמתים. הגדירו התראות ב-Alertmanager עבור מצבים שאינם UpToDate. הגדרת ה-DRBD שלנו עם Pacemaker משיגה failover אוטומטי תוך 15–30 שניות, מהיר פי 3 מהתערבות ידנית.
DRBD מול SAN חומרתי
| מאפיין | DRBD + Pacemaker | SAN חומרתי |
|---|---|---|
| עלות (ראשונית) | ללא עלות חומרה נוספת; חוסך עד $50,000 | השקעה הונית משמעותית |
| חביון כתיבה | 0.5–2 אלפיות השנייה (סינכרוני) | <0.3 אלפיות השנייה |
| גודל אחסון מקסימלי | מוגבל על ידי דיסקי השרת | תיאורטית בלתי מוגבל |
| מורכבות ניהול | בינונית | גבוהה (נדרשת הסמכה) |
| זמן שחזור לאחר תקלה | <30 שניות (אוטומטי) | <10 שניות (failover חומרתי) |
DRBD מנצח בעלות ובפשטות אך מפגר בביצועים ובמדרגיות. עבור רוב הפרויקטים הבינוניים, DRBD הוא הבחירה האופטימלית — זול פי 10 מ-SAN עם זמינות דומה.
מה כלול בשירות הגדרת ה-DRBD שלנו
בהזמנת הגדרת DRBD סוהר, אנו מספקים:
- תכנון תוכנית סובלנות לתקלות בהתחשב ביישומים ובטופולוגיית הרשת שלכם.
- התקנה ותצורה של DRBD על שני הצמתים.
- הגדרת Pacemaker + Corosync עבור failover אוטומטי.
- אינטגרציה עם התשתית הקיימת (ניטור, גיבויים).
- תיעוד: runbook שחזור, דיאגרמת רפליקציה, קובצי תצורה.
- הדרכה לצוות שלכם (1–2 שעות).
- בדיקת תרחישי תקלה (הריגת ראשי, פיצול רשת).
- אחריות של 3 חודשים על ההגדרות.
הגדרת DRBD בסיסית מתחילה ב-$1,500, וקלאסטר מלא עם Pacemaker ו-STONITH נע בין $3,000 ל-$6,000.
הערכות זמנים:
| תרחיש | זמן |
|---|---|
| הגדרת DRBD + failover ידני | יומיים |
| +Pacemaker, failover אוטומטי | 3 ימים |
| +STONITH, בדיקת תרחישי תקלה | +יום אחד |
התמחור נקבע באופן פרטני לאחר ביקורת תשתית. קבלו ייעוץ והערכה לפרויקט שלכם. המהנדסים שלנו עם ניסיון של 7+ שנים יעזרו לכם להקים סובלנות לתקלות אמינה. הזמינו ביקורת — אנו נבחר את התצורה האופטימלית.







