【原创】Linux+Apache2.2.19+Tocmat5+负载均衡+域名绑定
文章导航 变更历史
1 引言
1.1 编写目的
1.2 项目背景
1.3 定义
1.3.1集群(Cluster)
1.3.2负载均衡(Load Balance)
1.4 参考资料
1.5 变更历史
2 技术介绍
2.1 技术目标
2.2 网络架构
2.3 软件架构
3 详细步骤
3.1安装JDK
3.1.1 jdk-6u22-linux-i586.bin
3.1.2 配置环境变量
3.1.3 测试Java是否安装成功
3.2 安装Tomcat
3.2.1apache-tomcat-5.5.33.zip
3.2.2配置环境变量
3.2.3测试Tomcat是否安装成功
3.3安装Apache
3.3.1httpd-2.2.19.tar.gz
3.3.2测试Apache是否安装成功
3.4集群和负载均衡的配置
3.4.1修改httpd.conf
3.4.2安装mod_jk.so
3.4.3建立mod_jk.conf文件
3.4.4建立workers.properties文件
3.4.5修改httpd-vhosts.conf 文件
# JK2
# AJP - No.1
# AJP - No.2
域名绑定
3.5 综合测试Apache + Tomcat
4 总结
4.3、设置Apache和Tomcat随系统启动而自动启动:
4.3.1Red Hat的配置
4.3.2 Ubuntu 的配置
5 补充
5.1、修改tomcat的连接数
5.2 修改虚拟机的内存大小
1引言
1.1 编写目的
本说明手册为了阐述Linux搭建Apache+Tomcat环境,并详细介绍Tomcat的集群和负载均衡配置而编写。届时介绍域名的绑定,Red Hat和Ubuntu中随系统自动启动个软件的配置方法。
1.2 项目背景
在Linux(Red Hat Enterprise 4)上整合Apache和Tomcat ,并实现Tomcat的集群和负载均衡。这里是在同一台服务器上弄的集群和负载均衡,以两个Tomcat为例,如果是两个以上的Tomcat,配置的原理是一样的,只需要将各个Tomcat的端口号设置成不一样即可。届时附上负载均衡的两种配置方法:JK、AJP。
1.3 定义
1.3.1集群(Cluster)
是一组独立的计算机系统构成一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信。应用程序可以通过网络共享内存进行消息传送,实现分布式计算机。
1.3.2负载均衡(Load Balance)
即把负载压力根据某种算法合理分配到集群中的每一台计算机上,以减轻主服务器的压力,降低对主服务器的硬件和软件要求。
1.4 参考资料
文件名称 |
出处 |
Apache + Tomcat 整合 |
互联网 |
Tomcat集群与负载均衡区别以及特性 |
http://xy-z487.iteye.com/blog/256512 |
ubuntu 配置开机启动vnc |
http://hi.baidu.com/giter/blog/item/0e59ee242458db0b4d088d51.html |
1.5 变更历史
内容 |
变更原因 |
变更日期 |
人员 |
创建文档 |
首次创建 |
2011-08-04 |
何胜平 |
新增知识点 |
AJP-No.2:阐述使用AJP配置负载均衡 |
2011-08-23 |
何胜平 |
新增知识点 |
如何域名绑定 |
2011-08-25 |
何胜平 |
新增知识点 |
ubuntu 配置开机启动 |
2011-08-25 |
何胜平 |
新增知识点 |
修改tomcat的连接数 |
2011-10-27 |
何胜平 |
新增知识点 |
修改虚拟机的内存大小 |
2011-10-28 |
何胜平(梁瑞提供) |
2 技术介绍
2.1 技术目标
集成Apache和Tomcat,实现Tomcat的集群和负载均衡。
2.2 网络架构
采用局域网或单机环境。
硬件设备,服务器采用台式机或笔记本电脑,最低配置,内存512M以上、硬盘10G以上。客户端采用台式机或笔记本。
2.3 软件架构
软件平台类型 软件平台选型
网络操作系统 Red Hat Enterprise Linux 4
Http 服务器 Apache2.2.19
WEB应用服务 Tomcat5.5.33
MOD_JK tomcat-connectors-1.2.31-src.tar.gz
3 详细步骤
3.1安装JDK
3.1.1 jdk-6u22-linux-i586.bin
更改权限 chmod u+x jdk-6u22-linux-i586.bin
执行 ./jdk-6u22-linux-i586.bin 命令进行安装,会在当前目录下生成jdk1.6.0_22文件夹,我这里要把它移动到/usr/local/java/目录下。
3.1.2 配置环境变量
vi /etc/profile
在最后面加上
export JAVA_HOME=/usr/local/java/jdk1.6.0_22
export CLASSPATH=.:$JAVA_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH
重新加载环境变量:source /etc/profile
3.1.3 测试Java是否安装成功
输入 java -version,如果出现这个信息,就说明JDK安装成功了:
java version "1.6.0_22"
Java(TM) SE Runtime Environment (build 1.6.0_22-b04)
Java HotSpot(TM) Client VM (build 17.1-b03, mixed mode, sharing)
3.2 安装Tomcat
3.2.1apache-tomcat-5.5.33.zip
我这里用的Tomcat版本是apache-tomcat-5.5.33.zip,把它解压到/usr/local,为了便于区分,我把它重命名为tomcat1,再拷贝一份放于同级目录下重命名为tomcat2,并将tomcat2/conf/server.xml中的端口号修改成与tomcat1端口不一致,例如 Server port="8006"、HTTP/1.1 Connector port="8081"、AJP 1.3 Connector port="8010"。
3.2.2配置环境变量
一台服务器上如果有多个tomcat,只需要配置一个tomcat的环境变量即可,这里以tomcat1为例,配置方法如下:
vi /etc/profile
在最后面加上:export TOMCAT_HOME=/usr/local/tomcat1
重新加载环境变量:source /etc/profile
3.2.3测试Tomcat是否安装成功
分别到Tomcat1和Tomcat2的bin目录下为所有后缀为sh的文件赋拥有者有执行的权限,并分别启动Tomcat1和Tomcat2,在浏览器中输入http://服务器IP:8080,和http://服务器IP:8081看是否正常显示Tomcat的首页,如果正常显示网页,则表示两个Tomcat已经正确安装完毕。
为了加以区别,我们在Tomcat1和Tomcat2的默认首页中分别加上“This is the index of Tomcat1”和“This is the index of Tomcat2”的字样,如下图所示:
3.3安装Apache
本文档中使用的Apache是目前最新版本:httpd-2.2.19.tar.gz
3.3.1httpd-2.2.19.tar.gz
将Apache解压 tar -zxvf httpd-2.2.19.tar.gz,解压后到新解压的目录里面 cd httpd-2.2.19,运行一下命令:
./configure --prefix=/usr/local/apache2 --enable-so --enable-mods-shared=all --enable-deflate --enable-rewrite --enable-proxy --enable-proxy-connect --enable-proxy-ftp --enable-proxy-http --enable-proxy-scgi --enable-proxy-ajp --enable-proxy-balance
将其安装在 /usr/local/apache2目录下,你也可以选择安装在其他目录,只要更改 --prefix的值即可。
运行完上面的configure 命令后,直接输入make && make install 命令就可以开始安装Apache啦。
3.3.2测试Apache是否安装成功
启动下Apache:/usr/local/apache2/bin/apachectl -k start,在浏览器中输入http://服务器IP地址,如看到“It works!”则说明Apache成功安装。
3.4集群和负载均衡的配置
下面我来说一说如何配置Tomcat的集群和负载均衡。Apache + Tomcat的集群和负载均衡目前有两种方式(我所了解的,如果不对请大家指正,3Q),一种是使用JK2,另一种是AJP,下面我会一一讲解这两种配置。网络上说JK2发展的历史悠久,技术成熟,目前很多大型网站都是用这种方式进行配置的,而AJP是最新出来的技术,还不善成熟,所以建议尽量使用JK2进行配置——这个不代表个人观点,具体使用哪种,请大家自行选择。
3.4.1修改httpd.conf
vi /usr/local/apache2/conf/httpd.conf
找到#Include conf/extra/httpd-vhosts.conf把前面的#去掉(我这里配置虚拟主机是为了apache还可以干别的事,节约资源)
找到 DocumentRoot "/usr/local/apache2/htdocs" 并把它注释掉 #DocumentRoot "/usr/local/apache2/htdocs"
找到
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
注释掉(这样我们可以在httpd-vhosts.conf里自己配置了)
# <Directory />
# Options FollowSymLinks
# AllowOverride None
# Order deny,allow
# Deny from all
# </Directory>
在最后加入
# Include mod_jk's specific configuration file
Include conf/mod_jk.conf
3.4.2安装mod_jk.so
解压tomcat-connectors-1.2.31-src.tar.gz,到解压目录下的tomcat-connectors-1.2.31-src\native中,运行如下命令:./configure --with-apxs=/usr/local/apache2/bin/apxs
上面命令运行完后再运行:make && make install
运行完上面命令后,mod_jk.so将自动安装到Apache的modules目录中,如果Apache的modules中没找到mod_jk.so,请到tomcat-connectors-1.2.31-src/native/apache-2.0/目录下查找,并复制到Apache的modules目录中即可。
3.4.3建立mod_jk.conf文件
主要定义mod_jk模块的位置以及mod_jk模块的连接日志设置,还有定义worker.properties文件的位置。
vi /usr/local/apache2/conf/mod_jk.conf
粘贴如下代码:
LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
JkRequestLogFormat "%w %V %T"
3.4.4建立workers.properties文件
定义worker的参数,主要是连接tomcat主机的地址和端口信息。如果Tomcat与apache不在同一台机器上,或者需要做多台机器上tomcat的负载均衡只需要更改workers.properties文件中的相应定义即可。
vi /usr/local/apache2/conf/workers.properties
粘贴如下代码:
# server 列表
worker.list = controller,tomcat1,tomcat2
# tomcat1(ajp13 端口号,在tomcat下server.xml配置,默认8009)
worker.tomcat1.port=8009
# tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
# server的加权比重,值越高,分得的请求越多
worker.tomcat1.lbfactor=1
# tomcat2
worker.tomcat2.port=8010
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=1
# controller(负载均衡控制器)
worker.controller.type=lb
# 指定分担请求的tomcat
worker.controller.balanced_workers=tomcat1,tomcat2
#worker.controller.sticky_session=true
说明:此文件配置了2个tomcat服务器进行负载均衡处理,sticky_session表示是否将对SESSION ID的请求路由回到相同的Tomcat worker。如果属性值不为0,它将被设置为JK_TRUE,session将是粘性的,即SESSION ID的请求路由回到相同的Tomcat worker;当Tomcat正使用能够跨越多个Tomcat实例持久化session数据的Session Manager时,它将被设置为JK_FALSE。我们服务器上用不到session复制,用的是cookie的形式,所以这块注释掉不用配置。
3.4.5修改httpd-vhosts.conf 文件
vi /usr/local/apache2/conf/extra/httpd-vhosts.conf
删除以下两段
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/usr/local/apache2/docs/dummy-host.example.com"
ServerName dummy-host.example.com
ServerAlias www.dummy-host.example.com
ErrorLog "logs/dummy-host.example.com-error_log"
CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host2.example.com
DocumentRoot "/usr/local/apache2/docs/dummy-host2.example.com"
ServerName dummy-host2.example.com
ErrorLog "logs/dummy-host2.example.com-error_log"
CustomLog "logs/dummy-host2.example.com-access_log" common
</VirtualHost>
修改成以下代码
<VirtualHost *:80>
ServerName *
<Location />
Order deny,allow
Deny from all
</Location>
</VirtualHost>
# JK2
<VirtualHost *:80>
ServerName 192.168.9.210
ErrorLog "logs/192.168.9.210-error.log"
CustomLog "logs/192.168.9.210-access_log" common
RewriteEngine on
JkMount /* controller # 负载均衡
</VirtualHost>
# AJP - No.1
<VirtualHost *:80>
ProxyPreserveHost On
ServerName 192.168.9.210
ErrorLog "logs/192.168.9.210-error.log"
CustomLog "logs/192.168.9.210-access_log" common ProxyPass / ajp://localhost:8009/ # 或 ProxyPass / http://localhost:8080/
ProxyPassReverse / ajp://localhost:8009/ # 或ProxyPassReverse / http://localhost:8080/
</VirtualHost>
# AJP - No.2
<Proxy balancer://proxy>
BalancerMember ajp://localhost:8009/ loadfactor=1
BalancerMember ajp://localhost:8010/ loadfactor=1
# 或 BalancerMember http://localhost:8080/ loadfactor=1
# 或 BalancerMember http://localhost:8081/ loadfactor=1
</Proxy>
<VirtualHost *:80>
ProxyPreserveHost On
ServerName 192.168.9.210
ErrorLog "logs/192.168.9.210-error.log"
CustomLog "logs/192.168.9.210-access_log" common
ProxyPass / balancer://proxy/
ProxyPassReverse / balancer://proxy/
</VirtualHost>
域名绑定
将ServerName 192.168.9.210后面的ip地址改成要绑定的域名即可。
3.5 综合测试Apache + Tomcat
到目前为止,Apache和Tomcat的配置就算完成了,我们依次启动Apache和Tomcat群,在浏览器中输入http://服务器IP,如果能正确显示Tomcat首页这就集成成功了。期间,如果我们反复刷新浏览器,看到页面交替显示“This is the index of Tomcat1”和“This is the index of Tomcat2”——可参考3.2.3章节图示,那么Tomcat的负载均衡就算配置成功啦!
4 总结
4.1、ServerName 192.168.9.210中的ip地址可以更改成需要绑定的域名即可。
4.2、在 configure Apache的时候,从网上找了很多资料都不能自动编译出modules下的so文件,期间找到一个说能编译出so文件的配置,可我用的时候编译出的都是些后缀为lo和c的文件,找了很多资料和方法都没能解决,最后我只能看configure 的帮助文档,一行行的看并一个个配置参数的尝试,并最终编译出了so文件。
4.3、设置Apache和Tomcat随系统启动而自动启动:
4.3.1Red Hat的配置
随系统启动的方法有很多种,这里为大家介绍的是我所摸索出来的一种,个人认为比较简单,至少不像网络上介绍的要再为每个Tomcat设置一遍环境变量:
vi /etc/rc.d/rc.local,在最后加入以下命令
source /etc/profile
/usr/local/apache2/bin/apachectl -k start
/usr/local/tomcat1/bin/startup.sh
/usr/local/tomcat2/bin/startup.sh
4.3.2 Ubuntu 的配置
Ubuntu 系统的配置与之不同:
vi /etc/init.d/javaweb ,并为javaweb赋执行权限。
粘贴如下内容:
#! /bin/sh
source /etc/profile
/usr/local/apache2/bin/apachectl -k start
/usr/local/tomcat1/bin/startup.sh
/usr/local/tomcat2/bin/startup.sh
然后运行 update-rc.d javaweb defaults,配置完成!
4.4 本文所涉及到的方法和配置有可能有些不足甚至是错误的地方,欢迎大家踊跃拍砖,为提高服务器综合效率而不断努力!
5 补充
5.1、修改tomcat的连接数
修改%TOMCAT_HOME%\conf\server.xml文件,找到 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 修改为:
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" enableLookups="false" maxHttpHeaderSize="8192" useBodyEncodingForURI="true" maxThreads="5000" acceptCount="5000" compression="on" compressionMinSize="2048" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" connectionTimeout="600000" disableUploadTimeout="true"/>
改完后重启下tomcat。
5.2 修改虚拟机的内存大小
修改%TOMCAT_HOME%\bin\catalina.sh文件,加入如下配置:
JAVA_OPTS='-Xms4096m -Xmx4096m'

转载请注明:文章转载自:桐星豆 [https://txdou.com]
本文标题:【原创】Linux+Apache2.2.19+Tocmat5+负载均衡+域名绑定
本文地址:http://txdou.com/article65


- 注意:“桐星豆”只会以“回复”的身份出现,不会以“咨询”的身份出现在留言或评论中,凡是以“咨询”的身份出现的留言或评论均为他人盗用!
- 本站用以回复网友评论的唯一名称是“桐星豆”,除此外均无效,网友不得用此名进行相应文章的评论或回复!
- 用户言论只代表其个人观点,不代表桐星豆的观点或立场!
- 非诚勿扰,请友好如实的评论,杜绝谩骂、人格攻击等一切伤人言论,请严格遵循中华人民共和国法律法规!
- 桐星豆拥有最终解释权,如有网友违规,本站将有权删除或屏蔽违规评论,情节严重者账户加入黑名单、永久封IP并报司法部门严惩!
- 您一旦参与评论本站则默认为您已经同意以上条款,否则“非诚勿扰”,谢谢合作!