多域名綁定Apabche2.4+Tomcat8.5+mod_jk負載均衡配置

環境:
雲服務器兩臺:192.168.0.2
192.168.0.3
系統:centos7
版本:Apache2.4
Tomcat8.5
Apache安裝在192.168.0.2上,並且使用mod_jk配置負載均衡,
Apache綁定域名a.com,和b.com,a.com作爲官網,php開發,
b.com作爲api接口域名,給app或前端頁面調用接口。

Tomcat安裝分別安裝在192.168.0.2和192.168.0.3上。
這裏不介紹軟件安裝方法,只介紹配置方法。
需求:如圖:
在這裏插入圖片描述
現需要

  1. 訪問a.com後,不需要tomcat處理,只需要請求到apache綁定的a.com的目錄下的資源文件即可。也就是訪問a.com,直接請求192.168.0.2上的a.com目錄文件。
  2. 訪問b.com後需要通過負載均衡分配給tomcat1和tomcat2處理。

Apache配置

本文apache爲yum安裝

vim /etc/httpd/conf/httpd.conf

在文件末尾添加上綁定的域名信息
綁定域名a.com

NameVirtualHost *80
<VirtualHost *:80>
 DocumentRoot /var/www/html/a.com
 ServerName a.com
 DirectoryIndex index.html index.htm index.jsp
</VirtualHost>

綁定域名b.com

<VirtualHost *:80>
 DocumentRoot /var/www/html/b.com
 ServerName b.com
 DirectoryIndex index.html index.htm index.jsp
 JkMount  /* controller  #重點配置 
 JkMount  /jkstatus stat #重點配置
</VirtualHost>

JkMount /* controller 意思是將此域名是所有請求都交由 controller控制器管理
JkMount /jkstatus 將此域名下的所有/jkstatus所有路徑都交由stat控制器管理
這裏的controller,stat控制器即是下文中workers.properties 配置的控制器。

如果不設置,那麼b.com的訪問跟會a.com訪問一樣會直接請求html/b.com的目錄文件了,那麼負載均衡將無法轉發任何流量。

配置負載均衡

apache2.4的httpd.conf文件末尾已自動加載conf.d下面的所有配置文件,所以我們只需要在這個目錄新建配置文件即可,無需再去httpd.conf添加引用
在這裏插入圖片描述

新建mod_jk.conf
vim  /etc/httpd/conf.d/mod_jk.conf 
LoadModule jk_module modules/mod_jk.so  #編譯好的mod_jk.so文件,編譯好會自動在modules目錄生成
JkWorkersFile conf.d/workers.properties      #加載負載均衡配置文件
JkMountFile conf.d/uriworkersmap.properties  #加載負載均衡忽略文件
JkLogFile logs/mod_jk.log          #設置日誌路徑
JkLogLevel info                          #設置日誌級別  info debug  warn
新建workers.properties
vim /etc/httpd/conf.d/workers.properties 
#work 控制器
worker.list = controller,stat
#========tomcat1========
worker.tomcat1.port=8009  							#ajp13端口號,在tomcat下server.xml配置,默認 8009 默認無需修改
worker.tomcat1.host=192.168.0.2 				    #tomcat的主機地址
worker.tomcat1.type=ajp13  							#協議類型 
worker.tomcat1.lbfactor=1						    # 值越高,分得的請求越多。
#========tomcat2========
worker.tomcat2.port=8009
worker.tomcat2.host=192.168.0.3
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=1
#========controller,負載均衡控制器========
worker.controller.type=lb									 #負載均衡控制器類型,lbfactor是負載平衡因數(Load Balance Factor)
worker.controller.balanced_workers=tomcat1,tomcat2 			#指定分擔請求的tomcat列表
# 粘性session(默認是打開的) 
# 當該屬性值=true(或1)時,代表session是粘性的,
worker.controller.sticky_session=true
#錯誤發生時的重試次數
worker.retries=3
# 設置用於負載均衡的server的session可否共享
worker.controller.sticky_session_force=false
worker.stat.type=status #負載均衡狀態查看設置

worker.controller.sticky_session,設置爲1或true使用粘着session,設置爲0或false不使用粘着session。如果sticky_session設爲true時,建議sticky_session_force設爲false,

此參數表明如果集羣中某臺服務器在多次請求沒有響應後,將轉發當前的請求到其它服務器上處理;sticky_session=false時,影響比較大,會導致轉發到其它服務器上的請求,找不到原來的session,

所以如果此時請求中有讀取session中某些信息的話,就會導致應用的null異常。sticky_session、sticky_session_force的默認值分別爲true,false。

sticky_session sticky_session_force 含義
true false SESSION會複製,有粘性
true true SESSION不復制,有粘性
false false SESSION會複製,無粘性
false true SESSION會複製,無粘性
新建
vim /etc/httpd/conf.d/uriworkersmap.properties
/*=controller
/jkstatus=stat
!/*.jpg=controller
!/*.gif=controller
!/*.png=controller
!/*.bmp=controller
!/*.html=controller
!/*.htm=controller
!/*.css=controller
!/*.js=controller

!/*.jpg=controller 表示controller控制器放行jpg文件
/jkstatus=stat 表示/jkstatus路徑又stat控制器控制
jkstatus目錄是查看負載均衡的狀態的頁面,如果不放行將無法查看此頁面

Tomcat設置

編輯配置文件

在這裏插入圖片描述

vim /usr/tomcat/apache-tomcat-8.5.31/conf/server.xml 

編輯Engine標籤,添加上jvmRoute=“tomcat1”,tomcat1即workers.properties 中的tomcat名稱。
兩個tomcat都要修改,

192.168.0.2 jvmRoute="tomcat1"
192.168.0.3 jvmRoute="tomcat2"

測試

偷懶複製了個頁面,
在兩個tomcat的運行目錄下新建test.jsp文件;

test.jsp

vim /usr/tomcat/apache-tomcat-8.5.31/webapps/test.jsp

<%@ page language="java" %>
<html>
 <head><title>Tomcat1 <!-- (tomcat2改爲2)--></title></head>
 <body>
  <h1><font color="red">Tomcat1  <!-- (tomcat2改爲2)--></h1>
  <table align="centre" border="1">
   <tr>
    <td>Session ID</td>
  <% session.setAttribute("abc","abc"); %>
    <td><%= session.getId() %></td>
   </tr>
   <tr>
    <td>Created on</td>
    <td><%= session.getCreationTime() %></td>
   </tr>
  </table>
 </body>
</html>

訪問a.com:正常顯示a.com的網站類容
在這裏插入圖片描述

訪問b.com/test.jsp
在這裏插入圖片描述
由於啓用了session,所以刷新並不會改變處理的tomcat服務器,需要用瀏覽器的隱身模式訪問。
關掉後重新訪問:
在這裏插入圖片描述

可以看到b.com所有jsp的動態請求,都會交給tomcat1或者tomcat2處理。

END

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