Managed Airflow (דור 3) | Managed Airflow (דור 2) | Managed Airflow (דור 1 מדור קודם)
בדף הזה מוסבר איך להגדיר חלונות לתחזוקה בסביבות שלכם.
מידע על חלונות זמן לתחזוקה
חלון זמן לתחזוקה הוא תקופת זמן שבה אתם מאפשרים ל-Managed Airflow לבצע פעולות תחזוקה. לדוגמה, אפשר לוודא שהביצוע של משימות קריטיות לא יופרע על ידי הגדרת חלונות תחזוקה מחוץ לזמני התזמון של ה-DAG.
חלונות התחזוקה מאפשרים לכם לשלוט בתקופות הזמן שבהן יכולה להתבצע תחזוקה בסביבה שלכם:
אם מגדירים חלונות זמן מותאמים אישית לתחזוקה בסביבה, מערכת Managed Airflow מבצעת תחזוקה במהלך התקופות האלה.
אם לא מגדירים חלונות זמן מותאמים אישית לתחזוקה בסביבה, המערכת של Managed Airflow מבצעת תחזוקה במהלך חלונות הזמן שהוגדרו כברירת מחדל לתחזוקה.
איך חלונות זמן לתחזוקה פועלים
חלונות זמן לתחזוקה פועלים באופן הבא:
פעולות תחזוקה דורשות הקצאה של לפחות 12 שעות בשבוע.
אפשר להשתמש בכמה חלונות זמן, אבל משך כל חלון זמן צריך להיות לפחות 4 שעות.
הסביבה שלכם תישאר זמינה במהלך חלונות הזמנים לתחזוקה. יכול להיות שחלק מהרכיבים בסביבה שלכם לא יהיו זמינים באופן זמני בזמן פעולות תחזוקה.
ה-12 שעות נדרשות כדי של-Managed Airflow יהיה מספיק זמן לתזמן ולבצע את כל פעולות התחזוקה. זה לא אומר שפעולות התחזוקה נמשכות 12 שעות מלאות או מתרחשות בכל שבוע.
עדיין אפשר להריץ את ה-DAG במהלך חלונות התחזוקה, כל עוד מקובל שחלק מהמשימות עלולות להיקטע ולנסות שוב. אם מריצים DAGs במהלך חלונות זמן לתחזוקה, חשוב להפעיל ניסיונות חוזרים של משימות. אפשר להגדיר ניסיונות חוזרים של משימות בהגדרות של Airflow, ברמת ה-DAG או ברמת המשימה.
בדרך כלל, פעולות תחזוקה לא משפיעות על משימות שנמשכות פחות מ-55 דקות, אבל עדיין צריך להפעיל ניסיונות חוזרים כדי שהמשימות יוכלו לעמוד בהפעלות מחדש של מתזמן המשימות. יכול להיות שהמתזמן יופעל מחדש במהלך פעולות רגילות של Managed Airflow, מחוץ לחלונות התחזוקה.
Managed Airflow מודיע לעובדי Airflow שעומדת להתבצע פעולת תחזוקה. תהליך עבודה מסוג Airflow worker מסיים משימות שכבר התחילו ולא בוחר משימות חדשות. המשימות החדשות האלה מבוצעות על ידי עובדי Airflow שלא עוברים פעולות תחזוקה.
אם אתם משתמשים בסביבה עמידה במיוחד, סביר להניח שרכיבי Airflow בסביבה שלכם יופעלו מחדש בזמנים שונים במהלך פעולת תחזוקה (זה תלוי בסוג פעולת התחזוקה). בסך הכול, שימוש בסביבה עמידה מאוד מפחית את זמן ההשבתה של הסביבה במהלך פעולות תחזוקה.
לפעולות תחזוקה יש את ההשפעות הבאות על הסביבה שלכם:
יכול להיות שממשק המשתמש של Airflow לא יהיה זמין באופן זמני.
יכול להיות שבאופן זמני לא תהיה אפשרות לשנות חלק מהפרמטרים של הסביבה או לשדרג לגרסה מאוחרת יותר.
יכול להיות שייקח יותר זמן מהרגיל להריץ שאילתות SQL ישירות במסד הנתונים של Airflow, וייתכן שיהיה צורך לנסות שוב.
יכול להיות שיהיו שיבושים במשימות מסוימות ב-Airflow שנמשכות יותר מ-55 דקות. אחרי שעבודות התחזוקה יסתיימו, Airflow ינסה לבצע מחדש את המשימות האלה (אלא אם הוגדר אחרת).
חלונות זמן לתחזוקה שמוגדרים כברירת מחדל
חלונות הזמן שמוגדרים כברירת מחדל לתחזוקה ב-Managed Airflow (דור 2) הם מ-00:00:00 עד 04:00:00 (GMT) בימי שישי, שבת וראשון בכל שבוע.
תחזוקה מחוץ לחלונות הזמן לתחזוקה
יכול להיות ש-Managed Airflow יבצע תחזוקה מחוץ לחלונות הזמן שהוגדרו לתחזוקה במקרים הבאים:
במצבי חירום, למשל כשמתקנים פגיעות אבטחה קריטית, יכול להיות שחלק מפעולות התחזוקה יבוצעו מחוץ לחלונות התחזוקה הרגילים.
אם Managed Airflow לא הצליח לבצע פעולות תחזוקה רגילות במהלך חלונות התחזוקה במשך 30 יום, הוא מבצע פעולות תחזוקה קריטיות מחוץ לחלונות התחזוקה שצוינו. זהו מנגנון חלופי למקרים שבהם חלונות הזמן לתחזוקה מוגדרים בצורה שגויה, ו-Managed Airflow לא מצליח לבצע תחזוקה בסביבה שוב ושוב.
איך משתמשים בחלונות זמן לתחזוקה
פעולות תחזוקה עשויות להשפיע על ההרצה של גרפים מכווני מחזור (DAG) ומשימות Airflow, ולכן מומלץ לבצע את הפעולות הבאות:
הגדרת חלונות זמן לתחזוקה בסביבות Managed Airflow.
כדי לתזמן הפעלות של DAG מחוץ לחלונות הזמנים לתחזוקה שצוינו, משתמשים בפרמטרים
start_dateו-scheduleב-DAG.
ציון חלונות זמן לתחזוקה בסביבות חדשות
כשיוצרים סביבה, אפשר לציין חלונות זמן לתחזוקה. מידע נוסף זמין במאמר יצירת סביבות.
הגדרת חלונות זמן לתחזוקה בסביבות קיימות
המסוף
כדי להגדיר או לשנות חלונות זמנים לתחזוקה בסביבה קיימת, צריך לעדכן את הסביבה:
נכנסים לדף Environments במסוף Google Cloud .
בוחרים את הסביבה.
עוברים לכרטיסייה Environment configuration (הגדרת הסביבה).
לצד הערך חלונות תחזוקה, לוחצים על עריכה.
בתיבת הדו-שיח חלונות תחזוקה, מסמנים את התיבה הגדרת זמן מותאם אישית לחלונות תחזוקה.
מגדירים את שעת ההתחלה, אזור הזמן, הימים והמשך, כך שהזמן הכולל של לוח הזמנים שצוין יהיה לפחות 12 שעות בחלון של 7 ימים. לדוגמה, תקופה של 4 שעות בכל יום שני, רביעי ושישי מספקת את כמות הזמן הנדרשת.
לוחצים על שמירה ומחכים עד שהסביבה תתעדכן.
gcloud
כשמעדכנים סביבה, הארגומנטים הבאים מגדירים את הפרמטרים של חלונות התחזוקה:
-
--maintenance-window-startמגדיר את שעת ההתחלה של חלון תחזוקה. -
--maintenance-window-endמגדיר את שעת הסיום של חלון זמן לתחזוקה. -
--maintenance-window-recurrenceמגדיר את החזרה של חלון הזמן לתחזוקה.
gcloud composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--maintenance-window-start 'DATETIME_START' \
--maintenance-window-end 'DATETIME_END' \
--maintenance-window-recurrence 'MAINTENANCE_RECURRENCE'
מחליפים את:
-
ENVIRONMENT_NAMEבשם הסביבה. -
DATETIME_STARTעם תאריך ושעת ההתחלה בפורמט הקלט של תאריך ושעה. המערכת משתמשת רק בשעה שצוינה ביום, ומתעלמת מהתאריך שצוין. -
DATETIME_ENDעם תאריך ושעת הסיום בפורמט הקלט של התאריך והשעה. המערכת משתמשת רק בשעה שצוינה ביום, ומתעלמת מהתאריך שצוין. התאריך והשעה שצוינו צריכים להיות אחרי תאריך ההתחלה.
MAINTENANCE_RECURRENCEעם RRULE של RFC 5545 לחלונות תחזוקה חוזרים. Managed Airflow תומך בשני פורמטים:הפורמט
FREQ=DAILYמציין חזרה יומית.הפורמט
FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SAמציין חזרה על הפעולה בימים נבחרים בשבוע.
בדוגמה הבאה מוגדר חלון זמן לתחזוקה של 6 שעות בין 01:00 ל-07:00 (UTC) בימי רביעי, שבת וראשון. המערכת מתעלמת מהתאריך 1 בינואר 2023.
gcloud composer environments update example-environment \
--location us-central1 \
--maintenance-window-start '2023-01-01T01:00:00Z' \
--maintenance-window-end '2023-01-01T07:00:00Z' \
--maintenance-window-recurrence 'FREQ=WEEKLY;BYDAY=SU,WE,SA'
API
יוצרים בקשת API של
environments.patch.בבקשה הזו:
בפרמטר
updateMask, מציינים את המסכהconfig.maintenanceWindow.בגוף הבקשה, מציינים את הפרמטרים של חלונות התחזוקה.
{
"config": {
"maintenanceWindow": {
"startTime": "DATETIME_START",
"endTime": "DATETIME_END",
"recurrence": "MAINTENANCE_RECURRENCE"
}
}
}
מחליפים את:
-
DATETIME_STARTעם תאריך ושעת ההתחלה בפורמט הקלט של תאריך ושעה. המערכת משתמשת רק בשעה שצוינה ביום, ומתעלמת מהתאריך שצוין. -
DATETIME_ENDעם תאריך ושעת הסיום בפורמט הקלט של התאריך והשעה. המערכת משתמשת רק בשעה שצוינה ביום, ומתעלמת מהתאריך שצוין. התאריך והשעה שצוינו חייבים להיות אחרי תאריך ההתחלה.
MAINTENANCE_RECURRENCEעם RRULE של RFC 5545 לחלונות תחזוקה חוזרים. Managed Airflow תומך בשני פורמטים:- הפורמט
FREQ=DAILYמציין חזרה יומית. - הפורמט
FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SAמציין חזרה על הפעולה בימים נבחרים בשבוע.
- הפורמט
בדוגמה הבאה מוגדר חלון זמן לתחזוקה של 6 שעות בין 01:00 ל-07:00 (UTC) בימי רביעי, שבת וראשון. המערכת מתעלמת מהתאריך 1 בינואר 2023.
// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.maintenanceWindow
{
"config": {
"maintenanceWindow": {
"startTime": "2023-01-01T01:00:00Z",
"endTime": "2023-01-01T07:00:00Z",
"recurrence": "FREQ=WEEKLY;BYDAY=SU,WE,SA"
}
}
}
Terraform
הבלוק maintenance_window מציין את חלונות הזמן לתחזוקה של הסביבה:
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
maintenance_window {
start_time = "DATETIME_START"
end_time = "DATETIME_END"
recurrence = "MAINTENANCE_RECURRENCE"
}
}
}
מחליפים את:
-
ENVIRONMENT_NAMEבשם הסביבה. -
LOCATIONעם האזור שבו הסביבה ממוקמת. -
DATETIME_STARTעם תאריך ושעת ההתחלה בפורמט הקלט של תאריך ושעה. המערכת משתמשת רק בשעה שצוינה ביום, ומתעלמת מהתאריך שצוין. -
DATETIME_ENDעם תאריך ושעת הסיום בפורמט הקלט של התאריך והשעה. המערכת משתמשת רק בשעה שצוינה ביום, ומתעלמת מהתאריך שצוין. התאריך והשעה שצוינו חייבים להיות אחרי תאריך ההתחלה.
MAINTENANCE_RECURRENCEעם RRULE של RFC 5545 לחלונות תחזוקה חוזרים. Managed Airflow תומך בשני פורמטים:- הפורמט
FREQ=DAILYמציין חזרה יומית. - הפורמט
FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SAמציין חזרה על הפעולה בימים נבחרים בשבוע.
- הפורמט
בדוגמה הבאה מוגדר חלון זמן לתחזוקה של 6 שעות בין 01:00 ל-07:00 (UTC) בימי רביעי, שבת וראשון. המערכת מתעלמת מהתאריך 1 בינואר 2023.
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
maintenance_window {
start_time = "2023-01-01T01:00:00Z"
end_time = "2023-01-01T07:00:00Z"
recurrence = "FREQ=WEEKLY;BYDAY=SU,WE,SA"
}
}
}