1 זמינות גבוהה

סקירה כללית

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

Zabbix מציעה פתרון מקורי בעל זמינות גבוהה שקל לעשות זאת מוגדר ואינו דורש מומחיות קודמת של HA. Native Zabbix HA עשוי להיות שימושי עבור שכבת הגנה נוספת מפני תוכנה/חומרה כשלים בשרת Zabbix או שיש פחות זמן השבתה עקב תחזוקה.

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

המעבר ל-Zabix HA אינו מתחייב. אתה יכול לחזור למצב עצמאי פעולה בכל נקודה.

ראה גם: פרטי יישום

מאפשר זמינות גבוהה

הפעלת שרת Zabbix כצומת אשכול

נדרשים שני פרמטרים בשרת תצורה כדי להפעיל שרת Zabbix כצומת אשכול:

  • יש לציין פרמטר HANodeName עבור כל שרת Zabbix זה יהיה צומת אשכול HA.

זהו מזהה צומת ייחודי (למשל zabbix-node-01) שאליו השרת יפנה בסוכן ובפרוקסי תצורות. אם לא תציין HANodeName, השרת יופעל במצב עצמאי.

  • יש לציין פרמטר NodeAddress עבור כל צומת.

הפרמטר NodeAddress (address:port) ישמש את החזית של Zabbix לחיבור לצומת השרת הפעיל. NodeAddress חייב להתאים לשם ה-IP או ה-FQDN של שרת Zabbix המתאים.

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

zabbix_server -R ha_status

פקודת זמן ריצה זו תרשום את מצב אשכול ה-HA הנוכחי ליומן השרת של Zabbix (ול-stdout):

הכנת ממשק קצה

ודא שכתובת שרת Zabbix:port לא מוגדרת ב- תצורת frontend (נמצאת ב-'conf/zabbix.conf.php' של ה-frontend ספריית קבצים).

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

תצורת Proxy

צמתי אשכול HA (שרתים) חייבים להיות רשומים בתצורה של אחד מהם פרוקסי פסיבי או אקטיבי של Zabbix.

עבור פרוקסי פסיבי, שמות הצומת חייבים להיות רשומים בשרת פרמטר של ה-proxy, מופרדים על ידי פסיק.

Server=zabbix-node-01,zabbix-node-02

עבור פרוקסי פעיל, שמות הצמתים חייבים להיות רשומים בשרת פרמטר של ה-proxy, מופרדים על ידי נקודה-פסיק.

Server=zabbix-node-01;zabbix-node-02
תצורת סוכן

צמתי אשכול HA (שרתים) חייבים להיות רשומים בתצורה של סוכן Zabbix או סוכן Zabbix 2.

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

Server=zabbix-node-01,zabbix-node-02

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

ServerActive=zabbix-node-01;zabbix-node-02

מעבר כשל לצומת המתנה

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

כמה מהר יהיה ה-failover? כל הצמתים מעדכנים את זמן הגישה האחרון שלהם (והסטטוס, אם זה משתנה) כל 5 שניות. כך:

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

  • אם הצומת הפעיל נכבה/הופך ללא זמין מבלי יכולת לעדכן מצבו, צמתי המתנה ימתינו לעיכוב מעבר כשל + 5 שניות להשתלט

ניתן להגדיר את השהיית הכשל במעבר, עם הטווח הנתמך בין 10 שניות ל-15 דקות (דקה אחת כברירת מחדל). כדי לשנות את עיכוב מעבר הכשל, אתה יכול להפעיל:

zabbix_server -R ha_set_failover_delay=5m

ניהול אשכול HA

ניתן לנהל את הסטטוס הנוכחי של אשכול ה-HA באמצעות האפליקציה הייעודית אפשרויות בקרת זמן ריצה:

  • ha_status - יומן סטטוס אשכול HA ביומן השרת של Zabbix (ול-stdout)
  • ha_remove_node=target - הסר צומת HA המזוהה באמצעותו <target> - מספר הצומת ברשימה (המספר יכול להיות מתקבל מהפלט של הפעלת ha_status), למשל:
zabbix_server -R ha_remove_node=2

שים לב שלא ניתן להסיר צמתים פעילים/המתנה.

  • ha_set_failover_delay=delay - הגדר השהיית HA failover (בין 10 שניות ל-15 דקות; זמן סיומות נתמכות, למשל. 10 שניות, 1 מ')

ניתן לעקוב אחר מצב הצומת:

  • ב דוחותמידע מערכת
  • בווידג'ט לוח המחוונים מידע מערכת
  • באמצעות אפשרות בקרת זמן הריצה 'ha_status' של השרת (ראה מֵעַל).

ניתן להשתמש בפריט הפנימי zabbix[cluster,discovery,nodes] עבור צומת גילוי, שכן הוא מחזיר JSON עם מידע הצומת בעל הזמינות הגבוהה.

השבתת זמינות גבוהה

כדי להשבית אשכול זמינות גבוהה:

  • צור עותקי גיבוי של קבצי תצורה
  • עצירת צמתי המתנה
  • הסר את הפרמטר HANodeName מהשרת הראשי הפעיל
  • הפעל מחדש את השרת הראשי (הוא יתחיל במצב עצמאי)

פרטי יישום

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

הפתרון מורכב ממספר מופעים או צמתים של zabbix_server. כל צומת:

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

רק צומת אחד יכול להיות פעיל (עובד) בכל פעם. צומת המתנה מפעיל רק אחד תהליך - מנהל HA. צומת המתנה אינו אוסף נתונים, עיבוד או פעילויות שרת רגילות אחרות; הם לא מקשיבים על יציאות; יש להם מינימום חיבורי מסד נתונים.

גם הצמתים הפעילים וגם הצמתים במצב המתנה מעדכנים את זמן הגישה האחרון שלהם כל 5 שניות. כל צומת המתנה מנטר את זמן הגישה האחרון של הפעיל צוֹמֶת. אם זמן הגישה האחרון של הצומת הפעיל חלף, 'failover delay' שניות, צומת ההמתנה מחליף את עצמו להיות הצומת הפעיל ומקצה סטטוס 'לא זמין' לצומת הפעיל בעבר.

הצומת הפעיל מנטר את קישוריות מסד הנתונים שלו - אם היא אבדה במשך יותר מ-'failover delay-5' שניות, עליו להפסיק את כל העיבוד ולעבור למצב המתנה. הצומת הפעיל עוקב גם אחר המצב של צמתי המתנה - אם נגמר זמן הגישה האחרון של צומת המתנה 'עיכוב כשל' שניות, לצומת ההמתנה מוקצה ה'לא זמין' סטָטוּס.

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