`
sameseam
  • 浏览: 23190 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

自己搭建的apache+jboss集群-步步为营

 
阅读更多

这几天应公司的要求,要把所有的服务器换成linux的,要求搭建个apache+2个JBOSS集群实现负载均衡的要求,之前对linux也不是特别的熟悉,参考了很多资料,反复的实验,终于把环境搭建成功了,测试通过。这里把我搭建的详细步骤共享给大家看看,希望对想学习的人有帮助。这里只做到实现功能,没有写出优化的地方。好了,开始吧:

配置环境:APACHE+JBOSS+JBOSS

其中apche跟其中一个jboss在同一个服务器上,IP为192.168.1.95

另外一个jboss部署在192.168.1.198服务器上

系统均为linux-redhat5

基本配置

1·配置静态IP

vi /etc/sysconfig/network-script/ifcfg-eth0

修改、添加内容如下:

#设置为静态IP

BOOTPROTO=static

#设置IP地址、掩码、网关

IPADDR=192.168.1.95

NETMASK=255.255.255.0

GATEWAY=192.168.1.1

2·配置DNS

vi /etc/resolv.conf

#修改DNS地址

nameserver 202.101.103.55

nameserver 218.85.157.99

3·重启网络

service network restart

4·设置启动级别

vi /etc/inittab

修改id:5:initdefault为id:3:initdefault

Apache、jboss、jdk、apache-tomcat连接文件的安装

1·安装httpd-2.2.12.tar.gz

tar –zxvf httpd-2.2.12.tar.gz

cd httpd-2.2.12

./configure --prefix=/usr/local/apache --enable-so --enable-vhost-alias --enable-rewrite --enable-deflate --enable-mods-shared=all --with-mpm=worker

make

make install

测试安装是否成功

# 启动apache

/usr/local/apache/bin/apachectl start

打开http://127.0.0.1开看看能否打开

2·安装jdk-6u1-linux-i586.bin

chmod 777 ./ jdk-6u1-linux-i586.bin

#验证是否出错

echo $?

0代表正确

cp–a jdk1.6.0_01 /usr/local/ jdk1.6.0_01

#配置环境变量

vi /etc/profile

export JAVA_HOME=/usr/local/jdk1.6.0_01

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

export PATH=$JAVA_HOME/bin:$PATH:$HOME/bin:$JAVA_HOME/jre/bin

#使变量立即生效

source /etc/profile

#测试配置是否成功

java –version

会显示JDK的版本号

3·安装Jboss4.2.2

unzip jboss4.2.2.GA.zip

cp –a jboss4.2.2.GA /usr/local/

#JBOSS默认只能本机访问,修改server.xml使它支持所有网络访问

vi $jboss/server/default/deploy/jboss-web.deployer/server.xml ($jboss表示你jboss的目录,下同)

修改

<Connector port="8080" address="${jboss.bind.address}"

<Connector port="8080" address="0.0.0.0">

修改

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

<Connector port="8009" address="0.0.0.0" protocol="AJP/1.3"

#启动测试jboss

/$boss/bin/run.sh

#打开IE测试

http://127.0.0.1:8080

4·安装Apache-tomcat-connectors-1.2.28-src.tar.gz

tar –zxvf Apache-tomcat-connectors-1.2.28-src.tar.gz

cd Apache-tomcat-connectors-1.2.28-src/native/

#编译安装

./configure --with-apxs=/usr/local/apache/bin/apxs --with-java-home=/usr/local/jdk1.6.0_01 --with-java-platform=2 --enable-jni

#验证是否成功

echo $?

make

echo $?

cp –a apache-2.0/mod_jk.so /usr/local/apache/modules/

cd /usr/local/apache/modules/

chmod 755 mod_jk.so

配置整合

1.修改$apache/conf/httpd.conf 在文件末尾添加: Include conf/mod_jk.conf

2.在$apache/conf下新建文件 mod_jk.conf 文件内容如下:

# Load mod_jk module. Specify the filename

# of the mod_jk lib you’ve downloaded and

# installed in the previous section

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 indicate to send SSL KEY SIZE,

JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

# JkRequestLogFormat set the request format

JkRequestLogFormat "%w %V %T"

JkMount /* loadbalancer

其中JkMount /* loadbalancer的意思是,把所有的请求都发给loadbalancer处理。可以通过修改url来控制发送某些request。

3、在$apache/conf下新建文件 workers.properties 其内容为:

worker.list=loadbalancer,node1,node2

# Define the first node...

worker.node1.port=8009

worker.node1.host=192.168.1.95

worker.node1.type=ajp13

worker.node1.lbfactor=1

worker.node1.local_worker=1

worker.node1.cachesize=10

worker.node1.cache_timeout=600

worker.node1.reply_timeout=100

worker.node1.socket_timeout=300

# Define the second node...

worker.node2.port=8009

worker.node2.host=192.168.1.198

worker.node2.type=ajp13

worker.node2.lbfactor=1

worker.node2.local_worker=1

worker.node2.cachesize=10

worker.node2.cache_timeout=600

worker.node2.reply_timeout=100

worker.node2.socket_timeout=300

# Now we define the load-balancing behaviour

worker.loadbalancer.type=lb

worker.loadbalancer.balanced_workers=node1,node2

worker.loadbalancer.sticky_session=0

4、在$APACHE/conf/目录创建新文件uriworkermap.properties,内容:

/jmx-console=loadbalancer

/jmx-console/*=loadbalancer

/web-console=loadbalancer

/web-console/*=loadbalancer

5.配置JBOSS 4.2.2GA

a).修改$JBOSSE/server/default/deploy/jboss-web.deployer/server.xml文件,将Engine 修改如下:

<Engine name="jboss.web" defaultHost="localhost">

给它增加一个jvmRoute属性:

<Engine name="jboss.web" defaultHost="localhost" jvmRoute="node1">

b).修改 $JBOSS_HOME/server/default/deploy/ jboss-web.deployer /META-INF/jbossservice.xml 找到<attribute name="UseJK">该为:

<attribute name="UseJK">true</attribute>

c).修改$JBOSS_HOME/server/default/deploy/jboss-web.deployer/ROOT.war/WEB-INF/web.xml

在<web-app>紧跟着下面添加 <distributable/>

d).在$jboss/server/all/default/deploy/jboss-web-cluster.sar/META-INF/jboss-service.xml

下面要做的是基于request的cluster,也就让各个节点之间互相复制session状态。有两种复制模式,同步与异步。使用同步的方式,jboss会把session复制的操作和对request的响应放到一个应用事务(application transaction),session复制完成后才去处理request。异步复制则发送session复制的消息后马上处理request,session复制则会稍有延迟。但是在多框架的web页面中,这样的集群方式会有问题。由于frame在同一时间发出多个request,会造成一些混乱,这也是采用基于用户的集群方式的原因之一。

<attribute name="CacheMode">REPL_ASYNC</attribute>

REPL_ASYNC(异步)或者REPL_SYNC(同步)。

在这个文件下面一点,还有一个config标签,里面指定了各个节点在进行session复制的时候如何通信,有udp和tcp两种可选,如果使用udp方式,那么应该将udp的lookback属性指定为true,因为windows上有一个叫做media sense的东西会影响udp multicast。注意如果你不了解multi address的ip规则,请不要随便修改mcast_addr的值。如果采用tcp方式的话,应该指定bind_addr的值为本机ip,并且在TCPPING标签的initial_hosts属性中列出所有节点,格式是”机器名[端口号]”,比如在我们的例子中,就应该这样配置tcp(以其中一个节点为例):

<config> ( 在config之前有个注释符号<!--把他去掉,在config最后也有个 -->也去掉)

<TCP bind_addr="192.168.1.95" start_port="7810" loopback="true"/>

<TCPPING initial_hosts="192.168.1.95[7810],192.168.1.198[7810]" port_range="3" timeout="3500"

num_initial_members="3" up_thread="true" down_thread="true"/>

<MERGE2 min_interval="5000" max_interval="10000"/>

<FD shun="true" timeout="2500" max_tries="5" up_thread="true" down_thread="true" />

<VERIFY_SUSPECT timeout="1500" down_thread="false" up_thread="false" />

<pbcast.NAKACK down_thread="true" up_thread="true" gc_lag="100"

retransmit_timeout="3000"/>

<pbcast.STABLE desired_avg_gossip="20000" down_thread="false" up_thread="false" />

<pbcast.GMS join_timeout="5000" join_retry_timeout="2000" shun="false"

print_local_addr="true" down_thread="true" up_thread="true"/>

<pbcast.STATE_TRANSFER up_thread="true" down_thread="true"/>

</config>

JBoss的clustering版主建议尽量使用udp。不过在Sobey内部,建议使用tcp方式,经测试可能有不明物体在影响udp通信,导致Timeout异常。

e). 在WEB-INF中添加jboss-web.xml文件,内容如下

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE jboss-web PUBLIC

"-//JBoss//DTD Web Application 4.2//EN"

"http://www.jboss.org/j2ee/dtd/jboss-web_4_2.dtd">

<jboss-web>

<replication-config>

<replication-trigger>SET_AND_NON_PRIMITIVE_GET</replication-trigger>

<replication-granularity>SESSION</replication-granularity>

<replication-field-batch-mode>true</replication-field-batch-mode>

</replication-config>

<context-root>/</context-root>

</jboss-web>

f).配置default目录,让该目录支持集群

将如下文件从%JBoss_Home%/server/all/lib里面拷到%JBoss_Home%/server/default/lib目录下:

jbossha.jar(加载org.jboss.ha.framework.server.ClusterPartition)

jgroups.jar(JBoss集群底层通信协议)

jboss-cache-jdk50.jar(加载org.jboss.cache.aop.TreeCacheAop)

将如下文件从%JBoss_Home%/server/all/deploy里面拷到%JBoss_Home%/server/default/deploy目录下:

deploy.last

jboss-web-cluster.sar

cluster-service.xml

ejb3-clustered-sfsbcache-service.xml

以上为服务器上的配置

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

以下为jboss集群中的另一台服务器配置

安装JBOSS,安装jdk即可,安装步骤同上

安装完成后,

a). 修改JBOSS的server.xml配置文件使它能够支持所有网络访问,

vi $jboss/server/default/deploy/jboss-web.deployer/server.xml

修改

<Connector port="8080" address="${jboss.bind.address}"

<Connector port="8080" address="0.0.0.0">

修改

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

<Connector port="8009" address="0.0.0.0" protocol="AJP/1.3"

b). 使得JBoss知道自己为Node2结点

deploy/jboss-web.deployer目录下的server.xml

<Engine name="jboss.web" defaultHost = "localhost">

改为

<Engine name="jboss.web" defaultHost= "localhost" jvmRoute="node2">。

c). 通知Node 2添加一个jvmRoute值到会话cookies中,以便mod_jk可以路由随后的请求

在deploy/jboss-web.deployer/META-INF目录下的jboss-service.xml

<attribute name="UseJK">false</attribute>改为

<attribute name="UseJK">true</attribute>。

d)定义重定向地址

在deploy/jboss-web-cluster.sar/META-INF目录下的jboss-service.xml

<TCP bind_addr = "thishost" start_port = "7810" loopback= "true"…>

改为

<TCP bind_addr = "192.168.1.198" start_port= "7810" loopback="true"…>;

<TCPPING initial_hosts= "thishost[7810], otherhost[7810]" port_range="3"…>

改为

<TCPPING initial_hosts= "192.168.1.198[7810], 192.168.1.95[7810]" port_range="3"…>。

重启主服务器的apache,jboss,然后在启动最后配置的这台的jboss。启动命令都还记得不?呵呵

apache : /usr/local/apache/bin/apachectl start

jboss: /usr/local/jboss4.2.2.GA/bin/run.sh

然后找台机子输入apache所在的IP地址,我的是

http://192.168.1.95 这个时候你看到的是JBOSS的页面而不是it'swork

分享到:
评论

相关推荐

    apache+jboss集群参考

    apache+jboss集群参考,参考介绍集群实现办法

    spring-webmvc.jar+jboss-logging.jar+jboss-logging-annotations.jar

    在Java开发领域,Spring Web MVC框架和JBoss日志库是两个非常重要的组件。Spring Web MVC是Spring框架的一部分,主要用于构建Web应用程序,而JBoss的日志库则为开发者提供了强大的日志处理能力。这里我们主要探讨...

    JAVA-SERVLET-+-MYSQL-+-JBOSS-开发起步

    ### JAVA-SERVLET-+-MYSQL-+-JBOSS-开发起步 #### 一、Java Servlet、Jboss、Mysql、Eclipse 开发介绍 在现代Web应用开发领域中,Java Servlet技术结合MySQL数据库以及JBoss应用服务器是构建企业级应用的常见组合...

    Apache2.2+JBOSS 5 集群配置

    Apache2.2+JBOSS 5 集群配置主要涉及在Linux环境下构建高可用性和负载均衡的服务器集群,以提升应用服务的稳定性和处理能力。以下是详细的知识点: 1. **JBoss集群架构**: JBoss 集群可以采用两种架构:客户端...

    Jboss集群配置httpd-v2.2.18+mod_jk-1.2.27-httpd-2.2.10.so+jboss-4.2.3

    【JBoss 集群配置详解】 JBoss 集群是一种高级的系统架构,它通过将多个 JBoss 服务器实例组合在一起,提供高可用性和负载均衡,从而增强应用程序的性能和稳定性。集群的主要目标是确保即使单个节点出现故障,整个...

    Apache+Jboss(Tomcat)集群配置

    Apache+Jboss(Tomcat)集群配置是一种常见的高可用性和负载均衡解决方案,它通过在前端部署Apache服务器,中间层配置多个Jboss或Tomcat应用服务器,后端连接统一的数据库来实现系统的扩展性和稳定性。以下是配置这个...

    Apache+Jbosseap环境搭建.zip

    Apache+Jbosseap环境搭建.zip

    apache+jboss整合详细步骤全过程

    ### Apache与JBoss整合详细步骤 #### 环境配置 在进行Apache与JBoss的整合之前,首先需要确保服务器的基础环境已经配置好。这里提到的环境包括两个服务器:一个运行Apache与JBoss(IP: 192.168.1.95),另一个仅...

    apache+jboss学学.rar

    Apache和JBoss是两个在IT领域中非常重要的开源软件,它们分别是两个重量级的服务器组件。Apache HTTP Server是世界上最流行的Web服务器,而JBoss则是一个基于Java的、全面的企业级应用服务器,它提供了完整的Java EE...

    httpd(负载均衡)+Jboss集群高可用部署配置文件

    这里我们将深入探讨如何使用httpd(Apache HTTP Server)作为负载均衡器,结合Jboss应用服务器进行集群部署,同时利用Linux操作系统来实现这一目标。 一、httpd负载均衡 httpd(Apache HTTP Server)作为全球最...

    Apache+Jbosseap环境搭建V1.0 (2).docx

    Apache所用包:httpd-2.2.19.tar.gz Jboss 所用包:jboss-eap-5.1.2.zip JDK 所用包:jdk-6u26-linux-x64-rpm.bin 整合所需包:tomcat-connectors-1.2.26-src.tar.gz

    hibernate+jboss-logging

    标题“hibernate+jboss-logging”涉及到两个关键领域:Hibernate和JBoss Logging,而描述中提到了三个具体的jar文件,它们是实现这些技术的重要组件。让我们深入了解一下这些技术和库。 **Hibernate** 是一个非常...

    Apache+Jboss负载均衡加域名转发

    mod_jk模块充当了Apache与JBoss之间的桥梁,负责将HTTP请求转发到JBoss应用服务器集群中的一个实例上。 #### 域名转发 域名转发是指将一个域名指向另一个域名或IP地址的过程。在本配置中,Apache被配置为虚拟主机,...

    jboss-logging-3.4.1.Final-API文档-中文版.zip

    赠送jar包:jboss-logging-3.4.1.Final.jar; 赠送原API文档:jboss-logging-3.4.1.Final-javadoc.jar; 赠送源代码:jboss-logging-3.4.1.Final-sources.jar; 赠送Maven依赖信息文件:jboss-logging-3.4.1.Final....

    jboss-threads-3.1.0.Final-API文档-中文版.zip

    赠送jar包:jboss-threads-3.1.0.Final.jar; 赠送原API文档:jboss-threads-3.1.0.Final-javadoc.jar; 赠送源代码:jboss-threads-3.1.0.Final-sources.jar; 赠送Maven依赖信息文件:jboss-threads-3.1.0.Final....

    jboss-annotations-api_1.3_spec-2.0.1.Final-API文档-中英对照版.zip

    赠送jar包:jboss-annotations-api_1.3_spec-2.0.1.Final.jar; 赠送原API文档:jboss-annotations-api_1.3_spec-2.0.1.Final-javadoc.jar; 赠送源代码:jboss-annotations-api_1.3_spec-2.0.1.Final-sources.jar;...

    apache jboss 集群问题

    apache jboss 集群问题,集群后出现异常,收集资料!

    jboss-logging-3.4.3.Final-API文档-中文版.zip

    赠送jar包:jboss-logging-3.4.3.Final.jar; 赠送原API文档:jboss-logging-3.4.3.Final-javadoc.jar; 赠送源代码:jboss-logging-3.4.3.Final-sources.jar; 赠送Maven依赖信息文件:jboss-logging-3.4.3.Final....

    CentOS+Jdk+Jboss+dubbo+zookeeper集群配置教程

    【CentOS+Jdk+Jboss+dubbo+zookeeper集群配置教程】 在进行大规模分布式系统开发时,集成多种组件是常见的需求。本教程将详细介绍如何在CentOS操作系统上配置Jdk、Jboss应用服务器、dubbo服务治理框架以及zookeeper...

Global site tag (gtag.js) - Google Analytics