使用httpd反向代理模块实现tomcat负载均衡集群(下)

上一篇讲解了http使用mod_http和mod_ajp代理模块实现tomcat负载均衡,下面我们来讲解使用http的mod_jk实现taomcat的负载均衡集群:

注意:http的mod_jk是第三方扩展模块,在新http版本中以不支持,在httpd 1.3和2.0效果较好

6、使用mod_jk实现tomcat负载均衡集群

6.1安装mod_jk

[root@node3 ~]# yum -y groupinstall "Development Tools" "Server Platfrom Development" \\安装编译环境
[root@node3 conf.d]# yum -y install httpd-devel \\安装httpd的开发包
[root@node3 ~]# tar xf tomcat-connectors-1.2.40-src.tar.gz  -C /usr/src \\解压软件包
[root@node3 ~]# cd /usr/src
[root@node3 src]# cd  tomcat-connectors-1.2.40-src/native/ \\cd解压后软件包的native目录
[root@node3 native]# ./configure --with-apxs=`which apxs`  \\安装mod_jk时是指定httpd的apxs位置
[root@node3 native]# make;make install  安装

6.2 确保httpd含有mod_jk模块

[root@node3 native]# ls -l /usr/lib64/httpd/modules/mod_jk.so
-rwxr-xr-x. 1 root root 1161241 Jul 18 16:44 /usr/lib64/httpd/modules/mod_jk.so

6.3 修改httpd配置文件,(注释掉默认文档存放位置)

[root@node3 conf.d]# pwd
/etc/httpd/conf.d
[root@node3 conf.d]# vim mod_jk.conf
    LoadModule jk_module modules/mod_jk.so  \\装载mod_jk模块
    JkWorkersFile /etc/httpd/conf.d/workers.properties  \\指明运行时配置文件的位置
    JkLogFile  log/mod_jk.log \\指定log日志位置
    JkLogFile  debug  \\指定日志级别,根据需求自定义
    JkMount /*  Cluster  \\将所有httpd请求映射为Cluster集群中,名字自定义
    JkMount /jk_status statA  \\状态监控页面
[root@node3 conf.d]# vim workers.properties 
    worker.list=Cluster,statA  \\工作列表
    worker.TomcatA.type=ajp13  \\定义后端TomcatA主机类型,
    worker.TomcatA.port=8009   \\定义后端主机的监听端口
    worker.TomcatA.host=172.16.2.14  \\定义后端主机地址
    worker.TomcatA.lbfactor=5
    worker.TomcatB.type=ajp13
    worker.TomcatB.port=8009
    worker.TomcatB.host=172.16.2.13
    worker.TomcatB.lbfactor=5
    worker.Cluster.type=lb   \\定义Cluster组的类型;
    worker.Cluster.sticky_session=0  \\会话保持关闭
    worker.Cluster.balance_workers=TomcatA,TomcatB \\将后端主机TomcatA,TomcatB映射到Cluster组中
    worker.statA.type=status \\定义statA的类型
type有三种类型:
  ajb13:用于负载调度
  status:tomcat自身所带的监控页面,类似于httpd的status
  lb:集群类型

6.4 修改tomcat主配置文件,在engine添加以下信息

 node1节点:  
   <Engine name="Catalina" defaultHost="www.mylinux.com" jvmRoute="TomcatA"> \\添加jvmRoute指令
 node2节点
    <Engine name="Catalina" defaultHost="www.mylinux.com" jvmRoute="TomcatB"> \\添加jvmRoute指令
 
 重新启动tomcat:
# catalina.sh stop
# catalina.sh start

6.4 重新启动httpd,访问测试

[root@node3 conf.d]# httpd -t
[root@node3 conf.d]# /etc/init.d/httpd restart

访问测试:

17.png18.png

6.5 开启httpd会话绑定,当客户端第一访问时若是有A主机提供页面信息,则后续的访问都有此主机提供;

 修改配置文件:

[root@node3 conf.d]# vim workers.properties 
worker.list=Cluster,statA
worker.TomcatA.type=ajp13
worker.TomcatA.port=8009
worker.TomcatA.host=172.16.2.14
worker.TomcatA.lbfactor=5
worker.TomcatB.type=ajp13
worker.TomcatB.port=8009
worker.TomcatB.host=172.16.2.13
worker.TomcatB.lbfactor=5
worker.Cluster.type=lb
worker.Cluster.sticky_session=1 \\开启会话保持
worker.Cluster.balance_workers=TomcatA,TomcatB
worker.statA.type=status

重启httpd,测试访问:

[root@node3 conf.d]# httpd -t
[root@node3 conf.d]# /etc/init.d/httpd restart

访问测试:无论怎么刷新,以后请求都会有第一次响应的主机提供页面信息

16.png

原创文章,作者:马行空,如若转载,请注明出处:http://www.178linux.com/6370

(0)
马行空马行空
上一篇 2015-07-21
下一篇 2015-07-21

相关推荐

  • 获取Linux命令帮助信息及man的用法

    经常在使用Linux命令时不清楚命令都有哪些参数,命令和参数的具体含义,我们根据命令的不同来源大致可以分为内部命令和外部命令。 内部命令帮助信息的获取:command help 那我不知道这个命令是不是内部命令,使用type command来确认是一个内部的还是一个外部的命令 外部命令帮助信息的获取:常用的有–help,man,info,还有一些…

    Linux干货 2016-09-17
  • 第三周

    第三周 1.列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@node1 ~]# who -q | sed -n ‘1p’ centos root fedora redhat mint 2.取出最后登录到当前系统的用户的相关信息。 [root@node1 ~]# who -a | tail -1 mint +…

    Linux干货 2017-07-25
  • rpm包及rmp命令详解

    一、软件运行环境           API: Application Programming Interface              国际标准&nbs…

    Linux干货 2016-08-22
  • sed基本用法详解

    一、sed介绍:        sed是非交互式的编辑器,同时又是面向字符流的,一次处理一行文本。当前输入的行被缓存至一个被称为模式空间(pattern space)的内存空间中,与给定的模式进行比对,若不匹配,则将内容输出至屏幕,之后读取第二行;若匹配,则执行编辑命令,命令执行完成后,将模式空间中…

    Linux干货 2016-08-10
  • 基于Python和MoviePy库实现数据的动态展示

    基于Python和MoviePy库实现数据的动态展示 (翻译:以马内利)  原文链接:Data Animations With Python and MoviePy   Python拥有很多实现数据可视化的库,但是很少可以展示GIFs的动态视图。 这篇博客主要介绍怎样使用MoviePy库作为一个其他可视化库的通用插件。 Movi…

    2015-03-26
  • 配置基于mysql的虚拟用户认证vsftp服务器

    1.安装vsftp、mysql、epel_release(epel源,后面要安装的pam_mysql认证模块需要这个源)、pam_mysql 2.刚装的mysql运行一下/usr/bin/mysql_secure_installation 3.建立数据库vsftpd,建表user,     create database vsftpd; …

    Linux干货 2016-06-22