Apache負載平衡會話黏貼配置(JK模式)
在工作中,由於其他產品與Apache的反向 Proxy模式工作的不太好,所以需要把Apache與應用伺服器(Tomcat)的協同配置長mod_jk方式下的會話黏貼模式,在配置過程中,還是遇到了一些問題,主要是忘了修改Tomcat/conf/server.xml中的jvmRoute的名稱,導致會話黏貼一直不成功。下面以配置Apache與應用“app”整合為例,說明Apache如何與IP為“192.168.3.119”和“192.168.3.116”兩台機器上app應用協同的。
1.1 Apache與JK設定1.1.1 開啟mod_jk模組並攔截app請求
開啟apache安裝目錄下的conf/httd.conf檔案,在檔案末尾增加上如下代碼(如果以前用過其他方式配置apache與該app的整合,需要去掉相關配置;如果沒有,則直接加上下面的配置)。這裡apache的配置連接埠是81,apache預設配置連接埠是80,在實際使用中需要替換為apache的監聽連接埠。
此樣本中配置了對所有的webpic應用的請求,webpic應用的地址需要替換為實際的地址(這個是一個圖片的擷取應用,如果沒有圖片擷取,則可以去掉webpic的配置)。下面的紅色字型部分是需要注意的地方,如下:
#載入mod_jk Module LoadModule jk_module modules/mod_jk.so #指定appbalancer_jk.properties檔案路徑。 #如果apache的conf目錄下沒有該設定檔,則建立。內容見下節 JkWorkersFile conf/appbalancer_jk.properties <VirtualHost *:81> AddType text/javascript .js AddType text/css; .css AddType text/html;charset=UTF-8 .html ServerName my.app.com ServerAdmin test@sina.com.cn #webpic,Request static resources. Alias /webpic "D:\APPV7005\WCMData\webpic" <Directory "D:\APPV7005\WCMData\webpic"> Options -Indexes MultiViews FollowSymLinks Includes AllowOverride None Order allow,deny Allow from all </Directory> #指定那些請求交給tomcat處理 JkMount /app/services appbalance JkMount /app/*.* appbalancer JkMount /*.do appbalancer JkMount /app appbalancer JkMount /app/ appbalancer JkMount /app/sd appbalancer </VirtualHost> |
如果apache在編譯時間沒有編譯mod_jk.so模組,則可以進入apache官方網站進行下載,mod_jk下載的地址如下:
http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/
進入網址後,根據自己apache所安裝的作業系統進行下載,如果是linux系統,則點擊linux連結,根據apache的版本選擇相應的mod_jk.so檔案進行下載。
1.1.2 設定appbalancer_jk.properties檔案
開啟conf目錄下的“appbalancer_jk.properties”檔案(如果該檔案不存在,則建立該檔案),在檔案中填入如下內容。我們只要替換該檔案中的ip地址和連接埠號碼為app應用的實際ip地址和ajp通訊連接埠即可。紅色字型部分是我們需要替換的地方,如下表。m119和m116分別是APP應用伺服器的jvmRoute名稱,見下節配置。
#server 列表.mxxx是節點的名字,有多少個節點就設定幾個 worker.list=appbalancer,m119,m116 #ajp13 連接埠號碼,在tomcat下server.xml配置,預設8009 #tomcat的主機地址,如不為本機,請填寫ip地址 #server的加權比重,值越高,分得的請求越多。 #可以將主節點的比重設定為小一點的值 #========m119======== worker.m119.port=8009 worker.m119.host=192.168.3.119 worker.m119.type=ajp13 worker.m119.lbfactor=2 #========m116======== worker.m116.port=8009 worker.m116.host=192.168.3.116 worker.m116.type=ajp13 worker.m116.lbfactor=3 #========appbalancer,負載平衡控制器======== worker.appbalancer.type=lb worker.appbalancer.balance_workers=m119,m116 worker.appbalancer.sticky_session=true |
1.1.3 修改Tomcat的Server.xml
這裡以APP內建的應用伺服器Tomcat為例,開啟Tomcat/conf/server.xml檔案,找到下面的配置,增加上下面的紅色子圖地區。jvmRoute需要與“appbalancer_jk.properties”檔案中的worker名稱一致。
<!-- Define the top level container in our container hierarchy --> <Engine name="Catalina" defaultHost="localhost" jvmRoute="m116"> |
這裡需要注意的是,“m116”需要根據實際情況填寫,通常命名的格式是“m”加上知識庫所在的IP地址。如IP為“192.168.3.116”,則jvmRoute可以命名為“m116”。統一命名,方便管理。
注意:
本章節以兩個APP節點為例,需要分別開啟兩個APP的Tomcat/conf/server.xml檔案,jvmRoute分別設定為“m116”和“m119”,每個APP的jvmRoute名稱是不能相同的。