一 、LNMT架構html
LNMT架構:顧名思義是指 Linux Ningx MySQL Tomcat java
架構圖:mysql
配置步驟:linux
一、Tomcat服務器配置nginx
(1)設置服務器內網ip地址 # ifconfig eth0 192.167.13.2/24 up 設置ip地址 (2)安裝Tomcat #請參照個人博客http://jungege.blog.51cto.com/4102814/1409290 #service tomcat start 啓動服務 (3)編輯配置文件 # vim /usr/local/tomcat/conf/server.xml <Host name="www.a.com" appBase="/www/webapps" unpackWARS="true" autoDeploy="true"> <Context path="" docBase="ROOT" reloadable="true" /> <Valve className="org.apache.catalina.valves.AccessLogValve"directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host> # mkdir -pv /www/webapps/ROOT 建立web程序存放目錄 (4)部署web程序 下載JavaCenter_Home_2.0_GBK.tar.bz2 # tar xf JavaCenter_Home_2.0_GBK.tar.bz2 # cd JavaCenter_Home_2.0_GBK # mv * /www/webapp/ROOT 程序部署完畢,接下來咱們部署Ningx反向代理服務器
二、配置Ninx服務器web
(1)安裝Nginx # ifconfig eth0 172.16.13.4/16 up 配置外網地址 # route add default gw 172.16.0.1 # ifconfig eth1 192.168.13.4/24 up 配置內網地址 下載rpm包 nginx-1.4.7-1.el6.ngx.x86_64.rpm # rpm -ivh nginx-1.4.7-1.el6.ngx.x86_64.rpm # service nginx start 啓動服務 # ss -ntl | grep 80 編輯配置文件 # cd /etc/nginx/conf.d # vim default.conf 添加一個server server { listen 80; server_name localhost; location / { root /web/htdocs; index index.html index.jsp index.htm; } location *~ \.(jsp|do)$ { proxy_pass http://www.a.com:8080; ---動態.jsp .do 頁面反向代理至Tomcat1服務器 } } # mkdir -pv /web/htdocs # vim /web/htdocs/index.html 建立一個html靜態頁面 <h1> Welcom to Nginx Server!!!</h1> # service nginx reload # vim /etc/hosts 192.168.13.2 www.a.com
配置MySQL服務器sql
咱們將Tomcat和MySQL裝在同一臺機器上 apache
# yum -y install mysql mysql-server 受權用戶 #mysql mysql> grant all on *.* to 'root'@'localhost' identified by '123456'; mysql> flush privileges;
Web瀏覽器測試vim
請求靜態頁面centos
請求動態頁面
已經看到靜態頁面nginx直接處理,動態頁面由tomcat處理後返回給nginx代理
成功實現動靜分離!
二 、LAMT架構
LAMT架構:Linux Apache MySQL Tomcat
架構圖
Apache與Tomcat的鏈接通訊依賴於mod_proxy模塊或者mod_jk模塊 mod_proxy模塊使用時的協議爲http、https、ajp mod_ajp 模塊使用時的協議爲ajp
根據上圖的架構,咱們來配置
配置步驟
一、配置TomcatA服務器
(1)配置ip地址 # ifconfig eth0 192.167.13.2/24 up 設置ip地址 (2)安裝 Tomcat # 請參照個人博客 http://jungege.blog.51cto.com/4102814/1409290 # service tomcat start # ss -ntl | grep 8080
接下來咱們配置httpd服務器
二、配置httpd服務器(使用mod_proxy模塊)
###httpd基於mod_proxy模塊,使用http協議與tomcat通訊
Apache服務器使用mod_proxy 模塊 作反向代理 # yum -y install httpd 系統自帶的httpd # rpm -q httpd httpd-2.2.15-29.el6.centos.x86_64 # cd /etc/httpd/conf.d # vim mod_proxy.conf ProxyVia on --------開啓via ProxyRequests off -------關閉正向代理,即開啓了反向代理 ProxyPreserveHost on ProxyPass / http://192.168.13.2:8080/ ---------反向代理至tomcat服務器,tomcat使用http協議 ProxyPa***everse / http://172.16.13.2:8080/ ---------將對根的訪問重定向至tomcat服務器 <Location /> ----------------定義訪問屬性 Order Allow,Deny Allow from all </Location> # service httpd configtest # service httpd start # ss -ntl | grep 80 LISTEN 0 128 :::80
Web瀏覽器測試
#####http基於mod_proxy模塊使用http協議與tomcat成功通訊
三、配置http服務器(使用mod_proxy模塊)
###http基於mod_proxy模塊使用ajp協議與tomcat通訊
編輯配置文件 #cd /etc/httpd/conf.d # vim mod_proxy.conf ProxyVia on --------開啓via ProxyRequests off -------關閉正向代理,即開啓了反向代理 ProxyPreserveHost on ProxyPass / ajp://192.168.13.2:8009 ---------反向代理至tomcat服務器,tomcat使用ajp協議 ProxyPa***everse / ajp://172.16.13.2:8009/ ---------將對根的訪問重定向至tomcat服務器 <Location /> ----------------定義訪問屬性 Order Allow,Deny Allow from all </Location> # service httpd configtest # service httpd start
Web瀏覽器測試
####http基於mod_proxy模塊使用ajp協議已成功與tomcat通訊
四、配置http服務器(使用mod_jk模塊)
#mod_jk是ASF的一個項目,是一個工做於apache端基於AJP協議與Tomcat通訊的鏈接器,它是apache的一個模塊 ,是AJP協議的客戶端(服務端是Tomcat的AJP鏈接器)
下載tomcat-connectors-1.2.37-src.tar.gz 源碼包 (1)編譯安裝 # yum -y install httpd-devel # rpm -ql httpd-devel | grep apxs /usr/sbin/apxs /usr/share/man/man8/apxs.8.gz # tar xf tomcat-connectors-1.2.37-src.tar.gz # cd tomcat-connectors-1.2.37-src/native # ./configure --with-apxs=/usr/sbin/apx # make && make install 查看是否生成mod_jk模塊 # ls /usr/lib64/httpd/modules/ | grep mod_jk.so mod_jk.so (2)編輯配置文件,爲mod_jk提供配置 # cd /etc/httpd/conf.d/ # mv mod_proxy.conf mod_proxy.conf.bak 此時咱們用不到mod_proxy # vim mod_jk.conf LoadModule jk_module modules/mod_jk.so JkWorkersFile /etc/httpd/conf.d/workers.properties JkLogFile logs/mod_jk.log JkLogLevel debug JkMount /* TomcatA JkMount /status/ statA # vim workers.properties ------編輯workers工做線程的屬性 worker.list=TomcatA,statA worker.TomcatA.port=8009 worker.TomcatA.host=192.168.13.2 worker.TomcatA.type=ajp13 worker.TomcatA.lbfactor=1 worker.statA.type = status # service httpd configtest 測試配置文件 # service httpd restart
Web瀏覽器測試
####http基於mod_jk模塊使用ajp協議與tomcat實現通訊
查看mod_jk狀態
Web瀏覽器訪問 http://172.16.13.4/status/
基於mod_jk 實現負載均衡
圖(1)
1、配置兩個Tomcat服務器
TomcatA :
(1)安裝jdk 和tomcat
下載 jdk-7u9-linux-x64.rpm apache-tomcat-7.0.42.tar.gz # rpm -ivh jdk-7u9-linux-x64.rpm # vim /etc/profile.d/java.sh export CATALINA_HOME=/usr/java/latest export PATH=$CATALINA_HOME/bin:$PATH # . /etc/profile.d/java.sh # java -version
# tar xf apache-tomcat-7.0.42.tar.gz -C /usr/local # cd /usr/local # ln -sv apache-tomcat-7.0.42 tomcat # vim /etc/profile.d/tomcat.sh # . /etc/profile.d/tomcat.sh
提供服務腳本
#vim /etc/rc.d/init.d/tomcat
#!/bin/sh # Tomcat init script for Linux. # # chkconfig: 2345 96 14 # description: The Apache Tomcat servlet/JSP container. # JAVA_OPTS='-Xms64m -Xmx128m' JAVA_HOME=/usr/java/latest CATALINA_HOME=/usr/local/tomcat export JAVA_HOME CATALINA_HOME case $1 in start) exec $CATALINA_HOME/bin/catalina.sh start ;; stop) exec $CATALINA_HOME/bin/catalina.sh stop;; restart) $CATALINA_HOME/bin/catalina.sh stop sleep 2 exec $CATALINA_HOME/bin/catalina.sh start ;; configtest) exec $CATALINA_HOME/bin/catalina.sh configtest ;; *) exec $CATALINA_HOME/bin/catalina.sh * ;; esac
# chmod +x /etc/rc.d/init.d/tomcat # chkconfig --add tomcat # chkconfig tomcat on # service tomcat start 啓動服務 # ss -ntl | grep 8080 tomcat默認偵聽的端口爲8080 LISTEN 0 100 :::8080
(2)部署jsp程序
#cd /usr/local/tomcat/webapps/ # mkdir -pv WEB-INF/{classes,lib} # vim index.jsp <%@ page language="java" %> <html> <head><title>TomcatA</title></head> <body> <h1><font color="red">TomcatA.jungege.com</font></h1> <table align="centre" border="1"> <tr> <td>Session ID</td> <% session.setAttribute("magedu.com","magedu.com"); %> <td><%= session.getId() %></td> </tr> <tr> <td>Created on</td> <td><%= session.getCreationTime() %></td> </tr> </table> </body> </html> #service tomcat restart
TomcatB:
(1)安裝jdk與tomcat
#同TomcatA
(2)部署jsp程序
# cd /usr/local/tomcat/webapps/ # mkdir -pv WEB-INF/{classes,lib} # vim index.jsp <%@ page language="java" %> <html> <head><title>TomcatB</title></head> <body> <h1><font color="blue">TomcatB.jungege.com</font></h1> <table align="centre" border="1"> <tr> <td>Session ID</td> <% session.setAttribute("magedu.com","magedu.com"); %> <td><%= session.getId() %></td> </tr> <tr> <td>Created on</td> <td><%= session.getCreationTime() %></td> </tr> </table> </body> </html> #service tomcat restart
2、配置http服務器 (使用mod_jk模塊)
一、編譯安裝mod_jd模塊 下載tomcat-connectors-1.2.37-src.tar.gz 源碼包 # rpm -q httpd httpd-2.2.15-29.el6.centos.x86_64 # yum -y install httpd-devel # rpm -ql httpd-devel | grep apxs /usr/sbin/apxs /usr/share/man/man8/apxs.8.gz # tar xf tomcat-connectors-1.2.37-src.tar.gz # cd tomcat-connectors-1.2.37-src/native # ./configure --with-apxs=/usr/sbin/apx # make && make install 查看是否生成mod_jk模塊 # ls /usr/lib64/httpd/modules/ | grep mod_jk.so mod_jk.so 二、編輯配置文件,爲mod_jk提供配置 # cd /etc/httpd/conf.d/ # mv mod_proxy.conf mod_proxy.conf.bak 此時咱們用不到mod_proxy # vim mod_jk.conf LoadModule jk_module modules/mod_jk.so JkWorkersFile /etc/httpd/conf.d/workers.properties JkLogFile logs/mod_jk.log JkLogLevel debug JkMount /* lbcA JkMount /status/ statA # vim workers.properties 編輯workers的特性 worker.list=lbcA,statA worker.TomcatA.port=8009 worker.TomcatA.host=192.168.13.2 worker.TomcatA.type=ajp13 worker.TomcatA.lbfactor=1 worker.TomcatB.port=8009 worker.TomcatB.host=192.168.13.3 worker.TomcatB.type=ajp13 worker.TomcatB.lbfactor=1 worker.lbcA.type=lb worker.lbcA.sticky_session=0 worker.lbcA.balance_workers=TomcatA,TomcatB worker.statA.type = status # service httpd configtest 測試配置文件 # service httpd start
Web瀏覽器測試
#####http基於mod_jk與tomcat通訊實現了負載均衡
接下來咱們實現session綁定功能
一、tomcatA tomcatB 設置 tomcatA 編輯配置文件定義jvmRoute屬性 # vim /usr/local/tomcat/conf/server.xml <Engine name="Catalina" defaultHost="localhost"jvmRoute="TomcatA"> #service tomcat restart tomcatB 編輯配置文件定義jvmRoute屬性 # vim /usr/local/tomcat/conf/server.xml <Engine name="Catalina" defaultHost="localhost" jvmRoute="TomcatA"> #service tomcat restart 2 、編輯httpd的workers.properties # vim /etc/httpd/conf.d/workers.properties 修改一下內容 worker.lbcA.sticky_session=1 # service httpd restart
Web瀏覽器測試
###session綁定成功
基於modproxy實現負載均衡
架構圖:如圖(1)
#######必定要啓動proxy_balancer_module模塊 # cd /etc/httpd/conf.d/ # mv mod_jk.conf mod_jk.conf.bak 此處咱們再也不使用mod_jk模塊 # vim mod_proxy.conf ProxyVia on ProxyRequests off ProxyPreserveHost on <Proxy balancer://lb> BalancerMember http://192.168.13.2:8080 loadfactor=1 route=TomcatA BalancerMember http://192.168.13.3:8080 loadfactor=1 route=TomcatA </Proxy> ProxyPass / balancer://lb/ ProxyPa***everse / balancer://lb/ <Location /> Order Allow,Deny Allow from all </Location> # service httpd restart
Web瀏覽器測試
#####基於mod_proxy模塊的使用實現了負載均衡
接下來咱們實現session綁定
# cd /etc/httpd/conf.d/ # vim mod_proxy.conf 修改以下行 ProxyPass / balancer://lb/ stickysession=JSESSIONID # service httpd restart
Web瀏覽器測試
####session成功綁定
lbmanager配置
#vim /etc/httpd/conf.d/mod_proxy.conf 添加以下內容 <Location /lbmanager> SetHandler balancer-manager </Location> ProxyPass /lbmanager ! # service httpd restart
Web瀏覽器訪問http://172.16.13.4/lbmanager
經過lbmanager這個界面咱們能夠對tomcat節點進行管理與監控
PS: 水平有限,不妥之處請詳細指出,不詳盡之處請指出,有疑問之處請指出!