Murmur..

Sachiko amy Kawaii accumsan urna in mi. Aenean elementum egestas tortor. Donec neque magna, auctor a, dapibus sit amet, facilisis sit amet, ligula..

當 SquirrelMail 遇上 SLB

2007/06/30 by chinsan ()

其實也是因為這個月初接手一堆事情,才發現到這問題點,
就是比如 webmail(SquirrelMail) 本身有 n 台,後端部份:DB接 MySQL Farm、Storage 也都另外放 Storage Farm、IMAP 透過後端的 perdition (IMAP proxy) ,
然後前端是 SLB(設備是 WSD) 來做 connect session 分流與 failover 備援機制,因為我平常也幾乎沒在用該 webmail 不太清楚有什麼問題,月初剛接手不久就發現有些細節問題,比如:

可能 client 1 號在 01:02 被 WSD 導入到 webmail A號機,然後照原本 php 架構的話,那麼該用戶的 php session 就會被存在 php.ini 內設定的 session.save_path 值,也就是 A 號機本身的 /tmp 內,但 10 分鐘後(或不固定時間) client 1 號又點了 webmail (可能是重新整理 inbox, 或者看通訊錄或者寫信等等),WSD 可能會在這次 client 1 號第二次點的時候(第一次是登入),又把該 connect session 連到 webmail A-Z 其中一台去了,
所以呢,這樣子就會造成 webmail 判斷該用戶已經 timeout, 而又要重新登入。

這樣子的問題,在看過這篇之後,其中一句

If you want to share session information between two webservers, you can use that directory in some networked file system

給我一些啟發,雖然不喜歡把 php session 存放在 MySQL 內(感覺這樣是蠻蠢的自殺行為.... 1)..不是可以透過在每一台 Webmail 機器設定相關 php 的 session.save_path 值(預設值是 /tmp)都導向同一 folder嗎?

而那個 folder 就用後端(可以是 MySQL 或 Storage 或另起爐灶)的 filesystem 來用,當然那後端 filesystem 要能分享給前面的 webmail farm方式(我的作法是採取 NFS 並限定只有 webmail IP 才能用)。

另外,原本 webmail 介面寫的好像有些對非 IE的不友善,所以也順手改了一些 CSS 部份。

  1. 後來 vv 大神有開示:現在比較普遍使用 memcache 來解決不同台的 PHP session sharing issue []

One Response to “當 SquirrelMail 遇上 SLB”

  1. 不错,挺有启发

    pan

Leave a Reply