超详细!Apache+Tomcat+mod_jk搭建负载均衡集群

目录

 0.流程图:

1.集群环境:

2.Apache服务器安装httpd:

3.tomcat1服务器和tomcat2服务器安装jdk和Tomcat

4.tomcat1服务器和tomcat2服务器创建页面:

5.Apache服务器的mod_jk模块的安装:

6.查看是否mod_jk.so模块安装成功:

7.apache服务器配置jk模块,实现Apache整合tomcat:

8..tomcat1服务器和tomcat2服务器开启端口:

9..启动apache和tomcat测试:

10.Apache服务器上访问测试:


 0.流程图:

 

1.集群环境:

服务器IP地址端口版本
Apache服务器192.168.178.5280yum默认
tomcat1服务器192.168.178.1018080apache-tomcat-8.5.20
tomcat2服务器192.168.178.1518080apache-tomcat-8.5.20

2.Apache服务器安装httpd:

yum install -y httpd
# 静态页面
echo "<h1>static_page_from_apache</h1>" > /var/www/html/index.html
# 访问
http://192.168.178.52/

3.tomcat1服务器和tomcat2服务器安装jdk和Tomcat

jdk1.8和Tomcat的两种安装方式_碧蓝幻想的博客-CSDN博客

4.tomcat1服务器和tomcat2服务器创建页面:

# tomcat1的动态页面
echo "<h1>my_tomcat11111</h1>" > /usr/local/tomcat/webapps/ROOT/test.jsp
# 访问
http://192.168.178.101:8080/test.jsp
# tomcat2的动态页面
echo "<h1>my_tomcat22222</h1>" > /usr/local/tomcat/webapps/ROOT/test.jsp
# 访问
http://192.168.178.151:8080/test.jsp

5.Apache服务器的mod_jk模块的安装:

JK 是通过 AJP 协议与 Tomcat 服务器进行通讯的,Tomcat 默认的 AJP Connector 的端口是 8009

jk模块的三个配置文件说明
httpd.confApache 服务器的配置文件,用来加载 JK 模块以及指定 JK 配置文件信息
workers.properties到 Tomcat 服务器的连接定义文件
uriworkermap.propertiesURI 映射文件,用来指定哪些 URL 由 Tomcat 处理
wget -c https://dlcdn.apache.org/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.48-src.tar.gz --no-check-certificate
tar xf tomcat-connectors-1.2.48-src.tar.gz -C /usr/local/src/
cd /usr/local/src/tomcat-connectors-1.2.48-src/native/
yum install -y httpd-devel     # httpd-devel提供apxs命令
yum provides apxs
yum install gcc gcc-c++ make -y     # 编译需要编译环境
./configure --with-apxs=/usr/bin/apxs
./configure --with-apxs=/usr/bin/apxs

6.查看是否mod_jk.so模块安装成功:

[root@localhost native]# find / -name mod_jk.so
/usr/lib64/httpd/modules/mod_jk.so                 # make install后出现
/usr/local/src/tomcat-connectors-1.2.48-src/native/apache-2.0/.libs/mod_jk.so        # make后出现
/usr/local/src/tomcat-connectors-1.2.48-src/native/apache-2.0/mod_jk.so              # make后出现

7.apache服务器配置jk模块,实现Apache整合tomcat:

以下配置文件请删除字段后面的注释

cat << eof > /etc/httpd/conf.d/mod_jk.conf
LoadModule jk_module modules/mod_jk.so                       # 加载模块
JkWorkersFile conf/workers.properties                        # 指定mod_jk的配置文件之一workers.properties
JkLogFile /var/log/httpd/mod_jk.log                          # 指定mod_jk的日志
JkLogLevel info                                              # 日志级别
JkShmFile /var/log/httpd/mod_jk.shm                          # 配置jk日志内存共享
JkRequestLogFormat "%w %V %T"

# 将所有的请求转发给balancer处理
JkMount /*.jsp balancer

eof
# 到 Tomcat 服务器的连接定义文件
cat << eof > /etc/httpd/conf/workers.properties              
#worker的变量
worker.list=balancer,jk_watcher,tomcat1,tomcat2

#tempalte 负载模板配置  
worker.template.type=ajp13
#worker全局的重试次数,在apache服务器启动后,会最多尝试若干次连接这些负载均衡服务器,若连接不上则任务down掉
worker.retries=3

#balancer 负载配置  
worker.balancer.type=lb
worker.balancer.balance_workers=tomcat1,tomcat2
worker.balancer.sticky_session=true

#tomcat1的配置  
worker.tomcat1.port=8009
worker.tomcat1.host=192.168.178.101
worker.tomcat1.reference=worker.template
worker.tomcat1.activation=A
#worker.tomcat1.lbfactor=1    #lbfactor值越大,表示被分配的负载越大
#tomcat2 的配置  
worker.tomcat2.port=9009
worker.tomcat2.host=192.168.178.151
worker.tomcat2.reference=worker.template
worker.tomcat2.activation=A
#worker.tomcat2.lbfactor=1    #lbfactor值越大,表示被分配的负载越大

#负载均衡监视器
worker.jk_watcher.type=status
worker.jk_watcher.read_only=false
worker.jk_watcher.mount=/jkStatus
eof

8..tomcat1服务器和tomcat2服务器开启端口:

注意此内容在 <Connector port="8080" protocol="HTTP/1.1"内

vim /usr/local/tomcat/conf/server.xml
# tomcat1修改内容
<Connector protocol="AJP/1.3"
               address="::1"
               port="8009"
               redirectPort="8443" />
.....
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
# tomcat2修改内容
<Connector protocol="AJP/1.3"
               address="::1"
               port="9009"
               redirectPort="8443" />
.....
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">

9..启动apache和tomcat测试:

启动错误可能是因为配置文件字段后面的空格和注释

systemctl restart httpd
systemctl restart tomcat

10.Apache服务器上访问测试:

[root@localhost conf.d]# for i in {1..10..1};do curl http://192.168.178.52/test.jsp;done
<h1>my_tomcat22222</h1>
<h1>my_tomcat22222</h1>
<h1>my_tomcat22222</h1>
<h1>my_tomcat22222</h1>
<h1>my_tomcat22222</h1>
<h1>my_tomcat22222</h1>
<h1>my_tomcat11111</h1>
<h1>my_tomcat22222</h1>
<h1>my_tomcat11111</h1>
<h1>my_tomcat22222</h1>

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用 Apache+Tomcat 实现负载均衡时,我们可以使用 mod_jk 模块实现mod_jkApache 的一个模块,它与 Tomcat 之间通过 AJP 协议进行通信,可以将请求分发给多个 Tomcat 服务器,从而实现负载均衡。 以下是使用 mod_jk 实现负载均衡的步骤: 1. 安装 mod_jk 模块 在 Apache 的模块目录下,添加 mod_jk 模块。在 Linux 系统中,通常是在 /etc/httpd/modules 目录下。 2. 配置 mod_jk 模块 在 Apache 的配置文件 httpd.conf 中,添加以下内容: ``` LoadModule jk_module modules/mod_jk.so JkWorkersFile /path/to/workers.properties JkLogFile /path/to/mod_jk.log JkLogLevel info ``` 上述配置中,LoadModule 指令用于加载 mod_jk 模块,JkWorkersFile 指令用于指定 workers.properties 文件的路径,该文件定义了 Tomcat 服务器的列表和其它相关参数,JkLogFile 指令用于指定 mod_jk 的日志文件路径,JkLogLevel 指令用于指定日志级别。 3. 配置 workers.properties 文件 在 workers.properties 文件中,我们需要定义多个 Tomcat 服务器的信息,例如: ``` worker.list=worker1,worker2 worker.worker1.type=ajp13 worker.worker1.host=192.168.1.1 worker.worker1.port=8009 worker.worker2.type=ajp13 worker.worker2.host=192.168.1.2 worker.worker2.port=8009 ``` 上述配置中,worker.list 指定了所有的 Tomcat 服务器名称,worker1 和 worker2 是两个 Tomcat 服务器的名称,type 指定了通信协议,host 和 port 分别指定了 Tomcat 服务器的 IP 地址和端口号。 4. 配置虚拟主机 在 Apache 的虚拟主机配置中,添加以下内容: ``` JkMount /* worker1 JkMount /app1/* worker2 ``` 上述配置中,JkMount 指令用于指定 URL 与 Tomcat 服务器之间的映射关系,* 表示所有的 URL,/app1/* 表示以 /app1/ 开头的 URL。 5. 配置重试和时 在 workers.properties 文件中,我们可以配置重试和时的参数,例如: ``` worker.worker1.retries=3 worker.worker1.connect_timeout=10000 worker.worker1.prepost_timeout=10000 ``` 上述配置中,retries 表示在重试之前的最大尝试次数,connect_timeout 表示连接时时间,prepost_timeout 表示请求和响应的时时间。 6. 测试负载均衡 完成上述配置后,我们可以启动多个 Tomcat 服务器,并访问 Apache 的虚拟主机。Apache 会将请求分发给多个 Tomcat 服务器,从而实现负载均衡。 以上就是使用 mod_jk 实现负载均衡的步骤。需要注意的是,使用 mod_jk 进行负载均衡时,需要确保 Tomcat 服务器之间的 session 同步。可以使用 Tomcat 提供的 session 共享机制或使用其它第三方的 session 共享方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值