זמינות גבוהה (HA) נדרשת בדרך כלל בתשתיות קריטיות שלא יכול להרשות לעצמו כמעט זמן השבתה. אז לכל שירות זה עלול להיכשל חייבת להיות אפשרות כשל על מנת להשתלט אם השירות הנוכחי ייכשל.
Zabbix מציעה פתרון מקורי בעל זמינות גבוהה שקל לעשות זאת מוגדר ואינו דורש מומחיות קודמת של HA. Native Zabbix HA עשוי להיות שימושי עבור שכבת הגנה נוספת מפני תוכנה/חומרה כשלים בשרת Zabbix או שיש פחות זמן השבתה עקב תחזוקה.
במצב זמינות גבוהה של Zabbix מופעלים שרתי Zabbix מרובים צמתים במקבץ. בעוד שרת Zabbix אחד באשכול פעיל, אחרים נמצאים בכוננות, מוכנים להשתלט במידת הצורך.
המעבר ל-Zabix HA אינו מתחייב. אתה יכול לחזור למצב עצמאי פעולה בכל נקודה.
ראה גם: פרטי יישום
נדרשים שני פרמטרים בשרת תצורה כדי להפעיל שרת Zabbix כצומת אשכול:
זהו מזהה צומת ייחודי (למשל zabbix-node-01
) שאליו השרת יפנה בסוכן ובפרוקסי תצורות. אם לא תציין HANodeName, השרת יופעל במצב עצמאי.
הפרמטר 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.
צמתי אשכול 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_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 מ')ניתן לעקוב אחר מצב הצומת:
ניתן להשתמש בפריט הפנימי zabbix[cluster,discovery,nodes]
עבור צומת גילוי, שכן הוא מחזיר JSON עם מידע הצומת בעל הזמינות הגבוהה.
כדי להשבית אשכול זמינות גבוהה:
To perform a major version upgrade for the HA nodes:
In a minor version upgrade it is sufficient to upgrade the first node, make sure it has upgraded and running, and then start upgrade on the next node.
אשכול הזמינות הגבוהה (HA) הוא פתרון הסכמה וזהו נתמך עבור שרת Zabbix. פתרון ה-HA המקורי נועד להיות פשוט בשימוש, זה יעבוד על פני אתרים ואין לו ספציפיים דרישות למאגרי המידע ש-Zabix מזהה. המשתמשים חופשיים לעשות זאת השתמש בפתרון Zabbix HA המקורי, או בפתרון HA של צד שלישי, בהתאם למה שהכי מתאים לדרישות הזמינות הגבוהות שלהם סביבה.
הפתרון מורכב ממספר מופעים או צמתים של zabbix_server. כל צומת:
רק צומת אחד יכול להיות פעיל (עובד) בכל פעם. צומת המתנה מפעיל רק אחד תהליך - מנהל HA. צומת המתנה אינו אוסף נתונים, עיבוד או פעילויות שרת רגילות אחרות; הם לא מקשיבים על יציאות; יש להם מינימום חיבורי מסד נתונים.
גם הצמתים הפעילים וגם הצמתים במצב המתנה מעדכנים את זמן הגישה האחרון שלהם כל 5 שניות. כל צומת המתנה מנטר את זמן הגישה האחרון של הפעיל צוֹמֶת. אם זמן הגישה האחרון של הצומת הפעיל חלף, 'failover delay' שניות, צומת ההמתנה מחליף את עצמו להיות הצומת הפעיל ומקצה סטטוס 'לא זמין' לצומת הפעיל בעבר.
הצומת הפעיל מנטר את קישוריות מסד הנתונים שלו - אם היא אבדה במשך יותר מ-'failover delay-5' שניות, עליו להפסיק את כל העיבוד ולעבור למצב המתנה. הצומת הפעיל עוקב גם אחר המצב של צמתי המתנה - אם נגמר זמן הגישה האחרון של צומת המתנה 'עיכוב כשל' שניות, לצומת ההמתנה מוקצה ה'לא זמין' סטָטוּס.
הצמתים נועדו להיות תואמים בגרסאות זאביקס משניות.