1. 程式人生 > >linux下apache負載均衡與jboss叢集配置

linux下apache負載均衡與jboss叢集配置

一、安裝並配置jdk

首先安裝JDK,執行命令./ jdk-6u27-linux-x64.bin,JDK安裝目錄為當前指定目錄或者是./jdk-6u33-linux-x64-rpm.bin,或者(如果是rpm格式)執行 rpm –ivh jdk-6u33-linux-amd64.rpm 預設安裝目錄為/usr/java這個目錄下面

設定環境變數

vi /etc/profile 檔案在最後加入

JAVA_HOME=/usr/java/jdk1.6.0_19
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH JAVA_HOME CLASSPATH

二、安裝並配置jboss環境變數

1 下載JBoss(JBoss5或以上版本)
2 安裝JBoss
解壓到usr目錄下建個資料夾(我的放到jboss目錄下)即可

3 配置JBoss環境變數
找到/etc/profile檔案開啟在最後面加入:
JBOSS_HOME=/usr/jboss/jboss-5.1.0.GA 
PATH=$JBOSS_HOME/bin:$PATH
export JBOSS_HOME PATH

三、Jboss叢集負載均衡器配置 
1.安裝apache
1)下載apache (httpd-2.2.17.tar.gz)
2)解壓 (使用tar  -zxvf命令) 
3) 編譯
開啟解壓獲得的資料夾然後在空白處開啟終端輸入:
./configure
然後依次輸入:
make clean   
make        
make install  

4) 修改配置。
//本例中,提供服務的監聽埠是7070,請根據實際情況修改。
開啟 /usr/local/apache2/conf/httpd.conf檔案
將Listen 80         改成Listen 7070

將User daemon和Group daemon  改為      User apache和Group apache
刪除ServerName前的#           將該行改為  ServerName 127.0.0.1:8888
然後新增使用者和使用者組
在終端輸入:
groupadd apache
useradd apache –g apache

  2.apache mod_jk的配置
1) 下載mod_jk,將其改名為mod_jk.so,拷貝到/usr/local/apache2/modules下
然後開啟終端輸入:
 chmod +x /usr/local/apache2/modules/mod_jk.so //相應的安裝許可權
2) 在  /usr/local/apache2/conf/httpd.conf   的末尾增加:
 Include conf/mod_jk.conf
3) 建立空檔案
/usr/local/apache2/conf/uriworkermap.properties
並在該目錄下建立檔案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 /* 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=192.168.0.105
worker.node1.type=ajp13
worker.node1.lbfactor=1


# Define Node2
# modify the host as your host IP or DNS name.
worker.node2.port=8009
worker.node2.host= 192.168.0.100
worker.node2.type=ajp13
worker.node2.lbfactor=0


# Define Node3
# modify the host as your host IP or DNS name.
worker.node3.port=8009
worker.node3.host= 192.168. 0.110
worker.node3.type=ajp13
worker.node3.lbfactor=1


# Load-balancing behaviour
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=node1,node2,node3
worker.loadbalancer.sticky_session=1
#worker.list=loadbalancer
# Status worker for managing load balancer
worker.status.type=status

說明:
worker.node1.host、worker.node2.host和worker.node3.host要改成jboss叢集各機器的實際IP.
如果有更多的節點,順序定義更多的node段,並在worker.loadbalancer.balance_workers後全部列出.
lbfactor是負載分配權重,值越大分配的負載越多.

3.JBoss叢集節點配置
開啟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叢集
1.啟動負載均衡器apache
在/usr/local/apache2/bin目錄下執行./httpd –k start   (終止命令: ./httpd –k stop)
在/usr/local/apache2/logs/mod_jk.log中,看到apache初始化mod_jk的日誌:
[Wed Aug 01 10:36:11 2007][6636:63168] [info] init_jk::mod_jk.c (2743): mod_jk/1.2.23 initialized
[Wed Aug 01 10:36:11 2007][6637:63168] [info] init_jk::mod_jk.c (2743): mod_jk/1.2.23 initialized
後面如有錯誤資訊,是因為叢集中的節點尚未啟動,暫時忽略。
用netstat檢查7070監聽埠存在,apache啟動成功. (netstat  -an | grep 7070)


2.啟動JBoss節點
在叢集各機器的/usr/local/jboss/bin,分別執行./run.sh –b 192.168.0.100  //為節點的IP地址 (終止命令:./shutdown.sh –S)
用netstat檢查8080埠監聽存在.
用瀏覽器訪問各節點的8080埠,能夠看到jboss的狀態.
Jboss啟動成功.