一 、LNMT架构
LNMT架构:顾名思义是指 Linux Ningx MySQL Tomcat
架构图:
配置步骤:
1、Tomcat服务器配置
(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反向代理服务器
2、配置Ninx服务器
(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服务器
我们将Tomcat和MySQL装在同一台机器上
# yum -y install mysql mysql-server 授权用户 #mysql mysql> grant all on *.* to 'root'@'localhost' identified by '123456'; mysql> flush privileges;
Web浏览器测试
请求静态页面
请求动态页面
已经看到静态页面nginx直接处理,动态页面由tomcat处理后返回给nginx代理
成功实现动静分离!
二 、LAMT架构
LAMT架构:Linux Apache MySQL Tomcat
架构图
Apache与Tomcat的连接通信依赖于mod_proxy模块或者mod_jk模块 mod_proxy模块使用时的协议为http、https、ajp mod_ajp 模块使用时的协议为ajp
根据上图的架构,我们来配置
配置步骤
1、配置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服务器
2、配置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协议 ProxyPassReverse / 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成功通信
3、配置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协议 ProxyPassReverse / 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通信
4、配置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)
一、配置两个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
二、配置http服务器 (使用mod_jk模块)
1、编译安装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 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 /* 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绑定功能
1、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/ ProxyPassReverse / 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: 水平有限,不妥之处请详细指出,不详尽之处请指出,有疑问之处请指出!