linux下一个apache+tomcat负载均衡和集群
先說一下我的環境
一個ubuntu虛擬機,
一個apache2.2示例
兩tomcat1.7示例
1.安裝apacheserver
sudo apt-get install apache2假設要重新啟動的話,執行命令:sudo /etc/init.d/apache2 restart
ubuntu下的apache會默認創建路徑/var/www,apache默認載入的時候,就是載入的這個路徑以下的
2.安裝兩個tomcat實例
去官網下載一個
然后在本地在cp一下,
此時文件夾結構為:
/home/hehe/my/soft/tomcat1,
/home/hehe/my/soft/tomcat2
3.安裝mod_jk
mod_jk實質上是Apache與Tomcat的連接器,并藉此附帶提供集群和負載均衡的功能。
地址為http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.31/x86_64/,注意要于你安裝的apache的版本號相應。
4.配置apache
? ? ubuntu默認會將apache的安裝文件放在/etc/apache2以下
進入這個文件夾之后,新建一個httpd.conf文件
放心apache啟動時,會載入這個文件的
然后編譯這個文件。加上這么句話
ServerName localhost:80include mod_jk.conf? ? ? ? ?然后我們在當前路徑下新建一個mod_jk.conf文件
這里先要將mod_jk-1.2.31-httpd-2.2.x.so放在當前路徑下
#load module mod_jk-1.2.31-httpd-2.2.3.so is for Apache 2.2.x. LoadModule jk_module /usr/lib/apache2/modules/mod_jk-1.2.31-httpd-2.2.x.so#這個是用來配置負載的 JkWorkersFile workers.properties #這個是打印日志 JkLogLevel debug #這個是日志的名稱 JkLogFile mod_jk.log #打印的級別 JkLogLevel warn所以在當前路徑下咱們還得新建一個 mod_jk.log,文件。這里面會記錄日志
接下來配置workers.properties文件
在當前路徑下新建一個workers.properties文件
#負載均衡器 worker.list=LB_worker,worker_1,worker_2,jkstatus #第一個tomcat的配置 worker.worker_1.host=localhost #tomcat在哪個機器上面,若是別的機器。須要寫上別的機器的ip地址 worker.worker_1.port=8009 #端口,等會在tomcat里面配置的時候要一一相應 worker.worker_1.type=ajp13 worker.worker_1.lbfactor=1 #載入因子#第二個tomcat的配置 worker.worker_2.host=localhost worker.worker_2.port=9009 worker.worker_2.type=ajp13 worker.worker_2.lbfactor=1 #類型是一個負載均衡器 worker.LB_worker.type=lb #重試三次 worker.LB_worker.retries=3 #負載給tomcat1和tomcat2 worker.LB_worker.balance_workers=worker_1,worker_2 #這是說session的粘性,就是說同一個session是否提交給同一個tomcat。由于等會兒,集群的時候要用到一個session提交給兩臺機器,所以設置為false worker.LB_worker.sticky_session=false worker.LB_worker.sticky_session_force=false #jk的狀態 worker.jkstatus.type=status5.配置請求交給負載均衡器在/etc/apache2/sites-available下有個default文件,
在這個文件的最后一句話</VirtualHost>之前加上這么一段
JkMount /*.jsp LB_worker JkMount /jkstatus jkstatus然后就交給了LB_worker6.接下來配置tomcat1
改一下conf以下的server.xml文件,改port,和上面的相應
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />然后找到這句話,改成這樣,注意worker_1和workers.properties相應 <Engine name="Catalina" defaultHost="localhost" jvmRoute="worker_1">
若是集群的話,還要改一句話。把這句話的前后的凝視符號給去掉,放開 <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
接下來配置tomcat2
先把以下這句話給改了,port號改為8006
<Server port="8006" shutdown="SHUTDOWN">然后改以下這句
<Connector port="9082" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="9443" />改一下conf以下的server.xml文件,改port。和上面的相應 <Connector port="9009" protocol="AJP/1.3" redirectPort="9443" />
然后找到這句話,改成這樣。注意worker_2和workers.properties相應 <Engine name="Catalina" defaultHost="localhost" jvmRoute="worker_2">
若是集群的話,還要改一句話,把這句話的前后的凝視符號給去掉,放開 <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
7.新建一個項目mytest,里面有一個叫wel.jsp的文件,
這個jsp的內容是:
<%@ page language="java" contentType="text/html; charset=GB18030"pageEncoding="GB18030"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <title>Insert title here</title> </head> <body> <%System.out.println("this is tomcat server nod 2"); %> <% int i=0;while(i<3000){i++;}out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>this is tomcat server nod 2"); %> </body> </html>然后將這個項目放在tomcat2的webapp以下同一時候也放在tomcat1的文件夾下
注意。以下這句改成這樣,2改為1
System.out.println("this is tomcat server nod 1");out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>this is tomcat server nod 1");
8.重新啟動一個apache,tomcat1,tomcat2
然后在瀏覽器里面訪問
http://127.0.0.1/mytest/wel.jsp
不斷的刷新頁面。你會發現其在node1,和node2之間不斷換。說明請求有時候交給了1,有時候交給了tomcat2,實現了負載均衡的功能
以下在來實現tomcat1。和tomcat2的集群功能
所謂集群就是。一個client的相應的session在兩個tomcat中有一模一樣的相應的session
在mytest里面在新建一個wel2.jsp文件
里面的內容為:
<%@ page contentType="text/html; charset=utf-8" %> <%@ page import="java.util.*" %> <html><head><title>Cluster App Test</title></head> <body> Server Info: <% out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%> <%out.println("<br> ID " + session.getId()+"<br>");// 在session里面設置屬性String dataName = request.getParameter("attributeName");if (dataName != null && dataName.length() > 0) {String dataValue = request.getParameter("attributeValue");session.setAttribute(dataName, dataValue);}out.print("<b>打印Session內容:>");Enumeration e = session.getAttributeNames();while (e.hasMoreElements()) {String name = (String)e.nextElement();String value = session.getAttribute(name).toString();out.println( name + " = " + value+"<br>");System.out.println( name + " = " + value);} %><form action="wel2.jsp" method="POST">屬性名:<input type=text size=20 name="attributeName"><br>值:<input type=text size=20 name="attributeValue"><br><input type=submit></form> </body> </form> </body> </html>兩個tomcat里面都有一個這種文件然后兩個tomcat的web.xml以下加上以下這句話
<distributable/>,兩個session之間能相互復制
重新啟動
然后訪問http://10.211.55.3/mytest/wel2.jsp
又一次輸入這個地址
你會發現確實交給了兩個server,并且session里面的值一模一樣!
集群完畢。
版權聲明:本文博客原創文章,博客,未經同意,不得轉載。
轉載于:https://www.cnblogs.com/mfrbuaa/p/4662420.html
總結
以上是生活随笔為你收集整理的linux下一个apache+tomcat负载均衡和集群的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信用卡面签后会被拒吗?面签时要注意什么?
- 下一篇: 教你学会Linux/Unix下的vi文本