最近tomcat總是記憶體溢位,於是就多看了一些tomcat的文章,今天恰好也看到了一篇關於tomcat負載均衡的東西
就好奇的配置了一下,感覺很爽,過程中出現了一些問題,做以下簡單的總結:
(說一下自己簡單的理解,負載均衡就是分擔以下一台伺服器上面的應用的負載,減輕伺服器的壓力,我看到的最簡單的效果就是實現了多個tomcat配置多個埠
但是可以用80埠同時訪問,並且互不影響,然後可以直接配置虛擬主機)
網上的配置文件
下面就開始進行了安裝測試:
之後在%apache_home%\conf\httpd.conf的最後面新增
# module mod_jk config file
include conf/extra/mod_jk.conf
在%apache_home%\conf\extra\目錄下新建檔案:mod_jk.conf,內容如下
#配置 mod_jk conf
#載入集群中的workers
jkworkersfile conf/workers.properties
#載入workers的請求處理分配檔案
jkmountfile conf/uriworkermap.properties
#指定jk的日誌輸出檔案
jklogfile logs/mod_jk.log
#指定日誌級別
jkloglevel info在%apache_home%\目錄下新建檔案:workers.properties,內容如下:
# worker列表
worker.list=lb_worker,jkstatus
#第乙個worker的配置,名為worker_1
#tomcat的主機位址,如不為本機,請填寫ip位址
worker.worker_1.host=localhost
#ajp13 埠號,對應tomcat配置檔案server.xml中connector port="8009",預設8009
worker.worker_1.port=8009
worker.worker_1.type=ajp13
#負載的權重值,越高表示負載越大
worker.worker_1.lbfactor=1
#第二個worker的配置,名為worker_2
worker.worker_2.host=localhost
#ajp13 埠號,對應tomcat配置檔案server.xml中connector port="9009"
worker.worker_2.port=9009
worker.worker_2.type=ajp13
worker.worker_2.lbfactor=1
#lb_worker,用於負載均衡分發的控制器
worker.lb_worker.type=lb
#重試次數
worker.lb_worker.retries=3
#指定負載的worker列表,用逗號分隔
worker.lb_worker.balance_workers=worker_1,worker_2
#配置session會話是否為粘性
#這樣負載均衡器lb就會盡量保持乙個session,也就是使使用者在一次會話中跟同乙個tomcat進行互動
worker.lb_worker.sticky_session=true
#如果sticky_session設為true時,此處一般設為false
worker.lb_worker.sticky_session_force=false
#設定執行狀態的控制器
worker.jkstatus.type=status
在%apache_home%\目錄下新建檔案:uriworkermap.properties,內容如下
#所有請求都由lb_worker這個worker處理
/*=lb_worker
#所有包含jkstatus請求的都由名稱叫jkstatus的這個worker處理
/jkstatus=jkstatus
接下來對%tomcat_home%/conf/server.xml進行修改,其中要進行兩個tomcat的分別設定,並且和workers.properties裡面的對應的內容相匹配
對於安裝版本的tomcat我的配置如下:
<?xml version='1.0' encoding='utf-8'?>
對於免安裝版本的tomcat我的配置如下:
<?xml version='1.0' encoding='utf-8'?>
*(過程中出現的問題是,經常地因為占用埠不能啟動tomcat,所以小心的檢視了tomcat的埠使用情況:
必須保證
這兩個地方的命名和workers.properties裡面的對應的內容相匹配的同時保證tomcat的埠不能衝突,除了
的埠不能一樣
的埠也不能一樣
hello.jsp
<%
system.out.println("this is tomcat server worker_1");
%>
<%
out.println(request.getlocaladdr() + " : " + request.getlocalport()+"
this is tomcat server worker_1");
%>
和
<%
system.out.println("this is tomcat server worker_2");
%>
<%
out.println(request.getlocaladdr() + " : " + request.getlocalport()+"
this is tomcat server worker_2");
%>
這樣以後啟動tomcat,啟動apache
我在瀏覽器裡面輸入
http://localhost/hello.jsp同時重新整理瀏覽器
就會重複的出現:
localhost : 80
this is tomcat server worker_2
localhost : 80
this is tomcat server worker_1
起初的時候總是只能自動載入先開啟的tomcat
後來我做了如下修改:
#這樣負載均衡器lb就會盡量保持乙個session,也就是使使用者在一次會話中跟同乙個tomcat進行互動
worker.lb_worker.sticky_session=false
驗證成功
簡單的配置了一下負載均衡作為筆記,好吧,該睡了
apache tomcat 負載均衡
其實無論是分布式,資料快取,還是負載均衡,無非就是改善 的效能瓶頸,在 原始碼不做優化的情況下,負載均衡可以說 是最直接的手段了。其實拋開這個名詞,放開了說,就是希望使用者能夠分流,也就是說把所有使用者的訪問壓力分散到多台伺服器上,也可以 分散到多個tomcat裡,如果一台伺服器裝多個tomcat,...
apache tomcat 負載均衡
需要準備的環境 apache2.2 apache mod jk模組 自帶 tomcat6.0 apache端配置 conf httpd.conf中最後一行引用jk的配置檔案 include mod jk.conf mod jk.conf中的內容,載入了mod jk的庫檔案,指定了worker的配置檔...
apache tomcat 負載均衡
其實無論是分布式,資料快取,還是負載均衡,無非就是改善 的效能瓶頸,在 原始碼不做優化的情況下,負載均衡可以說 是最直接的手段了。其實拋開這個名詞,放開了說,就是希望使用者能夠分流,也就是說把所有使用者的訪問壓力分散到多台伺服器上,也可以 分散到多個tomcat裡,如果一台伺服器裝多個tomcat,...