הדרכה למתחילים של HAProxy

Hdrkh Lmthylym Sl Haproxy



ככל שהאפליקציה שלך מתרחבת, עולה הצורך להוסיף עוד שרתים כדי לטפל בתעבורה רבה יותר. ככל שהאפליקציה שלך תקבל יותר תעבורה, כך הסיכוי להתמודד עם זמן ההשבתה גבוה יותר כאשר השרת עומס יתר על המידה. עם זאת, ישנם כלים כגון HAProxy המאפשרים לך להגדיר כיצד התעבורה מטופלת כדי לאזן את העומס על השרת שלך. הרעיון הוא להבטיח שאף שרת לא יעומס יתר על המידה. High Availability Proxy היא תוכנת קוד פתוח שנועדה להציע איזון עומסים אמין תוך כדי פעולת פרוקסי הפוך עבור יישומי TCP/HTTP.

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

למה להשתמש ב- HAProxy

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







  1. איזון עומסים - עם HAProxy, אתה יכול להפיץ בנוחות את התעבורה בין שרתים שונים כדי למנוע עומס יתר על שרת בודד. כך, האפליקציה שלך לא תתמודד עם בעיות בזמן השבתה, ותשיג תגובה מהירה יותר, מהימנות וזמינות.
  2. רישום וניטור - תקבל יומני ניטור מפורטים עבור השרתים שלך כדי לעזור בפתרון בעיות. חוץ מזה, ל- HAProxy יש דף סטטיסטיקה שבו אתה יכול לקבל את ניתוח הביצועים בזמן אמת עבור מאזן העומס שלך.
  3. בדיקות בריאות - אפילו השרתים שלך דורשים בדיקת תקינות כדי לקבוע את הסטטוס שלהם. HAProxy מריץ לעתים קרובות את בדיקות התקינות כדי לדעת את מצב השרת שלך כדי לשפר את מהימנותו. אם מתגלה שרת לא בריא, הוא מנתב מחדש את התעבורה לשרת אחר.
  4. פרוקסי הפוך - אחת הדרכים להגביר את האבטחה היא על ידי הסתרת המבנה הפנימי. למרבה המזל, HAProxy מאפשרת לך לקבל את התעבורה מלקוחות ולנתב אותם לשרתים מתאימים. כך, המבנה הפנימי שלך מוסתר מעינו של ההאקר.
  5. ACLs (רשימות בקרת גישה) - עם HAProxy, אתה יכול להגדיר כיצד ניתוב התעבורה צריך להתרחש באמצעות קריטריונים שונים כגון נתיבים, כותרות וכתובות IP. לפיכך, הגדרת היגיון ניתוב מותאם אישית עבור התנועה שלך הופכת לקלה יותר.
  6. סיום SSL - כברירת מחדל, SSL/TLS מוריד על ידי שרתי הקצה האחורי מה שגורם לביצועים מופחתים. עם זאת, עם HAProxy, סיום ה-SSL/TLS מתרחש במאזן העומס, ומסיר את המשימה בשרתי הקצה האחורי.

התקנת HAProxy

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



אם אתה מפעיל את מערכות אובונטו או דביאן, ניתן להתקין את HAProxy ממנהל החבילות של APT. הפעל את הפקודה הבאה:



$ sudo apt update
$ sudo apt להתקין את הפרוקסי

באופן דומה, אם אתה משתמש במערכות מבוססות RHEL או CentOS, HAProxy זמין ממנהל החבילות 'יאם'. הפעל את הפקודות הבאות:





$ sudo yum עדכון
$ sudo yum להתקין פרוקסי

במקרה שלנו, אנו משתמשים באובונטו. לפיכך, יש לנו את הפקודה שלנו כדלקמן:



לאחר מכן נוכל לבדוק את הגרסה שלו כדי לוודא שהצלחנו להתקין את HAProxy בהצלחה.

$ haproxy --גרסה

כיצד להגדיר את HAProxy

כאשר HAProxy מותקן, כעת תוכל לפתוח את קובץ התצורה שלו ( / etc/haproxy/haproxy.cfg) והגדר את ההגדרות שבהן תרצה להשתמש עבור מאזן העומס שלך.

פתח את קובץ התצורה באמצעות עורך כגון nano או vim.

$ sudo nano /etc/haproxy/haproxy.cfg

אתה מקבל קובץ תצורה כמו הקובץ הבא:

מקובץ התצורה, תבחין שהוא מגיע עם שני חלקים עיקריים:

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

הנה דוגמה לקטע 'ברירות מחדל':

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

ישנם שלושה סעיפים נוספים שעליך להגדיר כדי שמאזן העומס שלך יעבוד כצפוי.

  1. חזיתי - סעיף זה מכיל את כתובות ה-IP שבהן אתה רוצה שהלקוחות שלך ישתמשו כדי ליצור את החיבור.
  2. אחורי - זה מציג את מאגרי השרתים המטפלים בבקשות כפי שהוגדרו בסעיף החזית.
  3. להקשיב - הוא משמש ברצף כאשר אתה רוצה לנתב קבוצת שרתים ספציפית. סעיף זה משלב את המשימות של ה-frontend וה-backend.

בואו נביא דוגמה

עבור דוגמה זו, אנו מגדירים את ה-frontend לשימוש ב-localhost עם יציאה ספציפית. לאחר מכן, אנו קושרים אותו עם ה-backend אשר מריץ את localhost ולאחר מכן מפעילים שרת Python כדי לבדוק אם הכל עובד כמצופה עבור איזון העומס. בצע את השלבים הנתונים.

שלב 1: הגדרת סעיף ברירת המחדל

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

זכור שכל העריכות הללו נמצאות בתצורת HAProxy הממוקמת בכתובת '/etc/haproxy/haproxy.cfg'. לאחר הגדרת סעיף ברירת המחדל, הבה נגדיר את החזית.

שלב 2: קביעת תצורה של החלק הקדמי

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

עליך להוסיף את מילת המפתח 'bind' אשר פועלת כמאזין עבור כתובת ה-IP ביציאה שצוינה. כתובת ה-IP והיציאה שאתה מגדיר הם מה שמאזן העומס משתמש כדי לקבל את הבקשות הנכנסות.

לאחר הוספת השורות הקודמות בקובץ התצורה שלך, עלינו להפעיל מחדש את 'haproxy.service' עם הפקודה הבאה:

$ sudo systemctl הפעל מחדש את הפרוקסי

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

$ curl <כתובת IP>

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

שלב 3: הגדרת ה- Backend

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

שגיאת 503 שקיבלנו קודם לכן נבעה מכך שלא היה לנו קצה אחורי לטיפול בבקשות. נתחיל בהגדרת 'default_backend' לטיפול בבקשות. אתה מגדיר את זה בחלק הקדמי. קראנו לזה 'linux_backend' עבור המקרה הזה.

לאחר מכן, צור קטע אחורי בעל שם זהה לזה שמוגדר בקטע הקצה. לאחר מכן עליך להשתמש במילת המפתח 'שרת' ואחריה את שם השרת שלך וכתובת ה-IP שלו. התמונה הבאה מראה שהגדרנו את שרת 'linuxhint1' באמצעות IP 127.0.0.1 ויציאה 8001:

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

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

$ python3 -m http.server 8001 --bind 127.0.0.1

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

בטרמינל אחר, בואו נשתמש בפקודה 'curl' כדי לשלוח בקשה לשרת.

$ curl <כתובת IP>

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

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

כך תוכל להגדיר HAProxy פשוט לאתר או לאפליקציה שלך.

עבודה עם כללים

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

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

יתרה מכך, יש לנו את ה-'default_backend' ו-'use_backend' נוסף שהוא מאגר שרתים שונה שבו נשתמש בהתאם ליציאה ממנה מגיעות הבקשות. בתצורה הבאה, כל הבקשות דרך יציאה 81 מטופלות על ידי השרתים ב-'Linux2_backend'. כל בקשות אחרות מטופלות על ידי 'default_backend'.

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

הפעל מחדש במהירות את שירות HAProxy.

בואו ניצור את שרת האינטרנט באמצעות Python3 ונקשר את הבקשות ביציאה 8002 שהיא שרת הקצה החלופי.

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

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

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

סיכום

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