多台伺服器之間共享session

2021-06-27 15:47:30 字數 1411 閱讀 9817

1. 寫客戶端cookie的方式 

當使用者登陸成功以後,把**網域名稱、使用者名稱、密碼、token、session有效時間全部採用cookie的形式寫入到客戶端的cookie裡面,如果使用者從一台web伺服器跨越到另一台伺服器的時候,我們的程式主動去檢測客戶端的cookie資訊,進行判斷,然後提供對應的服務,當然,如果cookie過期,或者無效,自然就不讓使用者繼續服務了。當然,這種方法的弊端就不言而喻了,比如客戶端禁用了cookie或者cookie被黑客竊取了呢? 

2. 伺服器之間session資料同步的方式 

假設web伺服器a是所有使用者登陸的伺服器,那麼當使用者驗證登陸一下,session資料就會寫到a伺服器裡,那麼就可以自己寫指令碼或者守護程序來自動把session資料同步到其他web伺服器,那麼當使用者跳轉到其他伺服器的時候,那麼session資料是一致的,自然就能夠直接進行服務無須再次登陸了。缺點是,可能會速度慢,不穩定,如果是單向同步的話,登陸伺服器出現問題,那麼其他伺服器也無法服務,當然也可以考慮雙向同步的問題。 

3. 利用nfs共享session資料的方式 

其實這個方案和下面的mysql方案類似,只是儲存方式不一樣。大致就是有一台公共的nfs(nfs是network file system的簡寫,即

網路檔案系統.

網路檔案系統是freebsd支援的檔案系統中的一種,也被稱為nfs. nfs允許乙個系統在網路上與他人共享目錄和檔案。通過使用nfs,使用者和程式可以像訪問本地檔案一樣訪問遠端系統上的檔案

)伺服器(network file server)做共享伺服器,所有的web伺服器登陸的時候把session資料寫到這台伺服器上,那麼所有的session資料其實都是儲存在這台nfs伺服器上的,不論使用者訪問哪台web伺服器,都要來這台伺服器獲取session資料,那麼就能夠實現共享session資料了。缺點是依賴性太強,如果nfs伺服器down掉了,那麼大家都無法工作了,當然,可以考慮多台nfs伺服器同步的形式。 

4. 利用mysql資料庫共享session資料的方式 

這個方式與nfs的方式類似,也是採用一台mysql伺服器做共享伺服器,把所有的session的資料儲存到mysql伺服器上,所有web伺服器都來這台mysql伺服器來獲取session資料。缺點也是依賴性太強,mysql無法工作了影響所有的web伺服器,當然,可以考慮多太mysql資料庫來共享session,使用同步mysql資料的方式。 

5. 使用硬體裝置 

這個算是比較成熟的解決方案了,使用類似big-ip(負載均衡器是一種採用各種分配演算法把網路請求分散到乙個伺服器集群中的可用伺服器上去,通過管理進入的web資料流量和增加有效的網路頻寬,從而使網路訪問者獲得盡可能最佳的聯網體驗的硬體裝置。

)的負載裝置來實現資源共享,那麼就能夠又穩定又合理的的共享session了。目前很多門戶**採用這種方式。缺點很明顯了,就是要收費了,硬體裝置肯定需要購買成本的,不過對於專業或者大型應用來講,是比較合理並且值得的

多台伺服器session cookie之間的關係

1 同域跨子域使用一套session和cookie的辦法,ini set session.cookie domain 當前域 可以在php.ini裡修改配置 session.cookie domain 2 同域不同埠 在區域網內使用ip加埠的訪問方式搭了兩個相同程式的站,結果發現使用者在乙個站下登入...

nfs 多台伺服器共享目錄

最近遇到了點問題,專案本來以為不會部署多個站點,上傳檔案之類的就直接配置到本機的目錄下了,這樣一來部署多個站點也沒有公用的檔案伺服器,壞事了,網上一找辦法,nfs能解決這個問題,那就開始試一試。伺服器 centos 6.4 64 server ip 10.1.1.52 伺服器 centos 6.4 ...

nfs 多台伺服器共享目錄

最近遇到了點問題,專案本來以為不會部署多個站點,上傳檔案之類的就直接配置到本機的目錄下了,這樣一來部署多個站點也沒有公用的檔案伺服器,壞事了,網上一找辦法,nfs能解決這個問題,那就開始試一試。伺服器 centos 6.4 64 server ip 10.1.1.52 伺服器 centos 6.4 ...