apache代理多个tomcat实例如何做负载均衡

实验环境:

IP:10.0.0.10

系统:CentOS 6.4

jdk版本:java version "1.8.0_65"

tomcat版本:Apache Tomcat/8.0.24

apache版本:Apache/2.2.27 (Unix)

思路:

  1. 1、安装Apache 
  2. 2、安装tomcat 
  3. 3、安装mod_jk 
  4. 4、加载mod_jk 
  5. 5、关闭tomcat的侦听端口 
  6. 6、应用分离(静态与动态页面分离)

安装apache

[[email protected] src]# tar xf httpd-2.2.27.tar.gz

[[email protected] src]# cd httpd-2.2.27

[[email protected] httpd-2.2.27]# ./configure

--prefix=/usr/local/apache2       ---指定安装路径

--enable-proxy-balancer           ---apache代理balancer模块

--enable-proxy-http               ---apache代理http模块

--enable-proxy-connect            ---apache 代理连接模块

--enable-proxy                    ---apache代理模块

--enable-rewrite                   ---基本的URL操纵规则,即启用URL重写规则

--enable-proxy-ajp                 ---apache代理ajp模块

[[email protected] httpd-2.2.27]# mkdir -p /data/{www,wwwroot}   建两个程序家目录

[[email protected] httpd-2.2.27]# make && make install   编译安装

apache配置文件主文件:

[[email protected] ROOT]# cat httpd.conf

30:ServerRoot "/usr/local/apache2"   ---指定apache程序安装的家目录

41:Listen 80                       ---指定监听端口

56:<IfModule !mpm_netware_module>

57:<IfModule !mpm_winnt_module>

66:User daemon                      ---指定apache运行的用户

67:Group daemon                     ---指定apache运行的组

69:</IfModule>

70:</IfModule>

89:ServerAdmin [email protected]       ---指定网站管理员邮箱

98:ServerName www.example.com:80     ---指定FQDN名

105:DocumentRoot "/data"         ---指定程序家目录

115:<Directory />

116:    Options FollowSymLinks

117:    AllowOverride None

118:    Order deny,allow

119:    Deny from all

120:</Directory>

132:<Directory "/data">        ---指定程序家目录

145:    Options Indexes FollowSymLinks

152:    AllowOverride None

157:    Order allow,deny

158:    Allow from all

160:</Directory>

166:<IfModule dir_module>

167:    DirectoryIndex index.html          指定首页文件

168:</IfModule>

174:<FilesMatch "^\.ht">

175:    Order allow,deny

176:    Deny from all

177:    Satisfy All

178:</FilesMatch>

187:ErrorLog "logs/error_log"     ---指定错误日志文件路径

194:LogLevel warn                 ---指定日志级别

196:<IfModule log_config_module>

201:    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

202:    LogFormat "%h %l %u %t \"%r\" %>s %b" common

204:    <IfModule logio_module>

206:      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio

207:    </IfModule>

216:    CustomLog "logs/access_log" common

223:</IfModule>

225:<IfModule alias_module>

252:    ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"

254:</IfModule>

256:<IfModule cgid_module>

262:</IfModule>

268:<Directory "/usr/local/apache2/cgi-bin">

269:    AllowOverride None

270:    Options None

271:    Order allow,deny

272:    Allow from all

273:</Directory>

284:DefaultType text/plain

286:<IfModule mime_module>

291:    TypesConfig conf/mime.types         --指定文件类型

308:    AddType application/x-compress .Z     ---指定压缩类型

309:    AddType application/x-gzip .gz .tgz    ---指定打包类型

332:</IfModule>

396:Include conf/extra/httpd-vhosts.conf       ---此处必须打开,否则无法使用虚拟主机

414:<IfModule ssl_module>

415:SSLRandomSeed startup builtin

416:SSLRandomSeed connect builtin

417:</IfModule>

418:LoadModule jk_module modules/mod_jk.so

419:JkWorkersFile /usr/local/apache2/conf/workers.properties  --指定负载均衡列表文件

420:JkMountFile   /usr/local/apache2/conf/uriworkermap.properties   --指定文件类型处理

421:JkMountFile   /usr/local/apache2/conf/uriworkermap1.properties  --指定文件类型处理

422:JkLogFile /usr/local/apache2/logs/mod_jk.log                   --指定mod_jk日志文件

423:JkLogLevel info                                                --指定日志级别

424:JkLogStampformat "[%a %b %d %H:%M:%S %Y]"                     ---指定日志格式

[[email protected] extra]# cat httpd-vhosts.conf |grep -vnE "^#|^$"

19:NameVirtualHost *:80

27:<VirtualHost *:80>

28:    ServerAdmin [email protected]

29:    DocumentRoot "/data/www"

30:    ServerName www.test1.com

31:    ServerAlias test1.com

32:    DirectoryIndex index.html

33:    ErrorLog "logs/dummy-test1-error_log"

34:    CustomLog "logs/dummy-test1-access_log" common

35:

36:   JkMountFile  conf/uriworkermap.properties   指定对于动静态文件处理的程序

43:

45:</VirtualHost>

47:<VirtualHost *:80>

48:    ServerAdmin [email protected]     管理员邮箱

49:    DocumentRoot "/data/wwwroot"                      程序加目录

50:    ServerName www.test2.com                          站点名

51:    ServerAlias test2.com                             站点别名

52:     DirectoryIndex index.html                        首页文件

53:    ErrorLog "logs/dummy-test2-error_log"             错误日志

54:    CustomLog "logs/dummy-test2-access_log" common    访问日志

56:JkMountFile  conf/uriworkermap1.properties    指定对于动静态文件处理的程序

57:</VirtualHost>

在虚拟主机目录里面分别建两个index.html文件。并启动apache程序,用域名访问两个网站(注:此处需要在本地做hosts解析)如果可以访问,则apache正常运行了(需关闭防火墙和安全策略)

[[email protected] data]# /usr/local/apache2/bin/apachectl -t     测试配置文件是否Ok

Syntax OK

[[email protected] data]# /usr/local/apache2/bin/apachectl start   启动apache

[[email protected] data]# cd /data/

[[email protected] data]# cd www

[[email protected] www]# ls

[[email protected] www]# echo "this is test1 web" > index.html

[[email protected] www]# cd ../wwwroot/

[[email protected] wwwroot]# echo "this is test2 web" > index.html

[[email protected] wwwroot]# ps -ef|grep httpd

root      54795      1  0 11:12 ?        00:00:00 /usr/local/apache2/bin/httpd -k start

daemon    54796  54795  0 11:12 ?        00:00:00 /usr/local/apache2/bin/httpd -k start

daemon    54797  54795  0 11:12 ?        00:00:00 /usr/local/apache2/bin/httpd -k start

daemon    54798  54795  0 11:12 ?        00:00:00 /usr/local/apache2/bin/httpd -k start

daemon    54799  54795  0 11:12 ?        00:00:00 /usr/local/apache2/bin/httpd -k start

daemon    54800  54795  0 11:12 ?        00:00:00 /usr/local/apache2/bin/httpd -k start

root      54803   2708  0 11:15 pts/1    00:00:00 grep httpd

apache安装完毕。

安装jk_mod:

# tar -xzf tomcat-connectors-1.2.32-src.tar.gz

# cd tomcat-connectors-1.2.32-src/

# cd native/

# ./configure --with-apxs=/usr/local/apache2/bin/apxs

# make && make install  #

ll /usr/local/apache2/modules/mod_jk.so

-rwxr-xr-x 1 root root 1076923 Feb 20 19:14 /usr/local/apache2/modules/mod_jk.so

安装jdk,因为tomcat的运行必须要jdk的支持。

[[email protected] src]# rpm -qa|grep java    ---查看是否安装有jdk且版本是否支持

java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64

gcc-java-4.4.7-3.el6.x86_64

java_cup-0.10k-5.el6.x86_64

[[email protected] src]# rpm -e --nodeps java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64 gcc-java-4.4.7-3.el6.x86_64 java_cup-0.10k-5.el6.x86_64   ---如版本过低则卸载

[[email protected] src]# ls

apache-tomcat-8.0.24.zip  httpd-2.2.27.tar.gz  jdk-8u65-linux-x64.rpm  tomcat-connectors-1.2.32-src.tar.gz

[[email protected] src]# rpm -ivh jdk-8u65-linux-x64.rpm

Preparing...                ########################################### [100%]

1:jdk1.8.0_65            ########################################### [100%]

Unpacking JAR files...

tools.jar...

plugin.jar...

javaws.jar...

deploy.jar...

rt.jar...

jsse.jar...

charsets.jar...

localedata.jar...

jfxrt.jar...

[[email protected] java]# vim /etc/profile    ---末尾添加

unset i

export JAVA_HOME=/usr/java/jdk1.8.0_65

export PATH=$JAVA_HOME/bin:$PATH:

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

unset -f pathmunge

[[email protected] java]# source /etc/profile

[[email protected] java]# echo $JAVA_HOME

/usr/java/jdk1.8.0_65

解压tomcat程序:

[[email protected] src]# unzip apache-tomcat-8.0.24.zip

[[email protected] src]# mv apache-tomcat-8.0.24 tomcat1

[[email protected] src]# \cp -r tomcat1 tomcat2

[[email protected] src]# cd /usr/local/src/tomcat1/bin

[[email protected] bin]# chmod +x *.sh

[[email protected] src]# cd /usr/local/src/tomcat2/bin

[[email protected] bin]# chmod +x *.sh

修改tomcat1和tomcat2的service.xml文件

tomcat1的配置文件:

[[email protected] bin]# cat ../conf/server.xml

<?xml version=‘1.0‘ encoding=‘utf-8‘?>

<Server port="8005" shutdown="SHUTDOWN">

<Listener className="org.apache.catalina.startup.VersionLoggerListener" />

<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />

<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />

<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />

<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

<Resource name="UserDatabase" auth="Container"

type="org.apache.catalina.UserDatabase"

description="User database that can be updated and saved"

factory="org.apache.catalina.users.MemoryUserDatabaseFactory"

pathname="conf/tomcat-users.xml" />

<Service name="Catalina">

<Connector port="8080" protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443" />

<!-- Define an AJP 1.3 Connector on port 8009 -->

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

<Engine name="Catalina" defaultHost="localhost">

<Realm className="org.apache.catalina.realm.LockOutRealm">

<Realm className="org.apache.catalina.realm.UserDatabaseRealm"

resourceName="UserDatabase"/>

</Realm>

<Host name="www.test1.com"  appBase="webapps" --->hostname与httpd-vhost里面相对应

unpackWARs="true" autoDeploy="true">

<Context path="" docBase="/data/www"/>  --->docBase与虚拟主机里面的DR对应

</Host>

</Engine>

</Service>

</Server>

tomcat2的配置文件:

[[email protected] conf]# cat server.xml|grep -v "^#"

<?xml version=‘1.0‘ encoding=‘utf-8‘?>

<Server port="8006" shutdown="SHUTDOWN">

<Listener className="org.apache.catalina.startup.VersionLoggerListener" />

<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />

<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />

<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />

<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

<Resource name="UserDatabase" auth="Container"

type="org.apache.catalina.UserDatabase"

description="User database that can be updated and saved"

factory="org.apache.catalina.users.MemoryUserDatabaseFactory"

pathname="conf/tomcat-users.xml" />

<Service name="Catalina">

<Connector port="8081" protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443" />

<!-- Define an AJP 1.3 Connector on port 8009 -->

<Connector port="8019" protocol="AJP/1.3" redirectPort="8443" />

<Engine name="Catalina" defaultHost="localhost">

<Realm className="org.apache.catalina.realm.LockOutRealm">

<Realm className="org.apache.catalina.realm.UserDatabaseRealm"

resourceName="UserDatabase"/>

</Realm>

<Host name="www.test2.com"  appBase="webapps"   --->hostname与httpd-vhost里面相对应

unpackWARs="true" autoDeploy="true">

<Context path="" docBase="/data/wwwroot"/>       --->docBase与虚拟主机里面的DR对应

</Host>

</Engine>

</Service>

</Server>

[[email protected] conf]# cat uriworkermap1.properties

/*=tomcat2          需要给tomcat2处理的文件类型

!/*.jpg=tomcat2     给apache处理的文件类型

!/*.gif=tomcat2

!/*.png=tomcat2

!/*.bmp=tomcat2

!/*.html=tomcat2

!/*.htm=tomcat2

!/*.swf=tomcat2

!/*.css= tomcat2

!/*.js= tomcat2

[[email protected] conf]# cat uriworkermap.properties

/*=tomcat1          需要给tomcat1处理的文件类型

!/*.jpg=tomcat1     给apache处理的文件类型

!/*.gif=tomcat1

!/*.png=tomcat1

!/*.bmp=tomcat1

!/*.html=tomcat1

!/*.htm=tomcat1

!/*.swf=tomcat1

!/*.css= tomcat1

!/*.js= tomcat1

[[email protected] conf]# cat workers.properties

worker.list=tomcat1,tomcat2     指定负载均衡器名称

worker.tomcat1.type=ajp13       协议

worker.tomcat1.host=localhost   主机名

worker.tomcat1.port=8009        端口,必须和tomcat1里面的对应

worker.tomcat1.lbfactor=1       权重

worker.tomcat2.type=ajp13        协议

worker.tomcat2.host=localhost    主机名

worker.tomcat2.port=8019         端口,必须和tomcat2里面的对应

worker.tomcat2.lbfactor=1        权重

上传网站网站即可,重启apache与tomcat1和tomcat2

www.test1.com效果:

www.test2.com效果:

时间: 2024-08-01 22:43:08

apache代理多个tomcat实例如何做负载均衡的相关文章

Linux 下 tomcat基于nginx做负载均衡

测试目的:在一台装有nginx服务器上访问nginx这台的ip地址,刷新一次就会显示后端三台不同的tomcat服务器的测试页. 测试环境:三台centos 6.8 一台 centos 7.3 软件版本: nginx 1.12.1 tomcat 8 软件部署的话 就不操作了 之前已经部署好了的,不会的话 看我之前的博客里都有. nginx 安装 http://dklwj.blog.51cto.com/9199080/1949570 tomcat 安装: http://dklwj.blog.51ct

基于apache实现tomcat集群的负载均衡

概述 Tomcat是一个完全功能的HTTP服务器,能够独立完成接收客户端请求,处理请求,然后封装响应报文响应客户端.但是Tomcat的并发响应能力并不强,所以往往使用httpd或nginx服务器用于在前端接收客户端请求,然后将请求调度至后端多个Tomcat节点.本文介绍的是利用httpd作为反向代理服务器,实现Tomcat的负载均衡. httpd连接后端的Tomcat服务器,需要启用对应的模块.能够实现该功能的有两个模块:mod_proxy,mod_jk.mod_proxy是新出的模块,只有在a

nginx反向代理tomcat集群达到负载均衡,同时使用proxy_cache做web缓存

Nginx最早是作为一款优秀的反向代理软件,以高并发下的卓越性能被越来越多的用户所用户,国内最早研究nginx的是张宴,该大牛的博客地址:http://zyan.cc/ .但是随着需求的发展,nginx的功能已经不再单单是反向代理,现在已经更倾向作为web容器. Nginx从0.7.48版本开始,支持了类似Squid的缓存功能.Nginx的Web缓存服务主要由proxy_cache相关指令集和fastcgi_cache相关指令集构成,前者用于反向代理时,对后端内容源服务器进行缓存,后者主要用于对

nginx tomcat做负载均衡

之前使用nginx做过web反向代理,没有做过负载均衡,今天有个同学需要做tomcat的负载均衡,我也研究下. 一共是2个机器,一个物理机(win7)上面部署2个tomcat,使用不同的端口启动.vm中的虚拟机放(centos)nginx,给tomcat做负载均衡. inux ip: 192.168.37.129 win ip: 192.168.37.1 首先保证两个主机可以互ping,响应的端口开放. nginx上使用80 tomcat1 使用8081 tomcat2使用8080 nginx,

Apache+Tomcat +mod_proxy集群负载均衡及session

  序言: 在玩Apache+Tomcat +mod_jk集群负载均衡及session的时候发现,还有一种方式可以实现,就是网上各位大牛们说的mod_proxy反向代理. 实在弄的我的知识细胞洋洋.实践后打个报告,给自己.. 环境说明: 操作系统:win7   64位 Javajdk: 1.7 Apache:httpd-2.2.25-win32-x86-no_ssl.msi    (本地安装路径:D:\Program Files (x86)\Apache2.2\)Tomcat: 7.0.42 

nginx tomcat 集群与负载均衡配置实例

一.nginx tomcat 中用到的概念介绍 1.反向代理,当客户端的请求到来之后,反向代理接收这个请求然后将这个请求转发到后台的服务器上,如果做负载均衡的话,就会将这个请求分发到负载均衡的那些服务器上去. 正向代理端代理的是客户端 反向代理代理的是服务端.请求这个反向代理服务器,就好比是直接请求资源所在的服务端. 2.这里说到的负载均衡,就是nginx接收到客户端的请求之后将这些请求按照自己配置的方式分发给后台服务器(tomcat服务器),分发方式有轮回方式,weight 配置权重,权重越大

[Linux]nginx tomcat做负载均衡

之前使用nginx做过web反向代理,没有做过负载均衡,今天有个同学需要做tomcat的负载均衡,我也研究下. 一共是2个机器,一个物理机(win7)上面部署2个tomcat,使用不同的端口启动.vm中的虚拟机放(centos)nginx,给tomcat做负载均衡. inux ip: 192.168.37.129 win ip: 192.168.37.1 首先保证两个主机可以互ping,响应的端口开放. nginx上使用80 tomcat1 使用8081 tomcat2使用8080 nginx,

tomcat 7 用mod_jk做 负载均衡

在Win7中使用apache为tomcat做负载均衡,各组件及版本如下: 两个tomcat v 7.0.57 一个apache v 2.2.14 一个mod_jk v 1.2.33(for windows i386 httpd 2.2.x),下载地址:http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/windows/tomcat-connectors-1.2.33-windows-i386-httpd-2.2.

Nginx+tomcat 做负载均衡

架构描述 前端一台nginx服务器做负载均衡器,后端放N台tomcat组成集群处理服务,通过nginx转发到后面(注:没做动静分离,静态动态全部都转给tomcat) 优点:实现了可弹性化的架构,在压力增大的时候可以临时添加tomcat服务器添加到这个架构里面去 一,配置nginx 1,  下载包 Wget http://sysoev.ru/nginx/nginx-0.6.32.tar.gz ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre