מדריך שמסביר איך לאתר אם האתר הוא על כמה שרתים ובשביל לבדוק שגוגל רואה את האתר האמיתי ולא מגיע לגרסה שונה.
Load balancer בדרך כלל מקבע אותך לשרת אחד באמצעות Cookie (stickiness).
כדי לבדוק שרתים שונים צריך לשלוח בקשות בלי לשמור cookies.
כלומר כל request צריך להיראות כמו משתמש חדש.
אפשר גם למחוק קוקיז בדפדפן ולרענן כל פעם, אבל זה פחות נוח ומדוייק:
בדפדפן:
- פתח DevTools
- Application
- Cookies
- מחק:
- BIGipServerweekend_Pool_Https (או את כל הקוקיז)
- ואז refresh.
שיטה 1 - הפשוטה ביותר
צריך לשים פה את הכתובת שרוצים לבדוק במקום מה שבדוגמה
זה שולח בקשה בלי cookies בכלל.
כך ה-Load balancer יכול לשלוח אותך כל פעם לשרת אחר.
curl -I -H "Cache-Control: no-cache" -H "Pragma: no-cache" -H "Cookie:" "https://www.weekend.co.il/zimmers.aspx"
איך יודעים אם הגיע שרת אחר
תחפש שינוי ב-headers
לדוגמה:
- ETag
- Set-Cookie
- CF-RAY
- Server
- X-* headers
- Location
אם משהו משתנה בין בקשות = יש כמה שרתים.
שיטה 2 — בדיקה אוטומטית
for /l %i in (1,1,20) do curl -I -H "Cookie:" "https://www.weekend.co.il/zimmers.aspx"
זה שולח 20 בקשות שונות.
אם יש כמה שרתים = תראה הבדלים בתגובה.
שיטה 3 — בדיקת redirect בפועל *רלוונטי אם רוצים לבדוק הפניה 301, אם אכן בוצעה בכל השרתים*
במידה ורוצים לבדוק אם כל השרתים עושים redirect
curl -I -L -H "Cookie:" "https://www.weekend.co.il/zimmers.aspx"
תעשה זאת 20 פעמים.
אם באחת הבקשות אין redirect = שרת אחד לא מוגדר נכון.
שיטה 4 — בדיקת DevOps style
for /l %i in (1,1,20) do curl -s -D - -o nul -H "Cookie:" "https://www.weekend.co.il/zimmers.aspx" | findstr Location
זה ידפיס רק את ה-redirect
אם כל השורות זהות = כל השרתים מתנהגים אותו דבר.
בדיקת אחידות/שוני של קובץ Robots.txt בין שרתים
מטרה
לבדוק אם בכל בקשה מתקבל קובץ שונה מהשרתים.
כאשר יש כמה שרתים מאחורי Load Balancer, כל בקשה יכולה להגיע לשרת אחר.
לכן אנחנו שומרים כמה עותקים של הקובץ ומשווים ביניהם.
פקודות ל-PowerShell
curl https://www.weekend.co.il/robots.txt -o r1.txt
curl https://www.weekend.co.il/robots.txt -o r2.txt
curl https://www.weekend.co.il/robots.txt -o r3.txt
מה הפקודה עושה?
curl
כלי שמבצע בקשת HTTP כמו דפדפן.
-o r1.txt
שומר את התגובה בקובץ בשם r1.txt.
לאחר שלוש הפקודות יהיו לך שלושה קבצים:
r1.txt
r2.txt
r3.txt
כל אחד הוא תוצאה של בקשה נפרדת לשרת.
השוואת הקבצים
מטרה
לבדוק האם הקבצים שונים.
פקודה ב-PowerShell
Compare-Object (Get-Content r1.txt) (Get-Content r2.txt)
מה הפקודה עושה?
Get-Content
קורא את התוכן של הקובץ.
Compare-Object
משווה בין שני מקורות נתונים.
תוצאה אפשרית
אין פלט: (no output)
המשמעות: הקבצים זהים
יש פלט:
אם מופיעות שורות: InputObject SideIndicator
המשמעות: יש הבדל בין הקבצים
ואז כנראה שרת אחר מחזיר גרסה אחרת.
בדיקת Hash של הקבצים
זו הבדיקה הכי מדויקת.
במקום להשוות טקסט, מחשבים טביעת אצבע קריפטוגרפית של הקובץ.
אם אפילו תו אחד שונה – ה-hash יהיה שונה.
פקודות ל-POWERSHELL:
Get-FileHash r1.txt
Get-FileHash r2.txt
Get-FileHash r3.txt
מה הפקודה עושה?
Get-FileHash
מחשב hash (SHA256) של הקובץ.
לדוגמה פלט:
Algorithm : SHA256
Hash : 0092CA9A10A4337A6464DC2960E3A493CA3F17277CDAB34C96BDC926B244280B
אם כל הקבצים מחזירים אותו hash:
0092CA9A10A4337A6464DC2960E3A493CA3F17277CDAB34C96BDC926B244280B
אז: כל השרתים מחזירים בדיוק אותו קובץ
אם hash שונה: server אחד מחזיר קובץ אחר
וזו בעיה.
בדיקה בלי לשמור קבצים (לפי מספר תווים)
בדיקה מהירה יותר.
המטרה היא לבדוק אם גודל התוכן משתנה בין בקשות.
פקודה
(Invoke-WebRequest https://www.weekend.co.il/robots.txt).Content | Measure-Object -Character
מה הפקודה עושה?
Invoke-WebRequest
מוריד את הדף.
.Content
מוציא את תוכן הדף.
Measure-Object -Character
סופר כמה תווים יש בתוכן.
דוגמה לפלט
Characters
———-
15242
פירוש
אם בכל הבדיקות המספר זהה: 15242
אז כנראה הקובץ זהה.
אם לפעמים מתקבל:
15242
30507
זה אומר: יש שתי גרסאות שונות של הקובץ
וזה סימן שיש כמה שרתים שמחזירים תוכן שונה.