阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

基于Apache实现Tomcat集群的负载均衡

450次阅读
没有评论

共计 15847 个字符,预计需要花费 40 分钟才能阅读完成。

概述

Tomcat 是一个完全功能的 HTTP 服务器,能够独立完成接收客户端请求,处理请求,然后封装响应报文响应客户端。但是 Tomcat 的并发响应能力并不强,所以往往使用 httpd 或 nginx 服务器用于在前端接收客户端请求,然后将请求调度至后端多个 Tomcat 节点。本文介绍的是利用 httpd 作为反向代理服务器,实现 Tomcat 的负载均衡。

httpd 连接后端的 Tomcat 服务器,需要启用对应的模块。能够实现该功能的有两个模块:mod_proxy,mod_jk。mod_proxy 是新出的模块,只有在 apache 2.2 及之后的版本上才可以使用,但是相对于 mod_jk 模块,它可以提供更丰富的功能和安全性。

实现过程

拓补图:

基于 Apache 实现 Tomcat 集群的负载均衡

更多 Tomcat 相关教程见以下内容

CentOS 6.6 下安装配置 Tomcat 环境  http://www.linuxidc.com/Linux/2015-08/122234.htm

RedHat Linux 5.5 安装 JDK+Tomcat 并部署 Java 项目  http://www.linuxidc.com/Linux/2015-02/113528.htm 

Tomcat 权威指南(第二版)(中英高清 PDF 版 + 带书签)  http://www.linuxidc.com/Linux/2015-02/113062.htm 

Tomcat 安全配置与性能优化 http://www.linuxidc.com/Linux/2015-02/113060.htm 

Linux 下使用 Xshell 查看 Tomcat 实时日志中文乱码解决方案 http://www.linuxidc.com/Linux/2015-01/112395.htm 

CentOS 64-bit 下安装 JDK 和 Tomcat 并设置 Tomcat 开机启动操作步骤 http://www.linuxidc.com/Linux/2015-01/111485.htm 

CentOS 6.5 下安装 Tomcat  http://www.linuxidc.com/Linux/2015-01/111415.htm 

实验环境:

httpd:192.168.1.116

Tomcat node1:192.168.1.106

Tomcat node2:192.168.1.127

在 Tomcat node1 和 node2 上安装 JDK 和 tomcat,完成环境变量的配置(192.168.1.106 和 192.168.1.127 上完成)。

安装 jdk:

[root@node1 ~]# rpm -ivh jdk-7u9-linux-x64.rpm

[root@node1 ~]# cd /usr/java/

[root@node1 java]# ll

total 4

lrwxrwxrwx  1 root root  16 Sep  1 07:56 default -> /usr/java/latest

drwxr-xr-x 10 root root 4096 Sep  1 07:56 jdk1.7.0_09

lrwxrwxrwx  1 root root  21 Sep  1 07:56 latest -> /usr/java/jdk1.7.0_09

在 /usr/java 目录下有个 latest 链接文件指向最新的 JDK。配置环境变量时直接使用此路径。

配置环境变量:

[root@node1 ~]# vim /etc/profile.d/java.sh

export JAVA_HOME=/usr/java/latest

export PATH=$JAVA_HOME/bin:$PATH

#################################

[root@node1 ~]# . /etc/profile.d/java.sh

安装 tomcat:

[root@node1 ~]# tar xf apache-tomcat-7.0.42.tar.gz -C /usr/local/

环境变量配置:

 

[root@node3 local]# cd /usr/local

[root@node3 local]# ln -sv apache-tomcat-7.0.42/ tomcat

`tomcat’ -> `apache-tomcat-7.0.42/’

[root@node1 ~]# vim /etc/profile.d/tomcat.sh

export CATALINA_HOME=/usr/local/tomcat

export PATH=$CATALINA_HOME/bin:$PATH

####################################

[root@node1 ~]# . /etc/profile.d/tomcat.sh

为 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 ;;

*)

  echo “Usage: `basename $0` {start|stop|restart}”

  exit 1

  ;;

esac

在代理服务器上编译安装 apache2.4(192.168.1.116 上)。

首先安装 apr 和 apr-util:

[root@www ~]# tar xf apr-1.5.0.tar.bz2

[root@www ~]# cd apr-1.5.0

[root@www apr-1.5.0]# ./configure –prefix=/usr/local/apr-1.5.0

[root@www apr-1.5.0]# make && make install

#########################################

[root@www ~]# tar xf apr-util-1.5.3.tar.bz2

[root@www ~]# cd apr-util-1.5.3

[root@www apr-util-1.5.3]# ./configure –prefix=/usr/local/apr-util-1.5.3 –with-apr=/usr/local/apr-1.5.0/

[root@www apr-util-1.5.3]# make && make install

安装 httpd-2.4:

[root@www ~]# tar xf httpd-2.4.9.tar.bz2

[root@www ~]# cd httpd-2.4.9

[root@www httpd-2.4.9]# yum install pcre-devel -y

[root@www httpd-2.4.9]# ./configure –prefix=/usr/local/apache –sysconfdir=/etc/httpd –e

nable-so –enable-ssl –enable-cgi –enable-rewrite –with-zlib –with-pcre –with-apr=/usr/l

ocal/apr-1.5.0/ –with-apr-util=/usr/local/apr-util-1.5.3/ –enable-mpms-shared=all –with-m

pm=event –enable-proxy –enable-proxy-http –enable-proxy-ajp –enable-proxy-balancer 

–enable-lbmethod-heartbeat –enable-heartbeat –enable-slotmem-shm  –enable-slotmem

-plain –enable-watchdog

[root@www httpd-2.4.9]# make && make install

在编译时需要添加这几个参数来启用对应的模块:–enable-proxy –enable-proxy-http –enable-proxy-ajp –enable-proxy-balancer,最后的几个参数用于实现 httpd 与后端 tomcat 之间的信号传递实现对其健康状态的检测。

安装完成之后启动服务查看对应的模块是加载:

[root@www ~]# httpd -D DUMP_MODULES | grep proxy

 proxy_module (shared)

…..

 proxy_http_module (shared)

…..

 proxy_ajp_module (shared)

 proxy_balancer_module (shared)

httpd 基于 mod_jk 模块实现负载均衡

httpd 可以通过 2 种协议连接 tomcat:http,ajp。tomcat 启动之后默认会监听在 2 个端口:8080,8009。8080 用于接收 http 请求,8009 则用于接收 ajp 请求。mod_jk 模块仅支持使用 ajp 协议连接后端的 tomcat。

由于 mod_jk 模块出现的较早,httpd 默认不包括该模块,需要通过 apache 的 apxs 函数编译该模块,安装至 apache 的模块目录下。若是直接使用 yum 安装的 httpd,需要安装 httpd-devel 以提供 apxs 函数。

在代理服务器节点上安装 mod_jk 模块(192.168.1.116 上),tomcat-connectors-1.2.40-src.tar.gz 即为其源码包。

[root@www ~]# tar xf tomcat-connectors-1.2.40-src.tar.gz

[root@www ~]# cd tomcat-connectors-1.2.40-src/native/

[root@www native]# ./configure –with-apxs=/usr/local/apache/bin/apxs

[root@www native]# make && make install

编辑配置文件,httpd-jk.conf 默认在 extra 目录下没有,需要自己创建:

[root@www ~]# vim /etc/httpd/extra/httpd-jk.conf

LoadModule  jk_module  modules/mod_jk.so            #加载 mod_jk 模块

JkWorkersFile  /etc/httpd/extra/workers.properties  #定义后端每个 tomcat 实例的特性

JkLogFile  logs/mod_jk.log                          #指定 mod_jk 模块的日志文件

JkLogLevel  error                                  #记录日志的级别(info, error, debug)

JkMount  /*  lbcluster                            #将所有路径代理至 lbcluster 这个 worker

JkMount  /status/  stat                            #状态信息页

上述的配置参数中,jkWorkersFile 用于指定保存了后端各个 Tomcat 工作属性定义的配置文件。该配置文件的文件名通常是 workers.properties,该文件中每一个 tomcat 实例视为一个 worker,在 apache 启动时 mod_jk 会读取该配置文件的信息获取每个 worker 的配置信息。

workers.properties 文件的配置格式:

worker.list = < a comma separated list of worker names >

worker. <worker name> .<property> = <property value>

worker.list 为 worker 列表,worker.<worker name>.<property> 定义各个 worker 的名称和属性。

编辑 workers.properties:

 

[root@www ~]# vim /etc/httpd/extra/workers.properties

worker.list = lbcluster,stat

worker.TomcatA.type = ajp13                          #type 指定 worker 的工作机制(定义一个 tomcat 实例)

worker.TomcatA.host = 192.168.1.106                  #host 指定 tomcat 实例所在主机

worker.TomcatA.port = 8009                          #port 指定连接 tomcat 实例上的端口

worker.TomcatA.lbfactor = 5                          #lbfactor 指定该 worker 的权重

worker.TomcatB.type = ajp13

worker.TomcatB.host = 192.168.1.127

worker.TomcatB.port = 8009

worker.TomcatB.lbfactor = 5

worker.lbcluster.type = lb

worker.lbcluster1.method = B                        #指定调度的算法(根据负载情况进行调度)

worker.lbcluster.sticky_session = 0                #是否启用 sticksession

worker.lbcluster.balance_workers = TomcatA, TomcatB

worker.stat.type = status                          #用于显示各 worker 的工作状态

其中 type 属性可定义 3 种工作机制:

ajp13    #定义一个 tomcat 实例

lb          #用于负载均衡场景中,此 worker 包括多个 tomcat 实例

status  #用于显示各个 worker 工作状态的特使 worker

上述配置中定义了 2 个 tomcat 实例:TomcatA 和 TomcatB,lbcluster 这个 worker 包括了这两个 tomcat 实例,根据 httpd-jk.conf 中的定义(JkMount  /*  lbcluster)所用的请求都将使用定义��算法调度至 TomcatA 和 TomcatB。实现负载均衡的算法有 3 种,默认为“R”,根据用户的请求个数进行调度,“T”根据已发送给各 tomcat 的流量进行调度,“B”根据负载情况进行调度。

若将文件中的 worker.lbcluster1.sticky_session = 0 改为 1,则将实现 session 绑定,同一客户端的所有后续请求都将直接调度至第一个访问的 worker。

在 httpd 的主配置文件中包含上述完成的配置文件:

[root@www ~]# vim /etc/httpd/httpd.conf

…..

Include  /etc/httpd/extra/httpd-jk.conf

重新加载服务:

[root@www ~]# httpd -t

Syntax OK

[root@www ~]# service httpd reload

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2015-09/122675p2.htm

上述的配置都在 httpd 节点上完成,然后在后端 tomcat 节点上添加对应的虚拟主机和测试页面:

在 Tomcat node1 和 node2 上:

[root@node1 tomcat]# vim conf/server.xml

…..

      <Host name=”www.xiaoxiao.com”  appBase=”/tomcat/webapps”

            unpackWARs=”true” autoDeploy=”true”>

            <Context path=”/web” docBase=”web”/>

      </Host>

 ######################################

[root@node1 ~]# cd /tomcat/webapps/

[root@node1 webapps]# mkdir web/WEB-INF/{classes,lib} -pv

在实现负载均衡时,若一个节点上有多个 tomcat 实例,这是需要在 engine 段加上 jvmRoute 参数,其值为 httpd 节点上 /etc/httpd/extra/workers.properties 中对应的 worker name。例如:

<Engine name=”Catalina” defaultHost=”localhost” jvmRoute=”a”>

<Engine name=”Catalina” defaultHost=”localhost” jvmRoute=”b”>

node1 上的测试页面:

[root@node1 web]# vim index.jsp

<%@ page language=”Java” %>

<html>

  <head><title>Tomcat node1</title></head>

  <body>

    <h1><font color=”blue”>Tomcat node1</font></h1></p>

  </body>

</html>

node2 上的测试页面:

[root@node2 web]# vim index.jsp

<%@ page language=”java” %>

<html>

  <head><title>Tomcat node2</title></head>

  <body>

    <h1><font color=”red”>Tomcat node2</font></h1></p>

  </body>

</html>

配置完成后启动 tomcat 服务。访问测试:

基于 Apache 实现 Tomcat 集群的负载均衡

基于 Apache 实现 Tomcat 集群的负载均衡

状态页面:

基于 Apache 实现 Tomcat 集群的负载均衡

配置完成后其自动实现了后端服务器健康状态的检测,某台服务器故障之后,可实时完成故障转移。

httpd 基于 mod_proxy 模块实现负载均衡

mod_proxy 模块支持通过 http 和 ajp 协议连接后端的 tomcat。

在 httpd 节点上,配置 httpd 的全局段:

<proxy balancer://lbcluster>

 BalancerMember ajp://192.168.1.106:8009 loadfactor=1  route=a# 指定后端服务器及权重(loadfactor)

 BalancerMember ajp://192.168.1.127:8009 loadfactor=1  route=b

 ProxySet lbmethod=bytraffic                #调度使用的算法

 #ProxySet stickysession=JSESSIONID          #是否启用 sticksession

</proxy>

若使用 http 协议:

[root@www httpd]# vim extra/httpd-vhosts.conf

<VirtualHost *:80>                           

    ServerName www.xiaoxiao.com        #虚拟主机名称

    ProxyVia Off                        #在响应报文中是否添加 via 首部,用于表明这是经过哪个主机代理得到的响应

    ProxyRequests Off                  #关闭正向代理(正反向代理不应该同时启用)

    ProxyPreserveHost On                #代理将请求报文的 host 首部信息发送给后端服务器

    ProxyPass / balancer://lbcluster/  #将请求代理至 lbcluster 包含的后端服务器

    ProxyPassReverse / balancer://lbcluster/

    <Location /status>                  #启用状态页面

      SetHandler balancer-manager

      Proxypass !                      #指定此路径不进行代理

      Require all granted

    </Location>

    <Proxy *>

      Require all granted

    </Proxy>

    <Location  / >

      Require all granted

    </Location>

</VirtualHost>

在定义负载均衡的集群时,常用的参数有 lbmethod(调度算法),maxattempts(故障转移次数),nofailover(是否失效转移),stickysession(用于保持 session)。这些参数可以定义在全局段的 proxy 段中,如下:

<proxy balancer://lbcluster>

…….

 ProxySet lbmethod=bytraffic

 ProxySet stickysession=JSESSIONID

</proxy>

也可以定义在 banlancer:// 或 ProxyPass 后面。

lbmethod 能够指定的算法有 3 种:

byrequests    #根据权重进行轮询

bytraffic        #基于流量和权重进行调度

bybusyness    #基于后端服务器的当前负载进行调度

在主配置文件中包含虚拟主机的配置文件,注销 mod_jk 的配置文件:

Include /etc/httpd/extra/httpd-vhosts.conf

#Include  /etc/httpd/extra/httpd-jk.conf

后端的 tomcat 按照上一个案例进行配置,然后重启 httpd 服务:

[root@www ~]# httpd -t

Syntax OK

[root@www ~]# service httpd reload

测试结果与上述一致,不同的是 mod_proxy 的状态信息页面功能更强大,可以在页面中对后端主机进行各属性的配置。

基于 Apache 实现 Tomcat 集群的负载均衡

基于 Apache 实现 Tomcat 集群的负载均衡

可以设置 ProxySet stickysession=JSESSIONID 将同一客户端请求定向至同一台后端服务器来维持 session。根据个人的配置,貌似这个参数只能配置在全局段的 proxy 段中,且 BalancerMember 后面还需要添加 route 参数,才能生效。

<proxy balancer://lbcluster>

…….

 ProxySet stickysession=JSESSIONID

</proxy>

在负载均衡过程中,如果后端一个节点下线,则原本代理至该服务器的请求将调度至其他节点,这时用户的 session 将损坏。可以关闭 nofailover(nofailover = Off)不进行失效转移,能够保证节点重新上线后,用户能够访问到原来的 session。

……………..^_^

Tomcat 的详细介绍:请点这里
Tomcat 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-09/122675.htm

概述

Tomcat 是一个完全功能的 HTTP 服务器,能够独立完成接收客户端请求,处理请求,然后封装响应报文响应客户端。但是 Tomcat 的并发响应能力并不强,所以往往使用 httpd 或 nginx 服务器用于在前端接收客户端请求,然后将请求调度至后端多个 Tomcat 节点。本文介绍的是利用 httpd 作为反向代理服务器,实现 Tomcat 的负载均衡。

httpd 连接后端的 Tomcat 服务器,需要启用对应的模块。能够实现该功能的有两个模块:mod_proxy,mod_jk。mod_proxy 是新出的模块,只有在 apache 2.2 及之后的版本上才可以使用,但是相对于 mod_jk 模块,它可以提供更丰富的功能和安全性。

实现过程

拓补图:

基于 Apache 实现 Tomcat 集群的负载均衡

更多 Tomcat 相关教程见以下内容

CentOS 6.6 下安装配置 Tomcat 环境  http://www.linuxidc.com/Linux/2015-08/122234.htm

RedHat Linux 5.5 安装 JDK+Tomcat 并部署 Java 项目  http://www.linuxidc.com/Linux/2015-02/113528.htm 

Tomcat 权威指南(第二版)(中英高清 PDF 版 + 带书签)  http://www.linuxidc.com/Linux/2015-02/113062.htm 

Tomcat 安全配置与性能优化 http://www.linuxidc.com/Linux/2015-02/113060.htm 

Linux 下使用 Xshell 查看 Tomcat 实时日志中文乱码解决方案 http://www.linuxidc.com/Linux/2015-01/112395.htm 

CentOS 64-bit 下安装 JDK 和 Tomcat 并设置 Tomcat 开机启动操作步骤 http://www.linuxidc.com/Linux/2015-01/111485.htm 

CentOS 6.5 下安装 Tomcat  http://www.linuxidc.com/Linux/2015-01/111415.htm 

实验环境:

httpd:192.168.1.116

Tomcat node1:192.168.1.106

Tomcat node2:192.168.1.127

在 Tomcat node1 和 node2 上安装 JDK 和 tomcat,完成环境变量的配置(192.168.1.106 和 192.168.1.127 上完成)。

安装 jdk:

[root@node1 ~]# rpm -ivh jdk-7u9-linux-x64.rpm

[root@node1 ~]# cd /usr/java/

[root@node1 java]# ll

total 4

lrwxrwxrwx  1 root root  16 Sep  1 07:56 default -> /usr/java/latest

drwxr-xr-x 10 root root 4096 Sep  1 07:56 jdk1.7.0_09

lrwxrwxrwx  1 root root  21 Sep  1 07:56 latest -> /usr/java/jdk1.7.0_09

在 /usr/java 目录下有个 latest 链接文件指向最新的 JDK。配置环境变量时直接使用此路径。

配置环境变量:

[root@node1 ~]# vim /etc/profile.d/java.sh

export JAVA_HOME=/usr/java/latest

export PATH=$JAVA_HOME/bin:$PATH

#################################

[root@node1 ~]# . /etc/profile.d/java.sh

安装 tomcat:

[root@node1 ~]# tar xf apache-tomcat-7.0.42.tar.gz -C /usr/local/

环境变量配置:

 

[root@node3 local]# cd /usr/local

[root@node3 local]# ln -sv apache-tomcat-7.0.42/ tomcat

`tomcat’ -> `apache-tomcat-7.0.42/’

[root@node1 ~]# vim /etc/profile.d/tomcat.sh

export CATALINA_HOME=/usr/local/tomcat

export PATH=$CATALINA_HOME/bin:$PATH

####################################

[root@node1 ~]# . /etc/profile.d/tomcat.sh

为 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 ;;

*)

  echo “Usage: `basename $0` {start|stop|restart}”

  exit 1

  ;;

esac

在代理服务器上编译安装 apache2.4(192.168.1.116 上)。

首先安装 apr 和 apr-util:

[root@www ~]# tar xf apr-1.5.0.tar.bz2

[root@www ~]# cd apr-1.5.0

[root@www apr-1.5.0]# ./configure –prefix=/usr/local/apr-1.5.0

[root@www apr-1.5.0]# make && make install

#########################################

[root@www ~]# tar xf apr-util-1.5.3.tar.bz2

[root@www ~]# cd apr-util-1.5.3

[root@www apr-util-1.5.3]# ./configure –prefix=/usr/local/apr-util-1.5.3 –with-apr=/usr/local/apr-1.5.0/

[root@www apr-util-1.5.3]# make && make install

安装 httpd-2.4:

[root@www ~]# tar xf httpd-2.4.9.tar.bz2

[root@www ~]# cd httpd-2.4.9

[root@www httpd-2.4.9]# yum install pcre-devel -y

[root@www httpd-2.4.9]# ./configure –prefix=/usr/local/apache –sysconfdir=/etc/httpd –e

nable-so –enable-ssl –enable-cgi –enable-rewrite –with-zlib –with-pcre –with-apr=/usr/l

ocal/apr-1.5.0/ –with-apr-util=/usr/local/apr-util-1.5.3/ –enable-mpms-shared=all –with-m

pm=event –enable-proxy –enable-proxy-http –enable-proxy-ajp –enable-proxy-balancer 

–enable-lbmethod-heartbeat –enable-heartbeat –enable-slotmem-shm  –enable-slotmem

-plain –enable-watchdog

[root@www httpd-2.4.9]# make && make install

在编译时需要添加这几个参数来启用对应的模块:–enable-proxy –enable-proxy-http –enable-proxy-ajp –enable-proxy-balancer,最后的几个参数用于实现 httpd 与后端 tomcat 之间的信号传递实现对其健康状态的检测。

安装完成之后启动服务查看对应的模块是加载:

[root@www ~]# httpd -D DUMP_MODULES | grep proxy

 proxy_module (shared)

…..

 proxy_http_module (shared)

…..

 proxy_ajp_module (shared)

 proxy_balancer_module (shared)

httpd 基于 mod_jk 模块实现负载均衡

httpd 可以通过 2 种协议连接 tomcat:http,ajp。tomcat 启动之后默认会监听在 2 个端口:8080,8009。8080 用于接收 http 请求,8009 则用于接收 ajp 请求。mod_jk 模块仅支持使用 ajp 协议连接后端的 tomcat。

由于 mod_jk 模块出现的较早,httpd 默认不包括该模块,需要通过 apache 的 apxs 函数编译该模块,安装至 apache 的模块目录下。若是直接使用 yum 安装的 httpd,需要安装 httpd-devel 以提供 apxs 函数。

在代理服务器节点上安装 mod_jk 模块(192.168.1.116 上),tomcat-connectors-1.2.40-src.tar.gz 即为其源码包。

[root@www ~]# tar xf tomcat-connectors-1.2.40-src.tar.gz

[root@www ~]# cd tomcat-connectors-1.2.40-src/native/

[root@www native]# ./configure –with-apxs=/usr/local/apache/bin/apxs

[root@www native]# make && make install

编辑配置文件,httpd-jk.conf 默认在 extra 目录下没有,需要自己创建:

[root@www ~]# vim /etc/httpd/extra/httpd-jk.conf

LoadModule  jk_module  modules/mod_jk.so            #加载 mod_jk 模块

JkWorkersFile  /etc/httpd/extra/workers.properties  #定义后端每个 tomcat 实例的特性

JkLogFile  logs/mod_jk.log                          #指定 mod_jk 模块的日志文件

JkLogLevel  error                                  #记录日志的级别(info, error, debug)

JkMount  /*  lbcluster                            #将所有路径代理至 lbcluster 这个 worker

JkMount  /status/  stat                            #状态信息页

上述的配置参数中,jkWorkersFile 用于指定保存了后端各个 Tomcat 工作属性定义的配置文件。该配置文件的文件名通常是 workers.properties,该文件中每一个 tomcat 实例视为一个 worker,在 apache 启动时 mod_jk 会读取该配置文件的信息获取每个 worker 的配置信息。

workers.properties 文件的配置格式:

worker.list = < a comma separated list of worker names >

worker. <worker name> .<property> = <property value>

worker.list 为 worker 列表,worker.<worker name>.<property> 定义各个 worker 的名称和属性。

编辑 workers.properties:

 

[root@www ~]# vim /etc/httpd/extra/workers.properties

worker.list = lbcluster,stat

worker.TomcatA.type = ajp13                          #type 指定 worker 的工作机制(定义一个 tomcat 实例)

worker.TomcatA.host = 192.168.1.106                  #host 指定 tomcat 实例所在主机

worker.TomcatA.port = 8009                          #port 指定连接 tomcat 实例上的端口

worker.TomcatA.lbfactor = 5                          #lbfactor 指定该 worker 的权重

worker.TomcatB.type = ajp13

worker.TomcatB.host = 192.168.1.127

worker.TomcatB.port = 8009

worker.TomcatB.lbfactor = 5

worker.lbcluster.type = lb

worker.lbcluster1.method = B                        #指定调度的算法(根据负载情况进行调度)

worker.lbcluster.sticky_session = 0                #是否启用 sticksession

worker.lbcluster.balance_workers = TomcatA, TomcatB

worker.stat.type = status                          #用于显示各 worker 的工作状态

其中 type 属性可定义 3 种工作机制:

ajp13    #定义一个 tomcat 实例

lb          #用于负载均衡场景中,此 worker 包括多个 tomcat 实例

status  #用于显示各个 worker 工作状态的特使 worker

上述配置中定义了 2 个 tomcat 实例:TomcatA 和 TomcatB,lbcluster 这个 worker 包括了这两个 tomcat 实例,根据 httpd-jk.conf 中的定义(JkMount  /*  lbcluster)所用的请求都将使用定义��算法调度至 TomcatA 和 TomcatB。实现负载均衡的算法有 3 种,默认为“R”,根据用户的请求个数进行调度,“T”根据已发送给各 tomcat 的流量进行调度,“B”根据负载情况进行调度。

若将文件中的 worker.lbcluster1.sticky_session = 0 改为 1,则将实现 session 绑定,同一客户端的所有后续请求都将直接调度至第一个访问的 worker。

在 httpd 的主配置文件中包含上述完成的配置文件:

[root@www ~]# vim /etc/httpd/httpd.conf

…..

Include  /etc/httpd/extra/httpd-jk.conf

重新加载服务:

[root@www ~]# httpd -t

Syntax OK

[root@www ~]# service httpd reload

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2015-09/122675p2.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计15847字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7982555
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...
恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击 PHP-FPM(FastCGl Process M...
星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

  星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...
星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定! 前言 作为 NAS 玩家,你是否总被这些...
4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

  4 盘位、4K 输出、J3455、遥控,NAS 硬件入门性价比之王 开篇 在 NAS 市场中,威...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...
自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...