✕ סגור 
צור קשר
תודה על ההתעניינות .

Thank you! Your submission has been received!

Oops! Something went wrong while submitting the form

מסד נתונים ב-Kubernetes – להריץ או לא להריץ?

IsraelClouds
|
קלה
|
Jan 2, 2020
alt="facebook"alt="linkedin"להרשמה לניוזלטר

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

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

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

מסדי נתונים מנוהלים לחלוטין

סקטור זה כולל את Cloud Spanner, Cloud Bigtale ו-Cloud SQL, ביחד עם אופציות נוספות. זוהי הבחירה הפופולארית בקרב ה-low-ops, מפני שהענן של גוגל מטפל במשימות תחזוקה רבות כמו גיבויים, התקנת עדכונים וסקיילינג כך שבתור המפתח או האופרטור, אתם לא תצטרכו להתעסק איתן. כל מה שנותר לכם לעשות זה ליצור את מסד הנתונים, לבנות את האפליקציה ולתת לגוגל לבצע את הסקיילינג עבורכם. עבודה במתודה זו משמעותה שלא תמיד תהיה לכם גישה לגרסה, לתוסף או לסוג מסד הנתונים המדויק שאתם מעוניינים בו.

עשו זאת בעצמכם על VM

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

הרצה על Kubernetes

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

טיפים להרצת מסד הנתונים שלכם על Kubernetes

כאשר אתם בוחרים בדרך ה-Kubernetes, חשבו על איזה מסד נתונים אתם מעוניינים להריץ, ואיך תוכלו למקסם את התוצאות (בהתחשב במגבלות שהצגנו לעיל). מכיוון שפודים אינם עובדים לנצח, הסיכוי לאירועי כשל-גבוהים יותר מאשר ממסד נתונים המאוחסן בצורה מסורתית או ממסד המנוהל במלואו. יהיה קל יותר לעמוד במשימה זו אם יש בה קונספטים כמו sharding, failover elections ורפליקציה, שנבנו היישר לתוך ה-DNA  שלו (דוגמאות לכך הן ElasticSearch, Cassandra או MongoDB). ישנם גם פרויקטים בקוד פתוח שיספקו לכם משאבים מותאמים אישית ואופרציות שיעזרו לכם לנהל את מסד הנתונים.

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

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

Tech Diag K8s Database Blog Flowchart.png


איך להפיץ מסד נתונים על Kubernetes

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

אם אתם רוצים להריץ מסד נתונים שלא באמת מתאים למודל של "מסד הנתונים הידידותי" (כמו למשל MySQL או PostgreSQL), נסו להשתמש באופרציות Kubernetes או פרויקטים המחברים את אותם מסדי נתונים עם פיצ'רים נוספים. אופרטורים יעזרו לכם לתפעל את מסדי הנתונים ולבצע משימות תחזוקה כמו גיבוים ורפליקציות עבור מסדי הנתונים. בכל הנוגע ל-MySQL באופן ספציפי, הסתכלו כאן. עבור מדריך דומה ל-Postgre SQL, הסתכלו כאן.

האופרטורים משתמשים במשאבים מותאמים אישית ובבקרים בכדי לחשוף הליכים בלעדיים לאפליקציות באמצעות ה-API של Kubernetes. לדוגמא, בכדי לבצע גיבוי באמצעות Crunchy Data, פשוט הפעילו את השורה הבאה:

Execute pgo backup [cluster_name]

בכדי להוסיף רפליקה של Postgres, השתמשו ב:

Use pgo scale cluster

ישנם סוגים אחרים של פרויקטים אותם אתם יכולים לחקור, כמו למשל Patroni או PostgreSQL. פרויקטים אלו משתמשים באופרטורים, אבל עם צעד אחד קדימה - הם בנו כלים רבים מסביב למסדי הנתונים הרלוונטיים אליהם, ובכך הם מסייעים בהתנהלות בתוך Kubernetes. יש בהם אופציות נוספות כמו sharding, leader election ו-,failover functionality שיאפשרו לכם להפיץ בהצלחה MySQL או PostgreSQL ב-Kubernetes.

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

כאשר תרגישו מוכנים להתחיל, אתם מוזמנים להיכנס למרקטפלייס של גוגל בכדי למצוא SaaS קל להפצה, מכונות וירטואליות ופתרונות עבור מסדי נתונים בקונטיינרים, בנוסף לאופרטורים שיכולים להיות מופצים עבור GCP או קלאסטרים של Kubernetes בכל מקום שהוא. בהצלחה!

מאת: מערכת IsraelClouds


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

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

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

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

מסדי נתונים מנוהלים לחלוטין

סקטור זה כולל את Cloud Spanner, Cloud Bigtale ו-Cloud SQL, ביחד עם אופציות נוספות. זוהי הבחירה הפופולארית בקרב ה-low-ops, מפני שהענן של גוגל מטפל במשימות תחזוקה רבות כמו גיבויים, התקנת עדכונים וסקיילינג כך שבתור המפתח או האופרטור, אתם לא תצטרכו להתעסק איתן. כל מה שנותר לכם לעשות זה ליצור את מסד הנתונים, לבנות את האפליקציה ולתת לגוגל לבצע את הסקיילינג עבורכם. עבודה במתודה זו משמעותה שלא תמיד תהיה לכם גישה לגרסה, לתוסף או לסוג מסד הנתונים המדויק שאתם מעוניינים בו.

עשו זאת בעצמכם על VM

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

הרצה על Kubernetes

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

טיפים להרצת מסד הנתונים שלכם על Kubernetes

כאשר אתם בוחרים בדרך ה-Kubernetes, חשבו על איזה מסד נתונים אתם מעוניינים להריץ, ואיך תוכלו למקסם את התוצאות (בהתחשב במגבלות שהצגנו לעיל). מכיוון שפודים אינם עובדים לנצח, הסיכוי לאירועי כשל-גבוהים יותר מאשר ממסד נתונים המאוחסן בצורה מסורתית או ממסד המנוהל במלואו. יהיה קל יותר לעמוד במשימה זו אם יש בה קונספטים כמו sharding, failover elections ורפליקציה, שנבנו היישר לתוך ה-DNA  שלו (דוגמאות לכך הן ElasticSearch, Cassandra או MongoDB). ישנם גם פרויקטים בקוד פתוח שיספקו לכם משאבים מותאמים אישית ואופרציות שיעזרו לכם לנהל את מסד הנתונים.

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

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

Tech Diag K8s Database Blog Flowchart.png


איך להפיץ מסד נתונים על Kubernetes

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

אם אתם רוצים להריץ מסד נתונים שלא באמת מתאים למודל של "מסד הנתונים הידידותי" (כמו למשל MySQL או PostgreSQL), נסו להשתמש באופרציות Kubernetes או פרויקטים המחברים את אותם מסדי נתונים עם פיצ'רים נוספים. אופרטורים יעזרו לכם לתפעל את מסדי הנתונים ולבצע משימות תחזוקה כמו גיבוים ורפליקציות עבור מסדי הנתונים. בכל הנוגע ל-MySQL באופן ספציפי, הסתכלו כאן. עבור מדריך דומה ל-Postgre SQL, הסתכלו כאן.

האופרטורים משתמשים במשאבים מותאמים אישית ובבקרים בכדי לחשוף הליכים בלעדיים לאפליקציות באמצעות ה-API של Kubernetes. לדוגמא, בכדי לבצע גיבוי באמצעות Crunchy Data, פשוט הפעילו את השורה הבאה:

Execute pgo backup [cluster_name]

בכדי להוסיף רפליקה של Postgres, השתמשו ב:

Use pgo scale cluster

ישנם סוגים אחרים של פרויקטים אותם אתם יכולים לחקור, כמו למשל Patroni או PostgreSQL. פרויקטים אלו משתמשים באופרטורים, אבל עם צעד אחד קדימה - הם בנו כלים רבים מסביב למסדי הנתונים הרלוונטיים אליהם, ובכך הם מסייעים בהתנהלות בתוך Kubernetes. יש בהם אופציות נוספות כמו sharding, leader election ו-,failover functionality שיאפשרו לכם להפיץ בהצלחה MySQL או PostgreSQL ב-Kubernetes.

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

כאשר תרגישו מוכנים להתחיל, אתם מוזמנים להיכנס למרקטפלייס של גוגל בכדי למצוא SaaS קל להפצה, מכונות וירטואליות ופתרונות עבור מסדי נתונים בקונטיינרים, בנוסף לאופרטורים שיכולים להיות מופצים עבור GCP או קלאסטרים של Kubernetes בכל מקום שהוא. בהצלחה!

מאת: מערכת IsraelClouds


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

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
בואו נעבוד ביחד
support@israelclouds.com
צרו קשר