קצת על Zone Preference and failover בחוות Citrix XenApp
על- Zones בקצה קצהו של המזלג:
חוות Citrix גדולות מחולקות לא פעם ל- Zones לשם חלוקה גאוגרפית של השרתים. בדומה מאוד לחלוקה של Active Directory domain, שם החלוקה היא ל- Sites.
לרוב, כל Zone מכיל את כל שרתי ה- XenApp הקרובים גאוגרפית אחד לשני ולכל Zone שכזה ישנו Zone Data Collector האחראי על אותו ה- Zone (נתונים בדבר חיבורי משתמשים, עומסים וכו’). החלוקה ל- Zones נעשית כדי להחזיק שרתים הקרובים גאוגרפית כמה שניתן למיקום המשתמשים או/ו למיקום ה- Data Center האזורי.
עיקר הכוונה של החלוקה ל- Zones היא פישוט ומרכוז הניהול של החווה (כמובן כל עוד אין צורך לחלק את החווה ל- Zones עקב מספר רב של שרתים), ככה שמקונסול אחד אפשר לראות (ולנהל) נתונים על כל השרתים בכל ה- Zones של החווה.
אני אתייחס כאן לאופן העבודה עם Web Interface (על אופניו השונים, Site או Service) בעיקר כי ה- Zone Preference and Failover עובד רק כאשר מתחברים דרך ה- Web Interface וגם כי תצורת ההתחברות מקליינט מלא הולכת לא להיתמך יותר לקראת סוף השנה הבאה – למעשה Citrix Client 11 הוא הקליינט האחרון שמכיל את התצורה המלאה.
קצת רקע על איך הכל עובד. כאשר משתמש ניגש ל- Web Interface ומזדהה מולו, ה- WI פונה לשרתי ה- XML שהוגדרו בשבילו ובודק איזה אפליקציות נגישות למשתמש. כאשר המשתמש לוחץ על אפליקציה מסוימת, ה- Zone Data Collector של אותו שרת XML בודק את השרתים הזמינים לאותה האפליקציה (הגדרה לכל אפלקיציה) ומה השרת הכי פחות עמוס בין שרתים אלו. לאחר ההחלטה, המשתמש מופנה לשרת הרוולנטי ומתחיל לעבוד על האפליקציה.
במקרה ויש לנו מספר Zones הפזורים ברחבי העולם עם מספר שרתים בכל אחד מהם ואם נגדיר את כל השרתים האלה כזמינים עבור אפליקציה מסוימת, יכול להיווצר מצב שמשתמשים מיפן יופנו לעבוד על שרתים בארה”ב במקום על שרתים הממוקמים ביפן. לדוגמא, אם שרת ה- XML המוגדר ב- WI אליו פונים המשתמשים מיפן נמצא בארה”ב, ה- Zone Data Collector שיהיה אחראי למצוא שרת זמין עבור משתמשים אלה יהיה אמריקאי בכל רמח איבריו, מה שאומר שהוא לא ישים יותר מדי על שרתים מה- Zone היפני ויפנה את היפנים המסכנים לעבוד על שרת בארה”ב. באסה להם.
אבל… יש פיתרון. קיים Citrix Policy הנקרא Zone Preference and failover. תפקידו הוא להפנות את המשתמשים ל- Zone המתאים להם ביותר ולהגדיר מה קורה אם אותו Zone לא זמין. את הפוליסי אפשר להגדיר לפי כתובות ה- IP של המשתמשים הניגשים לחווה, לפי שייכות לקבוצות ב- AD, או לפי כל סינון אחר. בצורה זאת, ניתן באפליקציה אחת להגדיר את כל מספר שרתים מ- Zones שונים, והמשתמשים יופנו לשרתים המתאים להם ביותר.
ההגדרה היא כזאת, כאשר משתמש X ניגש, מה יהיה ה- Zone אליו החיבור שלו יופנו (וממנו יבחר השרת המתאים לו ביותר) והאם להפנות את המשתמש ל- Zone אחר במקרה שה- Zone שבחרנו עבורו (Primary Group) לא זמין.
לשם ההמחשה, קיימים אצלי שני Zones, בשמות המפתיעים Zone1 ו- Zone2.
כדי להפנות את המשתמשים הקרובים יותר לכל Zone, יצרתי שני Policies, הלא הם Zone1 Policy
ו- Zone2 Policy.
ב- Zone1 Policy הגדרתי שמשתמשים מכתובות 192.168.1.1-200 יעבדו עם Zone1, ואם הוא לא פעיל, הוא יופנו לעבוד עם Zone2. הערת שוליים – כמובן שיכולתי להגדיר שהם לא יוכלו לעבוד מול אף Zone אחר פרט ל- Zone1.
וב- Zone2 Policy הגדרתי שמשתמשים מכתובות 192.168.2.1-200 יעבדו עם Zone2, ואם הוא לא פעיל, הוא יופנו לעבוד עם Zone1.
כאשר משתמש עם כתובת 192.168.1.3 ניגש ל- WI (במקרה הזה לא משנה לאיזה שרת XML באיזה Zone הוא מופנה), הוא יופנה תמיד לעבוד עם שרתים ב- Zone1. כמובן במקרה והם אכן זמינים. אם לא, המשתמש יופנו לעבוד על שרתים ב- Zone2.
אותו הסיפור יקרה עם משתמשים מרשת 192.168.2, רק הפוך. ה- Zone הראשי יהיה Zone2 והמשני -במקרה ו- Zone2 לא יהיה זמין – יהיה Zone1.