您的位置:首页 > 运维架构 > Apache

CentOS下apache负载均衡与JBoss集群配置总结

2014-11-03 10:46 471 查看

CentOS下apache负载均衡与JBoss集群配置总结



说明:Apache Session转发服务器可以和其中一台JBOSS WEB服务器在同一台硬件机器上,但是如果这样则JBOSS WEB间只是实现了JBOSS应用程序的热备份,而不是硬件机器的热备份。两台JBOSS WEB同时实现了负载均衡。

一、环境工具:

CentOS 6.3 下载网址:http://www.cnbeta.com/articles/196464.htm

Jdk-6u29-linux-i586-rpm.bin

httpd-2.0.65.tar.gz

mod_jk-apache-2.0.46-linux-i686.so

下载网址: http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.23/
jboss-4.2.2.GA.zip

MySQL-5.6.13-1.el6.i686.rpm-bundle.tar

二、安装并配置JDK:

2.1 下载jdk(1.5版本以上)

Jdk-6u29-linux-i586-rpm.bin

2.2 安装

1) 首先将安装包放到/usr/jdk目录下,然后启动终端输入

[root@hbx jdk]# ./jdk-6u29-linux-i586-rpm.bin

然后根据提示输入 yes //解压缩在当前文件夹出现.rpm 文件,解压后的文件如下:

jdk-6u29-linux-i586.rpm

sun-javadb-core-10.6.2-1.1.i386.rpm

sun-javadb-demo-10.6.2-1.1.i386.rpm

sun-javadb-client-10.6.2-1.1.i386.rpm

sun-javadb-docs-10.6.2-1.1.i386.rpm

sun-javadb-common-10.6.2-1.1.i386.rpm

sun-javadb-javadoc-10.6.2-1.1.i386.rpm

2) 安装程序

rpm -ivh jdk-6u29-linux-i586.rpm

3) 设置环境变量

找到/etc/profile 文件打开在最后面加入

JAVA_HOME=/usr/java/jdk1.6.0_29

export PATH=$PATH:$JAVA_HOME/bin

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

4) 保存退出

5) 注销系统

6) 安装成功后输入 java –version 查看版本是否正确,显示以下信息则正确。

[root@hbx jdk]# java -version

java version "1.6.0_29"

Java(TM) SE Runtime Environment (build 1.6.0_29-b11)

Java HotSpot(TM) Server VM (build 20.4-b02, mixed mode)

三、安装并配置 JBoss 环境变量 :

3.1 下载 jboss-4.2.2.GA.zip

网址就不贴了。

3.2 安装jboss-4.2.2.GA.zip

解压到 usr /jboss(在user下创建jboss文件夹)目录下即可

[root@hbx usr]# cd jboss/

[root@hbx jboss]# ls

jboss-4.2.2.GA.zip

3.3 配置 JBoss 环境变量

找到/etc/profile 文件打开在最后面加入:

JBOSS_HOME=/usr/jboss/jboss-5.1.0.GA

PATH=$JBOSS_HOME/bin:$PATH

export JBOSS_HOME PATH



保存并注销系统

四、Jboss 集群负载均衡器配置

4.1 httpd-2.0.65.tar.gz

1) 下载 apache ( httpd-2.0.65.tar.gz )

2) 解压

右键解压到此处。

3) 配置【这个部分安装的时候可能提示会报错,后面分析】

打开解压获得的文件夹然后在空白处打开终端输入:

[root@hbx jboss-4.2.2.GA]# ./configure --prefix=/usr/local/apache2

--prefix参数指定了将要安装到的目录。此时/usr/local下还没有该目录,make install后才会出现。

注意:Apache在安装时不会检查参数是否正确,错误的参数会直接被丢弃,不会 报告给用户。所以使用echo $?命令检查是否有错误,当输出结果为0时表示没有错 误。

4) 编译【这个部分安装的时候可能提示会报错,后面分析】

[root@hbx jboss]# cd jboss-4.2.2.GA

[root@hbx jboss-4.2.2.GA]# make

5) 安装

[root@hbx jboss-4.2.2.GA]# make install

4.2 修改jboss配置

//本例中,提供服务的监听端口是 7070,请根据实际情况修改。

打开 /usr/local/apache2/conf/httpd.conf 文件

将 Listen 80

改成 Listen 7070



五、apache mod_jk 的配置

5.1 下载 mod_jk-apache-2.0.46-linux-i686.so

http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries

/linux/jk-1.2.23/

注意:这里要选择apache对应的版本的 mod_jk.so,否则配置出错,将其改名为 mod_jk.so,拷贝到/usr/local/apache2/modules 下

5.2 配置httpd.conf

在 /usr/local/apache2/conf/httpd.conf 的末尾增加: Include conf/mod_jk.conf

5.3 建立文件

5.3.1 新建uriworkermap.properties

在/usr/local/apache2/conf/uriworkermap.properties

/*=loadbalancer

# 静态文件不由任何worker处理,交给apache httpd

!/*.gif=loadbalancer

!/*.jpg=loadbalancer

!/*.png=loadbalancer

!/*.css=loadbalancer

!/*.js=loadbalancer

!/*.htm=loadbalancer

!/*.html=loadbalancer

5.3.2 新建 mod_jk.conf

并在该目录下建立文件 mod_jk.conf 并输入以下内容:

# Load mod_jk module

# Specify the filename of the mod_jk lib

LoadModule jk_module modules/mod_jk.so

# Where to find workers.properties

JkWorkersFile conf/workers.properties

# Where to put jk logs

JkLogFile logs/mod_jk.log

# Set the jk log level [debug/error/info]

JkLogLevel info

# Select the log format

JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"

# JkOptions indicates to send SSK KEY SIZE

JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

# JkRequestLogFormat

JkRequestLogFormat "%w %V %T"

# Mount your applications

JkMount /application/* loadbalancer //将所有的请求交给loadbalancer去处理

# You can use external file for mount points.

# It will be checked for updates each 60 seconds.

# The format of the file is: /url=worker

# /examples/*=loadbalancer

JkMountFile conf/uriworkermap.properties

# Add shared memory.

# This directive is present with 1.2.10 and

# later versions of mod_jk, and is needed for

# for load balancing to work properly

JkShmFile logs/jk.shm

# Add jkstatus for managing runtime data

<Location /jkstatus/>

JkMount status

Order deny,allow

Deny from all

Allow from 127.0.0.1

</Location>

保存

在该目录下建立文件 workers.properties 并输入以下内容:

# Define list of workers that will be used

# for mapping requests

worker.list=loadbalancer,status

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

# Define Node1

# modify the host as your host IP or DNS name.

worker.node1.port=8009

worker.node1.host=127.0.0.1

worker.node1.type=ajp13

worker.node1.lbfactor=1

#worker.node1.local_worker=1

#worker.node1.cachesize=10

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

# Define Node2

#modify the host as your host IP or DNS name.

worker.node2.port=8009

worker.node2.host= 192.1.68.3.1

worker.node2.type=ajp13

worker.node2.lbfactor=1

#worker.node2.local_worker=1

#worker.node2.cachesize=10

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

#Load-balancing behaviour

worker.loadbalancer.type=lb

worker.loadbalancer.balance_workers=node1,node2

worker.loadbalancer.sticky_session=1

#worker.loadbalancer.local_worker_only=1

#worker.list=loadbalancer

#Status worker for managing load balancer

worker.status.type=status



说明:port参数是配置JBoss AJP所监听的端口号,要和jboss的ajp13配置的端口一致,默认为8009,可以在jboss/server/default/deploy/jbossweb.deployer/server.xml看到,如下:

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

<Connector port="8009" address="${jboss.bind.address}" protocol="AJP/1.3"

emptySessionPath="true" enableLookups="false" redirectPort="8443" />

注意:要在Linux服务器中将这个tcp端口开放。

1) 其中worker.node1.host中,node1代表节点名,host值为节点IP(web服务器的IP地址或机器名。注意:最好使用IP地址), 如果有更多节点,顺序定义更多的node段,并在worker.loadbalancer.balance_workers后全部列出。

2) balanced_workers配置的名称为负载均衡的服务器列表,这个名称必须和之前配置的服务器的名称一致,如例子中的node1和node2。

3) lbfactor为负载均衡因子,值越大服务的Session数越多(分配的负载越多)。注意:如果Apache Session转发服务器和其中一台的web服务器是同一台机器则该机器的lbfactor要比另外一台的lbfactor值小。

4) cachesize是servlet线程池的大小(对session复制有影响)。

5) worker.loadbalancer.sticky_session,设置为1使用粘着session,设置为0不使用粘着session。如果sticky_session设为true时,建议sticky_session_force也设为false,此参数表明如果集群中某台服务器在多次请求没有响应后,是否将当前的请求,转发到其它服务器上处理;sticky_session=true时,影响比较大,会导致转发到其它服务器上的请求,找不到原来的session,所以如果此时请求中有读取session中某些信息的话,就会导致应用的null异常。

sticky_session

sticky_session_force

含义

true

false

SESSION会复制,有粘性

true

true

SESSION不复制,有粘性

false

false

SESSION会复制,无粘性

false

true

SESSION会复制,无粘性

将ServerName前#去掉,改为ServerName 127.0.0.1:7070;

注意:如果要修改端口,例如使用端口8080,还需要将Listen 80改成Listen 7070;

需要的话,可修改/etc/httpd/conf/httpd.conf文件,将AddDefaultCharset UTF-8改为AddDefaultCharset GB2312,使apache支持中文。

六、JBoss 集群节点配置

6.1 配置server.xml

打开JBoss 目录下/usr/local/jboss/server/all/deploy/jboss-web.sar/server.xml 和

/usr/local/jboss/server/default/deploy/jboss-web.sar/server.xml 找到

<Connector port="8080" address="${0.0.0.0}"(如有外部不可以通过 web 浏览

器访问 jboss,则要改成 0.0.0.0)

找到

<Engine name="jboss.web" defaultHost="localhost" 添加: jvmRoute="nodeX" >

注意:jvmRoute 是节点号,要与在 apache 的 workers.properties 中的定义相对应.



七、 启动 JBoss 集群

7.1 启动负载均衡器 apache

在/usr/local/apache2/bin 目录下执行

[root@hbx bin]#./httpd –k start (终止命令: ./httpd –k stop)

后面如有错误信息,是因为集群中的节点尚未启动,暂时忽略。

用 netstat 检查 7070 监听端口存在,apache 启动成功. (netstat -an | grep 7070)

7.2 启动 JBoss 节点

7.2.1 在集群各机器的/usr/local/jboss/bin,分别执行

[root@hbx bin]# ./run.sh -b 127.0.0.1 //为节点

的 IP 地址 (终止命令:./shutdown.sh –S)

用 netstat 检查 8080 端口监听存在.

用浏览器访问各节点的 8080 端口,能够看到 jboss 的状态.

Jboss 启动成功.



7.3 查看日志

这时你可以去/usr/local/apache2/logs日志记录看启动日志:

[Thu Aug 22 10:38:23 2013]loadbalancer 127.0.0.1 0.050585

[Thu Aug 22 10:38:23 2013]loadbalancer 127.0.0.1 0.001106

[Thu Aug 22 10:38:23 2013]loadbalancer 127.0.0.1 0.002499



八、总结

总结一下最近几天给公司搭建服务器遇到的问题。

8.1 安装apache的时候出错

make[2]: *** [install] Error 1

make[2]: Leaving directory `/tmp/httpd-2.2.22/srclib/apr-util'

make[1]: *** [install-recursive] Error 1

make[1]: Leaving directory `/tmp/httpd-2.2.22/srclib'

make: *** [install-recursive] Error 1

解决方法:

Apache2.0.x与Apache2.2.x在apr上有本质的区别,前者为依赖公用apr,后者依赖于自身的apr。2.0.x的编译基本上没有 apr方面的问题,除非,在编译前,安装了非2.0.x所需的apr,如果是这样,则需要将已经安装的apr去除,然后再编译。HTTP Sever2.2.22修复了不少重要安全问题,包含APR(Apache Portable Runtime)1.4.5和APR-util(Apache Utility Library)1.4.2。因此不需要像网上其它教程那样从外部找源码安装apr和apr-util。将安装前已存在于系统中的apr去除后,再编译 apache2.2.x自身srclib里的apr和apr-util。安装完apr和 apr-util后,./configure配置Apache时可能会出现下面错误:

configure: error: Cannot use an external APR with the bundled APR-util



configure: error: APR version 1.2.0 or later is required

【推荐完整步骤】

1. 安装apr

[root@hbx bin]# ./run.sh -b 127.0.0.1 //为节点

[root@hbx bin]:/usr/apache/cd httpd-2.0.65

[root@hbx bin]:/usr/apache/httpd-2.0.65# cd apr

[root@hbxbin]:/usr/apache/httpd-2.0.65/apr#./configure --prefix=/usr/local/apr

[root@hbx bin]:/usr/apache/httpd-2.0.65/apr# make

[root@hbx bin]:/usr/apache/httpd-2.0.65/apr# make install

2. 安装apr-util

[root@hbx bin]:/usr/local/apache/httpd-2.0.65/apr# cd ..

[root@hbx bin]:/usr/local/apache/httpd-2.0.65# cd apr-util

[root@hbx bin]:/usr/local/apache//httpd-2.0.65/apr-util# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

[root@hbx bin]:/usr/local/apache/httpd-2.0.65/apr-util# make

[root@hbx bin]:/usr/local/apache/httpd-2.0.65/apr-util# make install

8.2 安装apache的时候出错[遭遇拦路虎]

编译的时候遇到下面的错误:

configure: error: in `/usr/local/src/apache/httpd-2.0.65/srclib/apr':

configure: error: no acceptable C compiler found in $PATH

google发觉时没有安装c的编译器导致的,网上说yum -y install gcc就可以了,试了一下,然后发觉yum没有安装,安装一下。

apt-get install yum

结果获得了下面的提示。。。。。(各种不利)

E: Unable to locate package yum

说明找不到yum的安装源。。。ubuntu怎么搞的,后来想了一下,服务器是别人用镜像给做的,极有可能安装源信息不对,经google后使用

apt-get update

更新一下安装源,再次安装:

apt-get install yum

成功,然后再来安装gcc

yum -y install gcc

............. 还是不行说什么没有源,看来这个yum还需要一个安装源但是我的系统上没有,算了,google到下面的命令:

apt-get install g++

运行之:终于安装完成,再次configure.

[root@hbx bin]./configure --prefix=/usr/local/httpd-2.0.65 --enable-so --enable-mods-shared=most --with-mpm=worker

顺利通过。

http://blog.csdn.net/yeah898/article/details/10180579
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: