apache+tomcat+jk 負載均衡初篇

起因 : 說起和負載均衡還是在我面試的時候被面試官問到,正好項目當中有用redis 實現分佈式session 的管理,這才讓我想寫一篇關於負載均衡的文章

首先我不會介紹tomcat 如何安裝的問題,jdk 環境變量如何配置的,還是需要有一定開發基礎的

那麼爲什麼會採用 apache+tomcat+jk 呢 我覺得學習一個東西先慢慢的找資料,然後一步一步瞭解,比較,學習的一個過程 其實還有 nginx 也可以實現


首先呢先簡單介紹下 apache 服務器實現了什麼 apache 可以處理靜態頁面 而 tomcat 在處理動態展現的時候比較好,apache 可以充當分發角色 可以配置多個tomcat 來實現負載均衡


我的版本是 tomcat-6.0 左右就可以 apache 是 2.4x 左右 jdk 1.7 windows 7 我會寫出我配置的詳細步驟,及遇到的一些問題


tomcat 下載地址

http://tomcat.apache.org/

apache 服務器下載地址

http://httpd.apache.org/


首先把下載的tomcat 複製一份 分別叫tomcat1,tomcat2 進行解壓

然後把apache 解壓目錄如下:



然後打開conf 目錄編輯httpd.conf 在最後加入一行

Include conf/mod_jk.conf

然後在conf 目錄下創建mod_jk.conf 文件 內容如下

LoadModule jk_module modules/mod_jk.so
 
JkWorkersFile conf/workers.properties

#指定那些請求交給tomcat處理,"controller"爲在workers.propertise裏指定的負載分配控制器   
JkMount /*.jsp controller

首先我要簡單介紹下 mod_jk.so 是個什麼 在apache 和 tomcat 整合中它其實起到了重要作用

下載地址

http://mirror.bjtu.edu.cn/apache/tomcat/tomcat-connectors/jk/binaries/windows/ 記住選擇和apache 相對應的版本即可

下載過了解壓會有mod.jk.so 文件然後你知道放在哪裏了吧,把文件放到我們apache 的modules 目錄中你懂得。

在介紹下 workers.properties 裏面是什麼,同時也是需要我們在conf 目錄下面創建的,裏面主要是負載的一些配置

worker.list = controller,tomcat1,tomcat2
#tomcat1
worker.tomcat1.port=8009       
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1
#tomcat2
worker.tomcat2.port=8109     
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=2
#========controller========
worker.controller.type=lb
worker.controller.balance_workers=tomcat1,tomcat2
worker.lbcontroller.sticky_session=0
worker.controller.sticky_session_force=true
worker.connection_pool_size=3000
worker.connection_pool_minsize=50
worker.connection_pool_timeout=50000

然後是不是就搞定了呢 當然不是了,還需要配置tomcat,由於tomcat 默認就是8009 記住我說的不是訪問端口往下看你就明白了

我們tomcat1 改動不大,直接修改tomcat2 配置如下

1)修改 server.xml 文件中

<Server port="8105" shutdown="SHUTDOWN"> 原來是8005 爲了避免和tomcat1 的重複 port 可以隨便不固定

2)由於我們的訪問端口都是8080 所以需要修改下 

<Connector port="9999" protocol="HTTP/1.1"   maxThreads="150" connectionTimeout="20000"  redirectPort="8443" />

3)是重點了

<!-- Define an AJP 1.3 Connector on port 8009 -->
 <Connector port="8109" protocol="AJP/1.3" redirectPort="8443" /> 知道8190 指的是哪裏吧,就是workers.properties tomcat2配置的端口了

4)往下

 <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2"> jvmRoutue 改成我們配置的, 記住tomcat1 裏面的也要改下 改成tomcat1 我就不多說了

在裏面添加

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

是不是很簡單啊,基本tomcat 的已經配置完成了


啓動的順序最好是

apache tomcat 

然後先啓動 apache 解壓的bin 目錄有啓動httpd.exe 如果你沒jdk 配置環境變量窗口會一閃而過,然後你會發現你你jdk 配置了也會一閃而過

原因就是我們需要配置 apache 的 httpd.exe -k install -n apache2.4 具體咋配置我忘了 不行你在查查吧

如果配置好了會多個


啓動就好了

然後你就可測試了 localhost/test 是走apache 的 你可以後臺打印出語句 然後把其中tomcat 關掉另一個也可以使用

由於,我之前並沒有接觸過這類的,可能說的並不是特別對但是 程序是沒有問題的,建議大家多多查找資料,共同提高

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章