2.3.1 下載並安裝JBOSS APPLICATION SERVER
2.4.1 下載並安裝Appache Http Server
1
本文檔主要介紹了在Unix環境下JBoss服務器的安裝文檔。
2
安裝步驟可基本分爲三大步驟:安裝前準備,執行安裝和基本配置等。安裝前準備主要是檢查客戶的主機是否有足夠的磁盤空間,是否需要用某個特殊用戶安裝等。執行安裝主要是下載安裝包並安裝JBOSS。基本配置主要是根據客戶的需要進行配置。
2.1
在Unix操作系統環境下,安裝前準備工作大致如下:下載安裝文件,檢查檢查磁盤空間,創建用戶和組,FTP上傳文件和選擇安裝目錄。
2.1.1
安裝文件可以到Jboss 官方網站http://www.jboss.org/download/ 上直接下載。安裝文件是完整的壓縮包文件,後綴名爲 .zip,但不包含JDK,JDK需提前安裝好。
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用戶權限。創建組和用戶的命令是:groupadd和useradd。具體命令參數如下:
創建bea組: #groupadd jboss 創建bea用戶: #useradd jboss-d /opt/jboss -g jboss 設置bea用戶的密碼 #passwd jboss |
2.1.4 ftp上傳文件
用上一步創建好的用戶通過ftp上傳文件。
注:從Windows向Unix上傳安裝文件時,必須是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 |
例:Linux上JDK安裝。
下載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的負載均衡目前有兩種方案,一是使用apache的mod_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>
到此爲止,便可以用Apache和mod_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>