אז לא הבנת
רשמת - "חייב להיות פה משהו יותר טריקי, כי אם יש 2 שרתים, כשיש בתווך load balance, יש פה למעשה 3 שרתים. אם ה-session הוא client מול שרת, והפניה היא אך ורק ל-LB מצד ה-client, אז ה-session נפתח מול ה-LB, והוא גם אתר - נראה לי"
ה session לא נפתח מול ה load balancer, ה load balancer הוא לא אתר.
כל תפקידו של ה load balancer להיות סוג של proxy בין ה client לשרתי אפליקציה שלך.
ה client אכן פונה ל load balancer, ה load balancer מפנה את ה request לאחד מהשרתים שלך (שרתים שכתובות ה ip מוגדרים אצלו לביצוע balance ביניהם), השרת מקבל את ה request יוצר session מבצע את מה שהוא אמור לבצע ומחזיר response, ה load balancer (כסוג של proxy) פשוט מחזיר את ה response ל client !!! הוא לא קשור לשמירה של ה session !!!
במידה ואתה מגדיר אותו כ Sticky Sessions הוא יודע שכאשר הוא הפנה אותך (הכוונה ל client) בפעם הראשונה לשרת X הוא אמור להמשיך ולהפנות אותך לשרת X (כלומר, שלא יהיה מצב שב request אחד תגיע לשרת X וב request שני תגיע לשרת Y), איך הוא מבצע את זה, ככל הנראה (אני לא בטוח בזה ב 100%) הוא מוסיף ל requset הראשון non persisted cookie שזה אומר cookie שיש לו תוקף כל עוד הדפדפן פתוח, והוא מבצע מעכב לפי ה cookie הנ"ל, כלומר לפי ה cookie הזה הוא יודע להחזיר אותך לשרת X.
כמו שכבר אמרתי, במידה וה load balancer שלך לא עובד בתצורה Sticky Sessions (הגדרה ברמת ה load balancer) כלומר, כל request יכול להגיע לכל שרת בצורה רנדומלית (לפי ההחלטה של ה lb) אתה צריך לדאוג לבד לכך שה session שלך לא יעבוד לוקאלי (משמע לא in-proc), זה יכול להיות מול sql server, יכול להיות מול appfabric cache וכ"ו - יש על זה אינסוף מאמרים.
יותר ברור ?