分類  >  Web前端 >

Haproxy+Keepalived籌建Weblogic高可用負載均衡集群

tags:    時間:2013-12-10 00:21:41
Haproxy+Keepalived搭建Weblogic高可用負載均衡集群


 

 

配置環境說明:

 

 

KVM虛擬機配置

用途

數量

IP地址

機器名

虛擬IP地址

硬體

內存3G  系統盤20G cpu 4核

Haproxy

keepalived

2台

192.168.1.10

192.168.1.20

Haserver01

Haserver02

192.168.30

192.168.40

內存6G  系統盤20G cpu 4核

Weblogic

4台

192.168.1.100

192.168.1.150

192.168.1.200

192.168.1.250

Clusters01

Clusters02

Clusters03

Clusters04

 

軟體

 

                                            版本

 

Centos CentOS Linux release 6.0 (Final) x86_64 bit

 

Weblogic 版本 10.3.5 通用版本

 

haproxy-1.4.24

 

keepalived-1.2.7

 

整體架構設計:

 

 

 

配置說明:

 Weblogic集群搭建:

概念簡介:

作為一個單元來管理的並相互關聯的一組WebLogic伺服器資源被稱為域。一個域可以包含一或多個WebLogic伺服器,還可以包含WebLogic伺服器集群。

域是一個完備的管理單元。向域里分發應用的時候,該應用的各組成部分只能分發到域之內的伺服器上。如果域中包含集群,那麼集群中的所有伺服器都必須屬於同一個域。

集群

WebLogicServer 群集由多個 WebLogicServer 伺服器實例組成,這些伺服器實例同時運行並一起工作以提高可縮放性和可靠性。對於客戶端而言,群集是一個 WebLogicServer 實例。構成群集的伺服器實例可以在同一台計算機上運行,也可以位於不同的計算機上。可以通過向現有計算機上的群集中添加更多的伺服器實例來增加群集的容量,也可以向群集中添加計算機以承載遞增的伺服器實例。群集中的每個伺服器實例必須運行同一版本的WebLogicServer

域和集群是什麼關係

群集是特定 WebLogicServer 域的一部分。

  域是作為單元進行管理的一組相關的 WebLogicServer 資源。一個域包含一個或多個 WebLogicServer 實例,這些實例可以是群集實例、非群集實例,或者是群集與非群集實例的組合。一個域可以包含多個群集。域還包含部署在域中的應用程序組件、此域中的這些應用程序組件和伺服器實例所需的資源和服務。應用程序和伺服器實例使用的資源和服務示例包括計算機定義、可選網路通道、連接器和啟動類。

 

管理伺服器、受管伺服器

運行管理服務的WebLogic伺服器稱為管理伺服器。管理服務集中管理並監控域的所有資源。如果要對某個域執行管理操作,該域的管理伺服器必須處於運行狀態。

一個包含多個WebLogic伺服器的域只能有一個管理伺服器,其它伺服器稱為受管伺服器。每個WebLogic受管伺服器都會在啟動時從管理伺服器得到各自的屬性配置。

管理伺服器和WebLogic受管伺服器啟動時都運行webLogic.Server類。沒有作為受管伺服器啟動的WebLogic伺服器就是管理伺服器。


節點管理器

節點管理器是一個Java應用程序。藉助該應用,你可以從管理控制台遠程地啟動或kill WebLogic受管伺服器。節點管理器是單獨的一個Java應用,隨同WebLogic伺服器軟體供應。

你可以通過管理控制台來結束受管伺服器,另一種方式是用節點管理器kill遠程受管伺服器。當遠程伺服器被hung或沒有響應時,就需要殺掉遠程伺服器進程。

 

Weblogic軟體安裝及新域創建

1、  weblogic軟體安裝

官網下載軟體 wls1035_generic.jar

                             jrockit-jdk1.6.0_45-R28.2.7-4.1.0-linux-x64.bin

2、  建立用戶組、用戶在/opt下建立weblogic目錄

Root 下執行:

groupaddweblgoic

useradd -g weblogic weblogic

password weblogic

 

mkdir /opt/weblogic

chown weblogic:weblogic /opt/weblogic

3、  安裝jre

/opt/weblogic/ jrockit-jdk1.6.0_45-R28.2.7-4.1.0-linux-x64.bin

4、  安裝weblogic

設置環境變數編輯/etc/profile

exportJAVA_HOME=/opt/weblogic/jrockit-jdk1.6.0_45-R28.2.7-4.1.0

exportBEA_HOME= /opt/weblogic/Oracle/Middleware/

export PATH=$JAVA_HOME/bin:$PATH

1、  以下weblogic軟體安裝過程圖片摘自互聯網。路徑可能不同,僅供參考。

首先安裝jrockit-jdk


2、

 

 

3、選擇安裝路徑 與之前設置的環境變數一致

4、


5、

 

6、安裝weblogic軟體

7、

8、創建weblogic home目錄

9、

10、

 

11、

12、

13、

14、

15、

16、

 

5、  安裝weblogic域

 

創建weblogic域

 

下一步:默認即可

 

輸入域名、域安裝位置

 

用戶名及密碼

開發模式和生產模式,根據實際情況選擇,這裡選擇生產模式

PS:Oracle jre 對生產模式進行了優化,生產模式建議選擇jrockit

如果是開發模式的話建議選擇sun jre

 

這裡只選擇管理伺服器,不選擇的話也會創建管理伺服器,受管伺服器、集群、計算機在管理伺服器web管理界面均可後期根據需要再創建,沒必要在此創建。

 

點擊創建 就完成了新域的創建

搭建weblogic集群

本文使用節點管理器方式來控制受管伺服器,使用節點管理的方式有幾點好處:

1、  節點管理器可以監測受管伺服器的狀態,如果受管伺服器宕機,節點管理器可以重啟受管伺服器。

2、  可以通過webconsole管理界面遠程重啟受管伺服器。有很多人是直接運行受管伺服器進程例如:./ startManagedWebLogic.sh server01http://192.168.1.10:7001 的方式來啟動受管伺服器,如果受管伺服器較多的話,此類方法維護較為繁瑣。

3、  加入域的物理伺服器只需要運行節點管理器進程即可,之後可以管理多個受管伺服器,注意:新建的受管伺服器第一次需要手動運行一下受管伺服器腳本。

直接運行受管伺服器進程方式較為簡單,本文不做說明。

 

配置過程:

1.        192.168.1.10 為域管理伺服器,本機同時運行管理伺服器及節點伺服器進程

運行

sh $BEA_HOME/user_projects/domains/clusters_domain/bin/startWeblogic.sh  啟動

第一次運行需要輸入之間管理伺服器設置的weblogic賬號密碼

可以通過建立boot.properties文件,之後就不用賬號密碼了,而且是加密的。

vi $BEA_HOME/user_projects/domains/clusters_domain/servers/AdminServer/security/boot.properties

 

password=weblogic

username=weblogic

 

2.        進入weblogic console管理伺服器端http://192.168.1.10:7001/console

3.        首先點擊鎖定並編輯 建立 計算機:環境>計算機>新建

計算機名稱及類型 根據實際情況填寫。

 

下一步 輸入監聽IP地址 及埠號

完成,重複以上步驟建立4個計算機分別對應

Machine-0        192.168.1.10 5556

Machine-1         192.168.1.20   5556

Machine-2         192.168.1.30   5556

Machine-3         192.168.1.40   5556

4.        新建集群環境>集群>新建

5.        新建伺服器環境>集群>新建

輸入伺服器名、監聽IP地址、埠號、所屬集群等

 

點擊完成

重複以上步驟建立4個伺服器分別對應 4台計算機

6.        

調整伺服器 設置

配置>SSL

主機名驗證選擇 無

配置>伺服器啟動

設置伺服器啟動參數 根據實際情況填寫

 

JAVA主目錄 /opt/weblogic/jrockit-jdk1.6.0_45-R28.2.7-4.1.0

BEA 主目錄 /opt/weblogic/Oracle/Middleware

根目錄     /opt/weblogic/Oracle/Middleware/user_projects/domains/clusters_domain

類路徑     /opt/weblogic/Oracle/Middleware/wlserver_10.3/server/lib/weblogic.jar

安全策略文件/opt/weblogic/Oracle/Middleware/wlserver_10.3/server/lib/weblogic.policy

用戶名

密碼

 

7.        啟動節點管理器進程

 

每台伺服器上均運行節點管理器進程:

Sh /opt/weblogic/Oracle/Middleware/wlserver_10.3/server/bin/startNodeManager.sh192.168.1.10  5556

 

Sh /opt/weblogic/Oracle/Middleware/wlserver_10.3/server/bin/startNodeManager.sh192.168.1.20  5556

 

Sh /opt/weblogic/Oracle/Middleware/wlserver_10.3/server/bin/startNodeManager.sh192.168.1.30  5556

 

Sh /opt/weblogic/Oracle/Middleware/wlserver_10.3/server/bin/startNodeManager.sh192.168.1.40  5556

 

8、運行一次受管伺服器進程(每個受管伺服器都要在節點伺服器中運行一次)

Sh /opt/weblogic/Oracle/Middleware/user_projects/domains/clusters_domain/bin/stopManagedWebLogic.sh Sever-1(受管伺服器名)http://192.168.1.10:7001(管理伺服器地址及埠)

 

需要在每個節點管理上運行此進程一次,之後就不用運行了,運行該進程後會生成相應的受管伺服器目錄。

/opt/weblogic/Oracle/Middleware/user_projects/domains/clusters_domain/servers下

 

9、伺服器>控制

  勾選需要啟動的伺服器,啟動即可

 

至此weblogic集群的配置已經完畢,之後就可以降應用部署到集群當中了,可以選擇部署到集群中所有伺服器,或部分伺服器。

 

Haproxy與keepalived 配置

Haproxy 配置

1、  下載haproxy

Haproxy.1wt.eu 下載最新穩定版haproxy

2、  安裝環境

如果系統沒有安裝gcc的話需要安裝gcc

yum install gcc

 

3、  Cd /opt

Tar –zxvf haproxy-1.4.24.tar.gz

Cd haproxy-1.4.24

make TARGET=linux26

make install

4、  Haproxy安裝到/usr/local/haproxy

編輯配置文件 vi /usr/local/haproxy/conf/haproxy.cfg

 

  

global

       log 127.0.0.1   local1 info

       maxconn 20480

       chroot /usr/share/haproxy

       uid 99

       gid 99

       daemon

       nbproc 1

       pidfile /usr/share/haproxy/haproxy.pid

defaults

       log     global

       mode    http

       option  httplog

       option  dontlognull

       retries 3

       option redispatch

       maxconn 20480

       contimeout      5000

       clitimeout      50000

       srvtimeout      50000

 

listen admin_stats

       bind *:9020

       stats refresh 30s

       stats uri /haweb

       stats realm Haproxy Manager

       stats auth test:test

       #stats hide-version

 

frontend test

       bind *:80

       #

       acl test_2013 path_beg -i /test_2013

       acl test_2014 path_beg -i /test_2014

   

      use_backend  test_2013.server if test_2013

      use_backend  test_2014.server if test_2014

backend test2013.server

       mode http

       #fullconn 1000

       balance roundrobin

       cookie  SERVERID insert indirect

       option  httpchk HEAD/test2013/skins/logo.gif

       server  test201331192.168.1.10:8080 cookie test1 check inter 2000 rise 3 fall 3 weight 3

       server  test201332192.168.1.20:8080 cookie test2 check inter 2000 rise 3 fall 3 weight 3

       server  test201333192.168.1.30:8080 cookie test3 check inter 2000 rise 3 fall 3 weight 3

       server  test201334192.168.1.40:8080 cookie test4 check inter 2000 rise 3 fall 3 weight 3

 

backend test_2014.server

       mode http

       #fullconn 1000

       balance roundrobin

       cookie  SERVERID insert indirect

       option  httpchk HEAD/test_2014/skins/logo.gif

       server  test_201431 192.168.1.10:8080cookie test5 check inter 2000 rise 3 fall 3 weight 3

       server  test_201432192.168.1.20:8080 cookie test6 check inter 2000 rise 3 fall 3 weight 3

       server  test_201433192.168.1.30:8080 cookie test7 check inter 2000 rise 3 fall 3 weight 3

       server  test_201434192.168.1.40:8080 cookie test8 check inter 2000 rise 3 fall 3 weight 3

 

 

這是haproxy 的基本配置,2台haproxy 配置保持一致即可。

這裡可以在/etc/init.d/ 下建立一個haproxy腳本文件,方便執行service haproxy start/stop/restart

內容如下:

#!/bin/bash

BASE_DIR="/usr/local/haproxy"

ARGV="$@"

 

start()

{

echo "START HAPoxy SERVERS"

$BASE_DIR/haproxy -f$BASE_DIR/conf/haproxy.cfg

}

 

stop()

{

echo "STOP HAPoxy Listen"

kill -TTOU $(cat/usr/share/haproxy/haproxy.pid)

echo "STOP HAPoxy process"

kill -USR1 $(cat /usr/share/haproxy/haproxy.pid)

}

case $ARGV in

 

start)

start

ERROR=$?

;;

 

stop)

stop

ERROR=$?

;;

 

restart)

stop

start

ERROR=$?

;;

 

*)

echo "hactl.sh[start|restart|stop]"

esac

exit $ERROR

 

之後可以在/etc/rc3.d 建立連接,實現開機自動啟動

 

Keepalived 配置

1、  下載keepalived軟體

官網下載keepalived-1.2.7.tar.gz

2、  安裝軟體環境

yum install openssl-devel popt-devel

3、  tar –zxvf keepalived-1.2.7.tar.gz

cd /root/keepalived-1.2.7

./configure --prefix=/usr/local/keepalived/

Make & make install

4、  cp /usr/local/keepalived/etc/keepalived/samples/keepalived.conf.vrrp/etc/keepalived/ keepalived.conf   ##拷貝配置文件

cp /usr/local/keepalived/etc/sysconfig/keepalived/etc/sysconfig/keepalived   ##拷貝執行文件

cp /usr/local/keepalived/etc/rc.d/init.d/keepalived/etc/init.d/keepalived ##拷貝執行文件

cp /usr/local/keepalived/sbin/keepalived/usr/sbin/keepalived  #拷貝執行文件

5、  示例配置文件

本配置為雙主keepalived配置,即有個虛擬IP,雙主機互為主備,可以更高效的利用伺服器資源,如果是一主一備方式,只配置一個虛擬IP即可。

!Configuration File for keepalived

 

global_defs{

   notification_email {

     acassen@firewall.loc

     failover@firewall.loc

     sysadmin@firewall.loc

   }

   notification_email_fromAlexandre.Cassen@firewall.loc

   smtp_server 192.168.200.1

   smtp_connect_timeout 30

   router_id LVS_DEVEL

}

 

vrrp_instanceVI_1 {

    state MASTER

    interface eth1

    virtual_router_id 51

    priority 100

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.1.30

    }

}

 

vrrp_instanceVI_2 {

    state BACKUP

    interface eth1

    virtual_router_id 52

    priority 90

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.1.40

    }

}

 

同樣的在/etc/rc3.d下建立鏈接即可實現開機自動啟動,至此Haproxy+keepalived 搭建weblogic高可用負載均衡集群已經配置完畢,但這只是開始,這只是基礎配置,系統的整體優化是重點,包括haproxy weblogic等,都需要根據實際情況進行調優,希望這篇文章可以幫助到你,謝謝!


推薦閱讀文章

Bookmark the permalink ,來源:互聯網