איזון עומסים וזמינות גבוהה של שרתי יישומים: Tomcat, Jboss ו- IIS

פורסם על ידי זאבנט | 24 בפברואר, 2017

סקירה כללית

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

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

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

על ידי הגדרת שרתי יישומים בזמינות גבוהה, אנו לפתור את הבעיות הבאות:

  1. שרת יחיד מאבד יעילות בעת טיפול בכמות גדולה של בקשות
  2. נתוני הפעילות באתר נשמרים במקרה של כשל בשרת
  3. מעדכן את היישום מבלי להפסיק את השירות

מהו היקף האינטרנט?

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

מהו שרת יישומים?

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

  1. אל האני חתול בר (או ידוע גם בשם Apache Tomcat או שרת Tomcat): יישום קוד פתוח של Java Servlet, JavaServer Pages, Java Expression שפה וטכנולוגיות Java WebSocket.
  2. JBoss or WildFly: שרת היישומים שפותח על ידי Red Hat.
  3. IIS (Internet Information Services): שרת היישומים שפותח על-ידי Microsoft.

הגדרת Zebalet Load Balancer

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

ערכת שרתי יישומים

שלב 0: שכפול שרת

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

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

JBoss מספק גם דרך פשוטה לאפשר שכפול הפעלה: על ידי סימון היישום כמו לחלוקה ב web.xml מתאר.

שכפול שירות עבור IIS ניתן להשיג באמצעות DFSR (קובץ מבוזר שכפול מערכת).

שלב 1: צור IP וירטואלי

לאחר התקנת Zevenet Load Balancer, יש צורך ליצור IP וירטואלי חדש, מהתפריט הראשי בחר רשת-> ממשקים וירטואליים-> פעולות-> צור

מצא את הממשק הפיזי שבו אתה רוצה ליצור IP וירטואלי

 

הקלד את השם והכתובת של ה- IP הווירטואלי החדש שלך. ואז שמור אותו על ידי לחיצה על כפתור "צור".

שלב 2: יצירת חוות http

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

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

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

שתי אפשרויות נוספות יוצגו. בחר את ה- IP הווירטואלי שנוצר בשלב 1 ויציאה (בדוגמה שאנו בוחרים ב- 80, מכיוון שהיא ברירת המחדל עבור פרוטוקול HTTP) ולחץ על שמור לַחְצָן.

שלב 3: הוסף את השירותים

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

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

ב צילום מסך לעיל יש לנו נוסף שירות עם שם השירות "app1".

 

כפי שאנו נהיה גישה לכל שלושת השירותים באמצעות אותה החווה, אנחנו צריכים להבחין בין שירותים אלה. לשם כך, אנו יכולים להגדיר ערך עבור דפוס כתובת אתר. שדה זה מאפשר לקבוע שירות אינטרנט לפי כתובת האתר שהלקוח מבקש באמצעות תבנית כתובת אתר ספציפית. בדוגמה שלנו, נכתוב ^ / app1. *, ^ / app2. * ו ^ / app3. *. לחץ על שינוי להחיל שינויים.

קח בחשבון כי backend חייב למצוא את הכתובת http://[VIRTUAL_IP]:[PORT]/[YOUR_SERVICE] (בדוגמה שלנו http://192.168.56.200/app1), כדי להבטיח זאת, ההקשר חייב להיות מוגדר בבקשה שלך. בדוגמאות שלנו נקים את ההקשר / app1 ל חתול בר, / app2 ל Jboss ו / app3 ל IIS. ה הקשר מייצג יישום אינטרנט הפועל בתוך מארח וירטואלי מסוים. במקרה הספציפי של IIS, ההקשרים מכונים כיישומים.

בדוגמה זו, יש לנו שני שרתים backends לכל יישום. אנו בוחרים IP, יציאה (ברירת המחדל של 8080 עבור חתול בר ו JBoss, ו 80 עבור IIS), פסק זמן ומשקל ולחץ על לשמור לַחְצָן.

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

בשירות הפרמטרים הגלובליים אנו יכולים כעת לשנות את שדה ההתמדה התמדה COOKIE: עוגיה מסוימת

בחר JSESSIONID כמו מזהה התמדה מזהה עבור Tomcat ו Jboss ו SessionID עבור IIS, ולאחר מכן לחץ על עדכן על הדף של הדף.

 

כעת, תחת אותה חווה עלינו להוסיף 2 שירותים נוספים באותו אופן מאשר app1 עבור app2 ו- app3, כולל עוגיית ההתמדה של JBoss (ברירת המחדל נקראת JSESSIONID) ו- IIS (קובץ ה- cookie המוגדר כברירת מחדל עבור ASP.NET הוא ASPXAUTH), בהתאמה, אבל אתה יכול להשתמש בקובץ cookie הנדרש על ידי היישום. כל שירות בחווה יש backends שלהם זה יכול להיות משותף בין חוות או חוות שירותים.

שים לב, סדר השירותים חשוב להתאים את דפוס כתובת האתר הנכון.

לבסוף, עלינו להחיל את השינויים על ידי הפעלה מחדש של החווה.

מזל טוב! הגדרת את שרתי היישומים שלך בזמינות גבוהה. ניתן לגשת אליו על ידי הקלדה http://[VIRTUAL_IP]:[PORT]/[YOUR_SERVICE] (בדוגמה שלנו http://192.168.56.200/app1, http://192.168.56.200/app2 or http://192.168.56.200/app3).

שלב 4: בדיקה מתקדמת

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

check_http -I HOST -w 10 -c 10 -t 10 -e 200 -p PORT -s '</html>'

לבסוף, לחץ על עדכן ב בוטון של הדף.

 

הפקודה check_http בודק חיבורי HTTP עם המארח שצוין. במקרה שלנו, אנו משתמשים באפשרויות הבאות:

-אני מארח: HOST HOST יוחלף על ידי כתובת ה- IP של ה- backend שהוגדרה.
-w 10: זמן תגובה שיביא למצב אזהרה: 10 שניות
-C 10: זמן תגובה למצב קריטי: 10 שניות
-10: 10 שניות לפני חיבור פעמים
-ה 200: מצפה מחרוזת 200 במעמד של תגובת השרת
-P פורט: ה- PORT של האסימון יוחלף ביציאה backend שהוגדרה.
-ש ' ': מחרוזת לצפות בתוכן היא ' '

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

שלב 5: אבטחה גבוהה

תקשורת מאובטחת ניתן להגדיר בקלות עם Zevenet Load Balancer, ולכן השלב הבא הוא לאפשר את המאזין HTTPS: על ערוך פרמטרים גלובליים של החווה מסך, אנא שנה את מאזין החווה מ- HTTP ל- HTTPS ואת היציאה הווירטואלית ל- 443.

עכשיו, את השירותים ניתן לגשת על ידי הקלדה https://[Your_virtual_ip]/[yourappservice] בדפדפן שלך.

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

שדה ciphers משמש לבניית רשימה של צופן המקובל על ידי חיבורי SSL כדי להקשיח את חיבור SSL. בבחירה אבטחה גבוהה, אנו נקבע כברירת מחדל ciphers.

kEECDH+ECDSA+AES128:kEECDH+ECDSA+AES256:kEECDH+AES128:kEECDH+AES256:kEDH+AES128:kEDH+AES256:DES-CBC3-SHA:+SHA:!aNULL:!eNULL:!LOW:!kECDH:!DSS:!MD5:!EXP:!PSK:!SRP:!CAMELLIA:!SEED

אפשרות נוספת היא אישורי HTTPS זמינים: רשימת תעודות תוצג כבחירה הנוכחית (רק עבור חוות HTTP, במקרה שלנו). אנחנו יכולים לבחור אחד מהרשימה ולחץ על להוסיף. לבסוף, לחץ על שינוי ולהפעיל מחדש את החווה כדי להחיל שינויים.

לקבלת מידע נוסף, ראה חוות פרופיל HTTP.

HTTPS יכול להיות מופעל גם בשרתי היישומים שלך, אם זה המצב, עליך להפעיל את האפשרות HTTPS backends.

תשתף:

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

האם המאמר הזה היה מועיל?

מאמרים נוספים