logologo
התחלה
מדריך
פיתוח
תוסף
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
התחלה
מדריך
פיתוח
תוסף
API
logologo
מצב אשכול
סקירה כללית
הכנה
פריסת Kubernetes
תהליך תפעול ותחזוקה
פיצול שירותים
הפניה למפתחים
Previous Pageסקירה כללית
Next Pageפריסת Kubernetes
TIP

מסמך זה תורגם על ידי בינה מלאכותית. לכל אי דיוק, אנא עיין בגרסה האנגלית

#דרישות קדם

לפני פריסת יישום אשכול, עליכם להשלים את ההכנות הבאות.

#רישיון תוסף מסחרי

הפעלת יישום NocoBase במצב אשכול דורשת תמיכה מהתוספים הבאים:

פונקציהתוסף
מתאם מטמוןמובנה
מתאם אותות סנכרון@nocobase/plugin-pubsub-adapter-redis
מתאם תור הודעות@nocobase/plugin-queue-adapter-redis או @nocobase/plugin-queue-adapter-rabbitmq
מתאם נעילה מבוזרת@nocobase/plugin-lock-adapter-redis
מקצה Worker ID@nocobase/plugin-workerid-allocator-redis

ראשית, אנא ודאו שקיבלתם רישיונות עבור התוספים הנ"ל (ניתן לרכוש את רישיונות התוספים המתאימים דרך פלטפורמת שירותי התוספים המסחריים).

#רכיבי מערכת

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

#מסד נתונים

מכיוון שמצב האשכול הנוכחי מיועד רק למופעי יישומים, מסד הנתונים תומך באופן זמני בצומת יחיד בלבד. אם יש לכם ארכיטקטורת מסד נתונים כמו Master-Slave, עליכם ליישם אותה בעצמכם באמצעות תווכה (middleware) ולוודא שהיא שקופה ליישום NocoBase.

#תווכה (Middleware)

מצב האשכול של NocoBase מסתמך על מספר רכיבי תווכה (middleware) כדי להשיג תקשורת ותיאום בין האשכולות, כולל:

  • מטמון: משתמש בתווכת מטמון מבוזרת מבוססת Redis כדי לשפר את מהירות הגישה לנתונים.
  • אותות סנכרון: משתמש בתכונת ה-stream של Redis כדי ליישם העברת אותות סנכרון בין אשכולות.
  • תור הודעות: משתמש בתווכת תור הודעות מבוססת Redis או RabbitMQ כדי ליישם עיבוד הודעות אסינכרוני.
  • נעילה מבוזרת: משתמש בנעילה מבוזרת מבוססת Redis כדי להבטיח גישה מאובטחת למשאבים משותפים באשכול.

כאשר כל רכיבי התווכה משתמשים ב-Redis, ניתן להפעיל שירות Redis יחיד בתוך הרשת הפנימית של האשכול (או Kubernetes). לחלופין, ניתן להפעיל שירות Redis נפרד עבור כל פונקציה (מטמון, אותות סנכרון, תור הודעות ונעילה מבוזרת).

המלצות גרסה

  • Redis: >=8.0 או גרסת redis-stack הכוללת את תכונת Bloom Filter.
  • RabbitMQ: >=4.0

#אחסון משותף

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

בעת פריסה עם Kubernetes, אנא עיינו בסעיף פריסת Kubernetes: אחסון משותף.

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

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

כדוגמה ל-Nginx בהתקנה עצמית, הוסיפו את התוכן הבא לקובץ התצורה:

upstream myapp {
    # ip_hash; # ניתן להשתמש בזה לשמירת סשנים. כאשר מופעל, בקשות מאותו לקוח תמיד יישלחו לאותו שרת קצה עורפי.
    server 172.31.0.1:13000; # צומת פנימי 1
    server 172.31.0.2:13000; # צומת פנימי 2
    server 172.31.0.3:13000; # צומת פנימי 3
}

server {
    listen 80;

    location / {
        # השתמשו ב-upstream המוגדר לאיזון עומסים
        proxy_pass http://myapp;
        # ... תצורות נוספות
    }
}

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

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

#תצורת משתני סביבה

כל הצמתים באשכול צריכים להשתמש באותה תצורת משתני סביבה. בנוסף למשתני הסביבה הבסיסיים של NocoBase, יש להגדיר גם את משתני הסביבה הבאים הקשורים לתווכה:

#מצב ריבוי ליבות

כאשר היישום פועל על צומת מרובה ליבות, ניתן להפעיל את מצב ריבוי הליבות של הצומת:

# הפעלת מצב ריבוי ליבות של PM2
# CLUSTER_MODE=max # מושבת כברירת מחדל, דורש הגדרה ידנית

אם אתם פורסים פודי יישומים ב-Kubernetes, תוכלו להתעלם מתצורה זו ולשלוט במספר מופעי היישום באמצעות מספר העותקים של הפוד.

#מטמון

# מתאם מטמון, במצב אשכול יש להגדיר כ-redis (ברירת המחדל אם לא מוגדר היא זיכרון)
CACHE_DEFAULT_STORE=redis

# כתובת חיבור למתאם מטמון Redis, יש למלא באופן יזום
CACHE_REDIS_URL=

#אותות סנכרון

# כתובת חיבור למתאם סנכרון Redis, ברירת המחדל אם לא מוגדרת היא redis://localhost:6379/0
PUBSUB_ADAPTER_REDIS_URL=

#נעילה מבוזרת

# מתאם נעילה, במצב אשכול יש להגדיר כ-redis (ברירת המחדל אם לא מוגדרת היא נעילה מקומית בזיכרון)
LOCK_ADAPTER_DEFAULT=redis

# כתובת חיבור למתאם נעילה Redis, ברירת המחדל אם לא מוגדרת היא redis://localhost:6379/0
LOCK_ADAPTER_REDIS_URL=

#תור הודעות

# הפעלת Redis כמתאם תור הודעות, ברירת המחדל אם לא מוגדר היא מתאם זיכרון
QUEUE_ADAPTER=redis
# כתובת חיבור למתאם תור הודעות Redis, ברירת המחדל אם לא מוגדרת היא redis://localhost:6379/0
QUEUE_ADAPTER_REDIS_URL=

#מקצה Worker ID

מכיוון שחלק מהאוספים במערכת NocoBase משתמשים במזהים גלובליים ייחודיים כמפתחות ראשיים, נדרש מקצה Worker ID כדי להבטיח שכל מופע יישום באשכול יקבל Worker ID ייחודי, ובכך למנוע בעיות של התנגשות מפתחות ראשיים. טווח ה-Worker ID הנוכחי הוא 0-31, כלומר, אותו יישום תומך בהפעלה של עד 32 צמתים בו-זמנית. לפרטים נוספים על תכנון מזהה גלובלי ייחודי, עיינו ב- @nocobase/snowflake-id.

# כתובת חיבור Redis למקצה Worker ID. אם לא מוגדר, יוקצה Worker ID אקראי.
REDIS_URL=
טיפ

בדרך כלל, המתאמים הקשורים יכולים כולם להשתמש באותו מופע Redis, אך עדיף להשתמש במסדי נתונים שונים כדי למנוע בעיות פוטנציאליות של התנגשות מפתחות, לדוגמה:

CACHE_REDIS_URL=redis://localhost:6379/0
PUBSUB_ADAPTER_REDIS_URL=redis://localhost:6379/1
LOCK_ADAPTER_REDIS_URL=redis://localhost:6379/2
QUEUE_ADAPTER_REDIS_URL=redis://localhost:6379/3
REDIS_URL=redis://localhost:6379/4

נכון לשלב זה, כל תוסף משתמש במשתני סביבה משלו הקשורים ל-Redis. בעתיד, נשקול לאחד את השימוש ב-REDIS_URL כתצורת גיבוי.

אם אתם משתמשים ב-Kubernetes לניהול האשכול, תוכלו להגדיר את משתני הסביבה הנ"ל ב-ConfigMap או ב-Secret. לתוכן נוסף בנושא, עיינו בפריסת Kubernetes.

לאחר השלמת כל ההכנות הנ"ל, תוכלו לעבור לתהליכי תפעול כדי להמשיך ולנהל את מופעי היישום.