上次搞了Apache 2.2的集群方案,但是現在自己的機器和客戶的服務器一般都是64位的,而且tomcat已經到8了。重新做Apache 2.4.12 64位+Tomcat-8.0.32-windows-x64負載集群方案。
知其然知其所以然,先看下一些關鍵術語:
1、負載均衡(load balance)
在互聯網高速發展的時代,大數據量、高並發等是互聯網網站提及最多的。如何處理高並發帶來的系統性能問題,最終大家都會使用負載均衡機制。它是根據某種負載策略把請求分發到集群中的每一台服務器上,讓整個服務器群來處理網站的請求。
對於大部分公司,會選擇廉價有效的方法擴展整個系統的架構,來增加服務器的吞吐量和處理能力,以及承載能力,或者一些客戶不想繼續投入,典型啥事扔給研發人員的。
2、集群(Cluster)
用N台服務器構成一個松耦合的多處理器系統(對外來說,他們就是一個服務器),它們之間通過網絡實現通信。讓N台服務器之間相互協作,共同承載一個網站的請求壓力。
3、高可用(HA)
在集群服務器架構中,當主服務器故障時,備份服務器能夠自動接管主服務器的工作,並及時切換過去,以實現對用戶的不間斷服務。
4、session復制/共享
在訪問系統的會話過程中,用戶登錄系統後,不管訪問系統的任何資源地址都不需要重復登錄,這裡面servlet容易保存了該用戶的會話(session)。如果兩個tomcat(A、B)提供集群服務時候,用戶在A-tomcat上登錄,接下來的請求web服務器根據策略分發到B-tomcat,因為B-tomcat沒有保存用戶的會話(session)信息,不知道其登錄,會跳轉到登錄界面。
這時候我們需要讓B-tomcat也保存有A-tomcat的會話,我們可以使用tomcat的session復制實現或者通過其他手段讓session共享。
Apache +tomcat也有一些不足的地方,或者本博文有配置不對的地方,希望批評指正。以下為個人親測:
本次全部為64位系統,希望大家配置時版本一致,免得出問題。本次依然使用mod_jk方式。
配置出錯:一般有這幾種:
1、路徑錯誤;
2、版本錯誤,尤其jk版本和Apache版本,當大家把mod_jk.so已加載就報錯,不加載Apache正常啟動的時候就知道是版本不匹配錯誤;
3、昨天自己配置的時候一個網絡問題,在家的內網配置,配置3個tomcat,有一個tomcat部署到了阿裡雲的一台服務器上,死活tomcat啟動不了,啟動成功後死活session不共享,後來把這個tomcat挪到內網的一台機器上什麼事都沒有,這個問題以後再想。
JDK jdk1.7.0_80 64位 tomcat8需要jdk7及以上支持;
Apache:Apache_HTTP_Server_2.4.12
tomcat :apache-tomcat-8.0.32-windows-x64
mod_jk: tomcat-connectors-1.2.40-windows-x86_64-httpd-2.4.x
網絡環境:win7,64位,8G內存,一台機器裝apache和兩個tomcat
在磁盤根目錄下安裝Apache,安裝JDK,復制tomcat81 ,apache82,兩個tomcat 都能單獨啟動;
mod_jk解壓出來以後so文件之後,重命名為mod_jk.so,並放到Apache2.4/modules 目錄下;