הקמת קלאסטר RabbitMQ בזמינות גבוהה ליישומי אינטרנט

כאשר ה-broker היחיד נופל בלילה, עיבוד ההזמנות נעצר, והתראות ואינטגרציות אובדות. אנחנו פורסים קלאסטר RabbitMQ סובלני תקלות על quorum queues, כך שהמערכת יכולה לעמוד באובדן צומת ללא אובדן נתונים. הצוות שלנו מספק את הפרויקט במפתח מלא—מביקורת ועד קונפיגורציה ותמיכה שוטפת—ובכך מבטיח פעילות יציבה וסקאלינג לצד העסק שלכם.

פיתוח ותחזוקה של כל סוגי האתרים:

אתרי מידע או יישומי אינטרנט
אתרי תדמית, דפי נחיתה, אתרי חברה, קטלוגים מקוונים, חידונים, אתרי קידום, בלוגים, מקורות חדשות, פורטלי מידע, פורומים, אגרגטורים
אתרי מסחר אלקטרוני או יישומי אינטרנט
חנויות מקוונות, פורטלי B2B, שווקים, בורסות מקוונות, אתרי קאשבק, בורסות, פלטפורמות דרופשיפינג, מנתחי מוצרים
יישומי אינטרנט לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, פורטלים ארגוניים, מערכות ניהול ייצור, מנתחי מידע
אתרי שירות אלקטרוני או יישומי אינטרנט
פלטפורמות מודעות, בתי ספר מקוונים, בתי קולנוע מקוונים, בוני אתרים, פורטלים לשירותים אלקטרוניים, פלטפורמות אירוח וידאו, פורטלים נושאיים

אלה רק חלק מהסוגים הטכניים של אתרים שאנו עובדים איתם, ולכל אחד מהם יכולים להיות מאפיינים ופונקציונליות ספציפיים משלו, וכן ניתן להתאים אותם לצרכים ולמטרות הספציפיים של הלקוח.

השירותים שאנו מציעים
מציג 1 מתוך 1כל 2062 השירותים
הקמת קלאסטר RabbitMQ בזמינות גבוהה ליישומי אינטרנט
מורכב
~3-5 ימים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1365
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113
  • פיתוח אתר עבור SBH Partners
    פיתוח אתר עבור SBH Partners
    1201
  • פיתוח אתר עבור Red Pear
    פיתוח אתר עבור Red Pear
    619

תארו לעצמכם שבלילה ברוקר ההודעות היחיד שלכם נופל — כל עיבוד ההזמנות נעצר. הודעות אובדות, אינטגרציות נשברות. ללא קלאסטר, עד 30% מההודעות אובדות במהלך תקלה. אנו מונעים זאת על ידי פריסת קלאסטר תלת-צומתי עמיד לתקלות עם תורי קוורום. המערכת עומדת באובדן של כל צומת בודד ללא אובדן של הודעה אחת. קלאסטר מוגדר כראוי פועל שנים ללא בעיות — מוכח בייצור עם עומס של 10K הודעות/שנייה. החיסכון בתקציב בהשוואה לפתרונות מסחריים של RabbitMQ ברור.

אנו מגדירים קלאסטרים של RabbitMQ כבר למעלה מ-7 שנים, השלמנו 30+ פרויקטים למסחר אלקטרוני ופינטק. בפרויקט אחד לפלטפורמת פינטק גדולה, פרסנו קלאסטר חמישה-צמתים המעבד עד 50K הודעות/שנייה עם אספקה מובטחת. הניסיון שלנו עוזר להימנע ממלכודות קלאסטר טיפוסיות.

קלאסטר RabbitMQ משתף אוטומטית מטא-דאטה בין כל הצמתים. תורי קוורום, המבוססים על פרוטוקול Raft, מבטיחים עקביות נתונים גם במהלך פיצולי רשת. לייצור, זו הבחירה היחידה.

אילו בעיות אנו פותרים

  • אובדן הודעות בכשל צומת. ללא קלאסטר, הודעות בזיכרון של צומת שנכשל אובדות. תורי קוורום משכפלים נתונים באופן סינכרוני דרך Raft, ומבטיחים אספקה גם אם צומת אובד.
  • מורכבויות בסנכרון עוגיות Erlang. שגיאה בעוגיות Erlang זהות היא סיבה נפוצה לכשל בקלאסטר. אנו הופכים את הסנכרון לאוטומטי דרך Ansible או בודקים אותו ידנית.
  • צורך באיזון עומסים לזמינות גבוהה. ללא HAProxy או Nginx, לקוחות חייבים לדעת את כל הצמתים. HAProxy מחלק חיבורים ובודק את בריאות כל צומת.

למה תורי קוורום טובים יותר מקלאסיים משוקפים?

תורים קלאסיים משוקפים הוסרו ב-RabbitMQ 4.0. תורי קוורום אמינים פי שלושה: הם מבטיחים עקביות לאחר הפעלה מחדש של צומת ואינם מאבדים הודעות במהלך פיצולי רשת. לייצור, זו הבחירה היחידה.

איך להגדיר ניטור קלאסטר?

  1. הפעל תוספים: rabbitmq-plugins enable rabbitmq_prometheus rabbitmq_management.
  2. הגדר את Prometheus לגרוף מדדים מפורט 15692.
  3. ייבא דשבורד של Grafana (מזהה 10991).

התראות מפתח: עומק תור העולה על 10,000 הודעות, לחץ זיכרון מעל 80%, שטח דיסק פנוי מתחת ל-5 GB, צומת למטה. זה מאפשר להגיב לפני תקלות קריטיות.

ארכיטקטורת קלאסטר

 Load Balancer (HAProxy / Nginx) |
┌───────────────┼───────────────┐
↓               ↓               ↓
rabbit-1:5672   rabbit-2:5672   rabbit-3:5672
rabbit-1:15672  rabbit-2:15672  rabbit-3:15672 (management)

תורי קוורום משכפלים דרך Raft. קוורום: 2 מתוך 3 צמתים חייבים לאשר כתיבה. זה מבטיח עמידות לתקלות ללא נקודת כשל יחידה.

השוואת סוגי תורים

פרמטר קוורום קלאסי קלאסי משוקף
שכפול Raft (סינכרוני) אין אסינכרוני
עמידות לתקלות כן (קוורום) לא כן (אך סיכון לאובדן)
ביצועים ~80% מהקלאסי 100% ~60% מהקלאסי
נתמך ב-4.0 כן כן לא

תרחישי כשל

תרחיש תוצאה ללא קלאסטר תוצאה עם קלאסטר
כשל צומת בודד אובדן הודעות, השבתה המשך פעילות, קוורום 2/3
פיצול רשת פיצול מוח Raft בוחר מנהיג
הפעלה מחדש של צומת תורים נמחקים קוורום משחזר נתונים

התקנה והגדרה

התקן Erlang 26 ו-RabbitMQ 3.13 באופן זהה על כל הצמתים:

curl -1sLf 'https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/setup.deb.sh' | bash
apt install -y erlang-base erlang-asn1 erlang-crypto erlang-eldap erlang-inets \
 erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \
 erlang-runtime-tools erlang-snmp erlang-ssl erlang-syntax-tools \
 erlang-tftp erlang-tools erlang-xmerl
curl -1sLf 'https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/setup.deb.sh' | bash
apt install -y rabbitmq-server
systemctl enable rabbitmq-server

קובץ הגדרה יחיד Load Balancer (HAProxy / Nginx) | ┌───────────────┼───────────────┐ ↓ ↓ ↓ rabbit-1:5672 rabbit-2:5672 rabbit-3:5672 rabbit-1:15672 rabbit-2:15672 rabbit-3:15672 (management) , רק שם הצומת שונה:

nodename = rabbit@rabbit-1
listeners.tcp.default = 5672
management.tcp.port = 15672
cluster_formation.peer_discovery_backend = rabbit_peer_discovery_classic_config
cluster_formation.classic_config.nodes.1 = rabbit@rabbit-1
cluster_formation.classic_config.nodes.2 = rabbit@rabbit-2
cluster_formation.classic_config.nodes.3 = rabbit@rabbit-3
vm_memory_high_watermark.relative = 0.6
vm_memory_high_watermark_paging_ratio = 0.75
disk_free_limit.relative = 1.5
heartbeat = 60
frame_max = 131072
log.file.level = warning

סנכרן עוגיית Erlang בין הצמתים:

openssl rand -hex 32 | tr -d '\n' > /var/lib/rabbitmq/.erlang.cookie
chmod 400 /var/lib/rabbitmq/.erlang.cookie
chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
scp /var/lib/rabbitmq/.erlang.cookie rabbit-2:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie rabbit-3:/var/lib/rabbitmq/

יצירת הקלאסטר

לאחר הפעלת rabbitmq-server על כל הצמתים, על הצומת השני והשלישי הרץ:

rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl join_cluster rabbit@rabbit-1 rabbitmqctl start_app 

משתמשים, הרשאות ומדיניות

rabbitmqctl delete_user guest
rabbitmqctl add_user admin $(openssl rand -base64 32)
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
rabbitmqctl add_user webapp $(openssl rand -base64 32)
rabbitmqctl set_permissions -p / webapp "^(order|notification|user)\." "^(order|notification|user)\." "^(order|notification|user)\."
rabbitmqctl add_user monitoring $(openssl rand -base64 32)
rabbitmqctl set_user_tags monitoring monitoring
rabbitmqctl set_policy ha-quorum "^(order|notification)\." '{"ha-mode":"all","ha-sync-mode":"automatic","dead-letter-exchange":"dlx","message-ttl":86400000}' --apply-to queues --priority 1

איזון עומסים עם HAProxy

HAProxy פועל במצב TCP, איזון roundrobin, בדיקת בריאות כל 5 שניות. Frontend בפורט 5672, backend עם שלושה שרתים. זה מספק גישה עמידה לתקלות לקלאסטר.

ניטור

הפעל תוספים: curl -1sLf 'https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/setup.deb.sh' | bash apt install -y erlang-base erlang-asn1 erlang-crypto erlang-eldap erlang-inets \ erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \ erlang-runtime-tools erlang-snmp erlang-ssl erlang-syntax-tools \ erlang-tftp erlang-tools erlang-xmerl curl -1sLf 'https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/setup.deb.sh' | bash apt install -y rabbitmq-server systemctl enable rabbitmq-server . מדדים ב-/etc/rabbitmq/rabbitmq.conf. ייבא דשבורד של Grafana (מזהה 10991) להדמיה.

מדיניות ו-dead letter exchange

מדיניות לדוגמה לתורי קוורום ניתנת למעלה. Dead letter exchange מאפשר להפנות הודעות לתור DLX לאחר פקיעת TTL או דחייה. זה מונע הצטברות אינסופית ומפשט ניפוי באגים.

מה כלול בעבודה

  • תיעוד: דיאגרמת קלאסטר, קונפיגורציות, הוראות שחזור.
  • גישה: ממשק ניהול, ניטור Prometheus.
  • הדרכה: הצוות מקבל הסבר על עבודה עם תורים והתראות.
  • תמיכה: ליווי בשבוע הראשון לאחר ההשקה.

לוח זמנים

  • יום 1: התקנת Erlang ו-RabbitMQ, סנכרון עוגיות.
  • יום 2: יצירת קלאסטר, יצירת תורי קוורום, מדיניות.
  • יום 3: HAProxy, Prometheus, דשבורד, בדיקת עמידות לתקלות.
  • יום 4: אינטגרציה עם האפליקציה, בדיקות עומס, התראות.

צרו קשר לייעוץ והערכה לפרויקט שלכם. הזמינו הגדרת קלאסטר וקבלו עמידות לתקלות ללא עלויות רישוי נוספות.