JBoss安裝,集羣配置,負載均衡和session複製配置

 

 

1     概述

2     安裝步驟

2.1     安裝前準備

2.1.1    下載安裝文件

2.1.2    檢查磁盤空間

2.1.3    創建用戶和組

2.1.4    FTP上傳文件

2.1.5    選擇安裝目錄

2.2     安裝JDK

2.3     安裝JBOSS 服務器

2.3.1    下載並安裝JBOSS APPLICATION SERVER

2.4     JBOSS服務器WEB集羣配置

2.4.1    下載並安裝Appache Http Server

2.4.2    下載mod_jk

2.4.3    mod_jk模塊進行負載均衡配置

2.4.4   Jboss進行配置並與mod_jk協調工作

2.4.5   配置Jboss支持session複製功能


 

1

本文檔主要介紹了在Unix環境下JBoss服務器的安裝文檔。

2

安裝步驟可基本分爲三大步驟:安裝前準備,執行安裝和基本配置等。安裝前準備主要是檢查客戶的主機是否有足夠的磁盤空間,是否需要用某個特殊用戶安裝等。執行安裝主要是下載安裝包並安裝JBOSS。基本配置主要是根據客戶的需要進行配置。

2.1

Unix操作系統環境下,安裝前準備工作大致如下:下載安裝文件,檢查檢查磁盤空間,創建用戶和組,FTP上傳文件和選擇安裝目錄。

2.1.1

安裝文件可以到Jboss 官方網站http://www.jboss.org/download/ 上直接下載。安裝文件是完整的壓縮包文件,後綴名爲 .zip,但不包含JDKJDK需提前安裝好。

2.1.2

在安裝前先檢查主機的磁盤是否有足夠的空間。JBoss完全安裝最多不會超過1G的空間,所以安裝目錄所在的邏輯卷需要大於1G。客戶的應用程序運行時也需要使用一定的文件空間,根據總體考慮,以及以往客戶的經驗,建議一般Unix環境下安裝目錄邏輯卷空間設爲20G左右,如果沒有這麼多空間,5G左右也是可以的,但此時如中間件及應用程序有大量日誌產生時,會出現磁盤空間不足的錯誤。

Unix/Linux環境下查看邏輯卷空間的命令不同的操作系統有不同的命令。

l  HP Unix下,使用bdf命令

l  其它Unix/Linux下,使用df -k命令

這兩個命令可以顯示的所有目錄剩餘的磁盤空間,單位是Kbytes

2.1.3

因爲root用戶的權限太大,出於安全的需要,在重要系統的生產環境中,一般客戶的維護人員不會給root用戶的密碼,而且也不建議用root用戶來安裝和啓動JBOSS。一般是創建一個普通的用戶和組。除非JBOSS需要運行監聽在80端口,這種情況下,才需要用root用戶啓動JBOSS

一般建議客戶的維護人員幫助創建一jboss的組和jboss的用戶,jboss用戶屬於這個jboss組。因爲創建用戶需要root用戶權限。創建組和用戶的命令是:groupadduseradd。具體命令參數如下:

創建bea組:

#groupadd jboss

創建bea用戶:

#useradd jboss-d /opt/jboss -g jboss

設置bea用戶的密碼

#passwd jboss

2.1.4 ftp上傳文件

用上一步創建好的用戶通過ftp上傳文件。

注:從WindowsUnix上傳安裝文件時,必須是bin的二進制形式。在FTP命令行中輸入bin命令,而上傳license文本文件時,設置以文本形式上傳,命令是asc

2.1.5

安裝前準備的最後一步是選擇安裝目錄。安裝前與客戶或集成商確定安裝的目錄。

2.2下載並安裝JDK

下表是各個操作系統JDK下載的鏈接地址:

操作系統

鏈接地址

Sun JDK

http://java.sun.com/javase/downloads/previous.jsp

IBM JDK for AIX

http://www.ibm.com/developerworks/java/jdk/aix/service.html

BEA JRockit

http://commerce.bea.com/products/weblogicjrockit/jrockit_prod_fam.jsp

HP Unix JDK

http://www.hp.com/products1/unix/java/java2/jdkjre5_0/index.html?jumpid=reg_R1002_USEN

例:LinuxJDK安裝。

下載jdk

jdk-1_5_0_17-linux-i586.bin

chmod a+x jdk-1_5_0_17-linux-i586.bin

/ jdk-1_5_0_17-linux-i586.bin 等待,按提示安裝jdk,假設安裝在/opt目錄下,客戶自己可以定義jdk安裝目錄。

 

2.3安裝JBOSS服務器

JBOSS安裝 直接將壓縮文件解壓縮,然後配置JDK目錄即可。

2.3.1

1)下載JBOSS APPLICATION SERVER安裝介質。

http://www.jboss.org/download/

如:安裝包 jboss-4.2.3.GA.zip

2)解壓縮安裝包。

如:unzip jboss-4.2.3.GA.zip

3)JBOSS啓動腳本設置 JAVA_HOME 環境變量。

進入JBOSS_HOME/bin目錄下面,打開run.sh文件。

在文件的上面添加一行設置jdk目錄的語句。

export   JAVA_HOME=/opt/jdk1.5.0_17

讓後運行run.sh 啓動腳本便可啓動JBOSS 服務器。

到此,安裝完成。

 

2.4服務器WEB集羣配置

Jboss服務器WEB集羣主要包含負載均衡 (load balance) 和狀態同步(session replication)兩個功能,它們是互相獨立的,單獨配置。

Jboss的負載均衡目前有兩種方案,一是使用apachemod_jk,二是使用Jboss自帶的負載均衡模塊。

Jboss自帶的負載均衡模塊的缺點是負載能力相對不高,配置參數太少,比如無法指定不同節點的負載加權,所以這裏主要介紹以mod_jk爲例的配置方法。

 

2.4.1

首先在Apache網站http://httpd.apache.org,下載安裝介質,不同操作系統介質也不同。

下面爲CentOS release 4.4 Linux上的安裝例子:

下載http-2.2.8.tar.bz2文件

tar –jxvf  http-2.2.8.tar.bz2

cd http-2.2.8

./configure --prefix=/opt/jboss/apache228 --enable-mods-shared=all --enable-so

make

make install

   Apache2.2.8安裝完成

 

2.4.2

1,首先在Apache網站

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

下載mod_jk.so

本例子中下載的版本爲mod_jk-1.2.27-httpd-2.2.6.so

2,將mod_jk-1.2.27-httpd-2.2.6.so 改名爲mod_jk.so並複製到目錄/opt/jboss/apache228/modules即可。

2.4.3模塊進行負載均衡配置

修改APACHE_HOME/conf/httpd.conf文件,在最後一行加入

# 包含mod-jk模塊的配置文件

Include conf/mod-jk.conf

創建並配置APACHE_HOME/conf/mod-jk.conf文件

# 裝載 mod_jk 模塊

LoadModule jk_module modules/mod_jk.so

# workers.properties文件所在目錄

JkWorkersFile conf/workers.properties

# 設置jk日至文件

JkLogFile logs/mod_jk.log

# 設置jk日至級別 [debug/error/info]

JkLogLevel info

# 設置jk日至格式

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

# 設置請求日至格式

JkRequestLogFormat "%w %V %T"

# 設置哪個URL請求轉發到mod_jk處理

JkMount /application/* loadbalancer           

# 加共享內存

JkShmFile logs/jk.shm

# jkstatus 功能,來管理運行時數據

<Location /jkstatus/>

    JkMount status

    Order deny,allow

        Deny from all

    Allow from 127.0.0.1

</Location>   

 

創建workers.properties文件,文件內容如下:

# 設置要轉發的URL

worker.list=loadbalancer,status

# 設置節點1的屬性

worker.node1.port=8009

worker.node1.host=1.192.1.100

worker.node1.type=ajp13

worker.node1.lbfactor=1

# 設置節點2的屬性

worker.node2.port=8009

worker.node2.host= 1.192.1.200

worker.node2.type=ajp13

worker.node2.lbfactor=1

# 設置負載均衡測率

worker.loadbalancer.type=lb

worker.loadbalancer.balance_workers=node1,node2

worker.loadbalancer.sticky_session=1

# 管理負載均衡的狀態worker

worker.status.type=status

 

 

2.4.3 進行配置並與mod_jk協調工作

Jboss進行配置並使其能夠與mod_jk協調工作,主要有以下兩個方面:

1,爲集羣中的每個節點設置jvmRoute屬性,使其和workers.properties文件中的節點名相對應。

編輯JBOSS_HOME/server/all/deploy/jboss-web.deployer/server.xml

找到<Engine>屬性並加入屬性jvmRoute,例子如下:

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

……

</Engine>

2,在集羣配置中,需要將UseJK屬性的值設爲true,這樣配置是爲了使集羣中的每個實例知道mod_jk模塊正在使用。

編輯

JBOSS_HOME/server/all/deploy/jboss-web-cluster.sar/META-INF/jboss-service.xml文件

找到名字爲UseJK 的屬性,並將其值設爲true,例子如下:

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

 

到此爲止,便可以用Apachemod_jk模塊對客戶端的請求進行負載均衡和session stickiness(即如果客戶端第一次訪問節點一,下一次請求mod_jk也將其轉到節點一上)

 

 

2.4.4支持session複製功能

在前面已經配置了負載均衡和session stickiness,但仍有一個問題,即當有一個節點異常退出,而原來在這個節點上客戶端有了新請求時,這時session數據變丟失了。

爲了解決這個問題,在集羣中可以通過配置session複製來解決這個問題。

編輯

JBOSS_HOME/server/all/deploy/jboss-web-cluster.sar/META-INF/ jboss-service.xml文件。

例子如下:

<mbean code="org.jboss.cache.aop.TreeCacheAop"
    name="jboss.cache:service=TomcatClusteringCache">
    <depends>jboss:service=Naming</depends>
    <depends>jboss:service=TransactionManager</depends>
    <depends>jboss.aop:service=AspectDeployer</depends>
    <attribute name="TransactionManagerLookupClass">
        org.jboss.cache.BatchModeTransactionManagerLookup
    </attribute>
    <attribute name="IsolationLevel">REPEATABLE_READ</attribute>
    <attribute name="CacheMode">REPL_ASYNC</attribute>
    <attribute name="ClusterName">
      Tomcat-${jboss.partition.name:Cluster}
    </attribute>
    <attribute name="UseMarshalling">false</attribute>
    <attribute name="InactiveOnStartup">false</attribute>
    <attribute name="ClusterConfig">
        ... ...
    </attribute>
    <attribute name="LockAcquisitionTimeout">15000</attribute>
    <attribute name="SyncReplTimeout">20000</attribute>
</mbean>

 

2.4.5支持session複製功能

Enable部署在集羣中的Web應用Session複製功能:

 

修改Web應用web.xml文件,加入distributable元素。

<web-app version="2.4">
        <distributable/>
        <!-- ... -->
    </web-app>
 

修改jboss-web.xml文件,例子如下。

<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>
</jboss-web>

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章