日子過得太索然無味了,研究了一下,所謂的負載均衡(主要是windows服務器IIS下的)。先看看分析圖:
環境:
linux服務器: centos 6.3
windows服務器: windows server 2012 IIS 8.5
數據庫: Sql Server 2008 R2
我在centos 上部署了nginx,做負載均衡,IIS上放了兩個站點A,B(這樣設計不合理,應該是一台服務器配一個站點,多個應用服務器部署同一個站點,但是我實在是沒有多的服務器了,就兩,在一個IIS上部署多個站點與多個IIS部署一個站點原理差不多。)對於多站點共享session,我采用的是最簡單的微軟提供的Session 數據庫。
首先部署nginx, 可以參考<<雲平台開發架構分析系列8:Nginx服務器初次使用講解》系列文章部署,隨后我們打開VS2010,創建兩個web項目,然后放到IIS上,具體部署請看《IIS部署ASP.NET MVC項目》
隨后我們在windows服務器上的SQL Server 2008上添加ASPStat數據庫,打開windows 服務器然后查找aspnet_regsql.exe(Framework64下的)
我們找到aspnet_regsql.exe的路徑,然后在cmd 用cd 打開該路徑,執行命令:
aspnet_regsql.exe -S . -u sa -p password p
隨后創建ASPStat數據庫
然后我們在web.config 里面配置:
<sessionState mode="SQLServer" sqlConnectionString="Data Source=xxxxx; User ID=sa; Password=xxxxxxx;"> </sessionState> <machineKey decryption="AES" decryptionKey="869BF3D585F39B25C032E42A51B9C8C6DBA5CAE6EEB6DC48,IsolateApps" validationKey="6080AA874E125C595E4A5986A754ABC67BC5D10DC39CCE2BBE0A1AF5B61D3E03C6BD5C97A812F6E160F37337EEEE2C27619A3B18C84A26D5BB417CA8969EF9F3,IsolateApps"/>
配置完之后,我們就能在session 數據庫里面看到session信息了。
下面我們測試下,首先我在360瀏覽器里面訪問IIS上的站點:
session數據庫中的截圖:
火狐瀏覽器的測試:
session數據庫中的截圖
的確實現了多站點的session共享,但是在實際項目中這種設計性能不行,還是建議redis, memcached來存儲session比較好,而且.net 的第三方session接口做的也不錯。
參考:
Nginx + IIS + Web前端(Spring MVC)——負載均衡(二)