1. 程式人生 > >weblogic域下新建節點,通過節點來部署工程,從而不直接暴露控制檯在外網

weblogic域下新建節點,通過節點來部署工程,從而不直接暴露控制檯在外網

問題背景描述:稅局網路分為三塊組成:政務雲(對外提供開發埠),稅局外網,和稅局內網。由於專案需要政務雲對外開通了7011埠,對提供服務,工程部署在weblogic中介軟體上,埠為7011。這樣導致外網可以通過對外開通的7011埠訪問到weblogic控制檯,不符合稅局安全規範。稅局要求要讓通過開通的7011埠訪問不到weblogic控制檯登陸介面。

解決思路:通過網上查詢資料,現在的解決思路為,在稅局工作機新建weblogic域埠為8080.因為8080,沒有對外開通,故外網訪問不到8080的weblogic控制檯。在8080域下,新建節點,節點監聽的埠為7011.把weblogic工程部署在7011節點上。這樣外網既可以通過7011訪問到weblogic提供的服務,也不暴露控制檯登陸介面到外網,保證了安全性。

具體步驟:

第一步:安裝weblogic中介軟體伺服器。

第二步:新建域(叢集管理端)

注意:以上兩步操作,網上有很多資料,可以百度查詢安裝,這裡詳細步驟就不在敘述。

第三步:啟動weblogic叢集管理端,建立叢集,併為叢集建立和新增節點。

如果步驟二最後一步中勾選了“啟動管理服務端”,則點選完成後會直接啟動叢集的服務端。如果沒有勾選“啟動管理服務端”,則我們需要進入路徑 
D:\Program_Files\Oracle\Middleware\user_projects\domains\nodeManager_domain\bin 
雙擊startWebLogic.cmd啟動服務(linux系統則是雙擊執行./startWebLogic.sh),啟動時需要輸入我們前面(步驟二 4中)設定的域的的使用者名稱和密碼。 


注:上面路徑中nodeManager_domain是我們上面步驟二 3中設定的“域名”,根據自己設定的域名進入對應的路徑 
1、如下圖所示,啟動時會提示輸入域的使用者名稱和密碼 
這裡寫圖片描述
2、啟動後,開啟瀏覽器,輸入 http://192.168.1.200:8080/console (其中8080是我們步驟二 7中配置的叢集管理端的埠號,他不對外開通策略,所以外網訪問不到8080對應的控制檯登陸介面),如下圖所示,輸入剛才啟動時輸入的使用者名稱和密碼,點選“登入” 
這裡寫圖片描述
3、進入控制檯頁面。如下圖,點左側導航樹的“環境”-“叢集”;然後點選左上角的“鎖定伺服器”按鈕(生產模式需要點選這個按鈕才可以對其下的功能進行更新) 
這裡寫圖片描述
4、如下圖所示,點選“新建”按鈕來建立一個叢集。如下圖所示,給叢集取個名稱,其它的保持預設即可。點選“確定”完成叢集的建立。(下面建立節點,並新增到叢集中
) 

這裡寫圖片描述
5、如下圖,點選“啟用更改”按鈕把剛才建立的叢集儲存到weblogic中。 
這裡寫圖片描述
6、如下圖所示。點選左側樹的“環境”- “伺服器”。並點選左上角的“鎖定並編輯”按鈕。點選“新建”按鈕建立一個新的節點 
這裡寫圖片描述
7、進入節點建立介面,如下圖所示。如下圖所示,為節點取個名字,配置節點的埠為7011(7011埠使我們申請開通對外埠),單選框選擇“應屬於, 使此伺服器成為某個現有叢集的成員”把該節點加入剛才我們建立的叢集。然後點選“下一步”進入完成確認頁面(如果我們上面沒有建立叢集,這裡選擇不應屬於,這是一個獨立的伺服器,這樣在節點建立完成後,也可以啟動節點)。 
注:埠7011表示,該節點上服務我們通過7011來訪問,對應的URL類似於http://l192.168.1.200:7011/服務路徑….。該埠一般是遞增的,比如第一個節點配置的埠是7011,那麼第二個節點埠一般配置為7012,第三個節點埠配置為7013… 
這裡寫圖片描述
8、如下圖所示。點選“完成”按鈕完成節點的建立。 
這裡寫圖片描述
9、如下圖所示。節點建立完成,頁面中顯示了節點的名稱、所屬的叢集(如果建立節點的時候選擇了叢集)、節點監聽的埠號資訊。 生產模式中一定不要忘記點選“啟用更改”按鈕使配置生效 
這裡寫圖片描述
10、按照上面的方法我們再建立兩個節點,並加入叢集中(也可以作為獨立伺服器)。如下圖所示,我們建立了一個管理端,和三個節點的叢集 
這裡寫圖片描述

注意:此時節點還沒有啟動,所以狀態都是SHUTDOWN。

第四步:啟動節點。

1、啟動節點必需首先啟動域的管理端 
(由於我們上面已經啟動管理端,所以這裡就不再啟動了,只把方法列出來)

進入命令列,並進入如下路徑(根據自己的安裝目錄進入對應位置), 
cd D:\Program_Files\Oracle\Middleware\user_projects\domains\nodeManager_domain\bin 
輸入如下命令啟動weblogic管理端 
startWeblogic.cmd (linux中使用 ./startWeblogic.sh來啟動)

2、啟動各節點。注:節點的啟動必需在管理端啟動完成後才能啟動。 
進入命令列,並進入如下路徑(根據自己的安裝目錄進入對應位置), 
cd D:\Program_Files\Oracle\Middleware\user_projects\domains\nodeManager_domain\bin 
輸入如下 
startManagerWeblogic server_7011 t3://localhost:8080 
(linux中使用 ./startManagerWeblogic server_7011 t3://localhost:8080)

說明:上面的命令中,startManagerWeblogic.cmd 是啟動節點的指令碼 
(linux中為startManagerWeblogic.sh);server_7011是我們上面建立的節點名稱; 
t3://localhost:8080這個表示節點server_7011指向本機(localhost)的管理端,8080是本機管理端埠,其中的t3是weblogic的協議類似於http。如果管理端不在本機上則這裡的localhost換成目標機器IP,埠換成目標機器管理端埠即可。

注意啟動節點時會提示輸入使用者名稱和密碼

3、依次啟動各節點。當我們啟動完成後再次點選頁面控制檯左側樹“環境”- “伺服器”可以檢視到三個節點的狀態已經改變為RUNNING, 
這裡寫圖片描述

4、點選左側導航樹的“部署”進入工程部署頁面。在這裡就可以部署我們的war包或者工程原始碼了。

通過以上步驟,我們就可以實現weblogic中介軟體的安裝,建立域,新建叢集或者建立節點並部署工程。但是在啟動節點的時候每次都要輸入使用者名稱和密碼,這樣比較麻煩,所以下面我們來看怎麼來實現啟動節點的時候免輸入使用者名稱和密碼。

當我們第一次啟動每一個節點時,weblogic會在 
D:\Program_Files\Oracle\Middleware\user_projects\domains\nodeManager_domain\servers 
目錄下建立各節點對應的資料夾(資料夾的名字和節點名相同),如下圖。AdminServer是管理端的資料夾,server_7011,server_7012,server_7013分別對應我們建立的三個節點。 
這裡寫圖片描述

1、設定管理端啟動時(startWeblogic.cmd啟動時)免輸入密碼 
進入管理端的資料夾 
Cd D:\Program_Files\Oracle\Middleware\user_projects\domains\nodeManager_domain\servers\AdminServer 
在該目錄下新建一個名為security的資料夾,進入該資料夾,新建一個名為boot.properties的檔案 
即檔案boot.properties檔案在路徑 
D:\Program_Files\Oracle\Middleware\user_projects\domains\nodeManager_domain\servers\AdminServer\security 
下面。檔案boot.properties中寫入兩行 
username=建立域時設定的使用者名稱 
password=建立域時設定的密碼 
儲存。完成。 
注:再次啟動該管理端時boot.properties檔案中的使用者名稱和密碼會被加密。所以不用擔心密碼洩露的情況發生 
2、設定節點啟動時(startManageWeblogic.cmd server_7011 t3://localhost:8080),免輸入密碼,這裡首先設定名為server_7011節點 
進入管理端的資料夾 
Cd D:\Program_Files\Oracle\Middleware\user_projects\domains\nodeManager_domain\servers\server_7001 
在該目錄下新建一個名為security的資料夾,進入該資料夾,新建一個名為boot.properties的檔案 
即檔案boot.properties檔案在路徑 
D:\Program_Files\Oracle\Middleware\user_projects\domains\nodeManager_domain\servers\server_7011\security 
下面。檔案boot.properties中寫入兩行 
username=建立域時設定的使用者名稱 
password=建立域時設定的密碼 
儲存。完成。 
注:再次啟動該管理端時boot.properties檔案中的使用者名稱和密碼會被加密。所以不用擔心密碼洩露的情況發 
3、按照上面步驟2的方法把節點server_7012、和節點server_7013都設定一下。 
再次啟動伺服器端或者各節點的時候就不再需要輸入使用者名稱和密碼了。

現在我們啟動節點,是通過命令列來啟動的,如何通過控制檯來控制節點,實現節點的啟動和關閉呢,這裡就要配置節點管理器了。下面是具體的配置步驟:

節點管理器可以在控制檯中對各節點進行關閉和重啟,所以需要各節點是免輸入密碼的,所以進行該步驟配置時需要確定各節點是免輸入密碼的。具體方法參考“五、配置啟動時免輸入密碼” 
首先關閉各節點。點選左側導航樹“環境”-“伺服器”- 主頁面“控制”,然後勾選三個節點server_7011、server_7012、server_7013,點選“關閉”-點選“立即強制重啟”關閉節點 
這裡寫圖片描述

1、建立計算機 (計算機中有節點管理器)。 
如下圖所示點選左側導航樹中的“計算機”,並點選左上角的“鎖定並編輯”按鈕,並點選中間主頁面的“建立”按鈕來建立一個計算機 
這裡寫圖片描述 
2、如下圖所示。給計算機取個名稱(根據自己喜好取,即好容易辨認,比如machine_56)。計算機作業系統選擇預設的“其它”。(因為我們的作業系統一般都是linux或者windows,如果是UNIX作業系統則選擇UNIX)然後點選“下一步”繼續 
這裡寫圖片描述 
3、如下圖所示型別選擇“普通”,(因為我們沒有開戶預設的SSL所以這裡選擇了普通)點選“完成” 
這裡寫圖片描述 
4、如下圖所示。先不要點選“啟用更改”。在中間的主頁面點選剛才建立的計算機名稱“machine_localhost” 
這裡寫圖片描述 
5、如下圖所示,點選“伺服器”選單,然後再點選下面的“新增”按鈕為計算機新增節點(也叫伺服器) 
這裡寫圖片描述 
6、如下圖所示。單選框選擇第一個“選擇現有的伺服器, 並將它與此計算機關聯”,選擇伺服器一行,先選擇管理端“AdminServer”,然後點選“下一步”或者“完成”按鈕完成管理端的新增 
這裡寫圖片描述 
7、如下圖所示。再次點選“新增”按鈕,新增server_7011節點,然後重複該操作把剩下的節點都新增到該計算機中來。 
這裡寫圖片描述 
8、如下圖所示。點選“啟用更改”完成計算機的建立及配置。 
這裡寫圖片描述 
9、如下圖所示。點選左上角“鎖定並編輯”按鈕進入編輯模式。然後點選左側導航樹“環境”-“伺服器”-中間主頁面中點選“server_7011” 
這裡寫圖片描述 

10、如下圖所示。點選“伺服器啟動”選單項。各項引數配置為(根據自己的機器設定對應的路徑) 

以下是Windows環境的配置

Java主目錄: D:/Program_Files/java/jdk1.6.0_45 
Java供應商: sun 
BEA 主目錄: D:/Program_Files/Oracle/Middleware 
根目錄: D:/Program_Files/Oracle/Middleware/user_projects/domains/portal_domain 
類路徑: D:/Program_Files/Oracle/Middleware/wlserver_10.3/server/lib/weblogic.jar 
引數: (注:引數一欄設定為空) 

安全策略檔案: D:/Program_Files/Oracle/Middleware/wlserver_10.3/server/lib/weblogic.policy 

以下是Linux環境的配置

Java主目錄: /usr/java/jdk1.7.0_80 
Java供應商: sun 
BEA 主目錄: /home/weblogic/Oracle/Middleware(weblogic安裝目錄) 
根目錄: /home/weblogic/Oracle/Middleware/user_projects/domains/nodeManager_domain 
類路徑: /home/weblogic/Oracle/Middleware/wlserver_10.3/server/lib/weblogic.jar 
引數: (注:引數一欄設定為空) 

安全策略檔案: /home/weblogic/Oracle/Middleware/wlserver_10.3/server/lib/weblogic.policy 


下面的使用者名稱,密碼,確認密碼,輸入建立域時的設定的使用者名稱和密碼。然後點選“儲存” 
這裡寫圖片描述 
11、如下圖所示。點選“啟用更改”按鈕啟用剛才的設定 
這裡寫圖片描述 
12、重複上述操作,完成其它結點的設定。 
13、修改weblogic 節點管理器引數 
首先啟動節點管理器,在命令列中進入目錄 
D:\Program_Files\Oracle\Middleware\wlserver_10.3\server\bin 
執行指令碼startNodeManager.cmd (linux伺服器使用指令碼startNodeManager.sh),命令為 
startNodeManager.cmd (linux伺服器中為 ./startNodeManager.sh) 
啟動完成後。關閉它。(啟動的目的是讓節點管理器生成自己的配置檔案,第一次啟動時會生成) 
進入資料夾D:\Program_Files\Oracle\Middleware\wlserver_10.3\common\nodemanager 
開啟節點管理器配置檔案nodemanager.properties, 
把StartScriptEnabled=false這一行修改為StartScriptEnabled=true,(個人理解,意思是weblogic允許通過指令碼啟動節點)。 
然後再次啟動節點管理器 
14、下面我們就可以在控制檯的頁面上關閉和啟動各節點了。如下圖所示,點選左側導航樹的“環境”- “伺服器”,然後點選中間主頁面的“控制”,然後勾選需要啟動的節點,然後點選“啟動” 
這裡寫圖片描述 
15、如下圖所示。點選“是”開始啟動節點。 
這裡寫圖片描述 
16、之後我們可以點選左側導航樹的“環境”- “伺服器”重新整理頁面,檢視各節點的狀態,檢視各節點是否完成啟動。如下圖所示表示各節點完成了啟動。 
這裡寫圖片描述 
17、關閉節點。 
點選上圖的控制,勾選需要關閉的節點,然後點選“關閉”- “立即強制關閉”可以關閉節點。注意:不要關閉控制端(AdminServer),如果把AdminServer也關閉了,那我們需要登入伺服器,手動啟動管理端。

另外需要注意的是:我們使用節點管理器全新啟動weblogic的時候正確順序是,先啟動管理端(startWeblogic.sh),然後再啟動節點管理器(startNodeManager.sh),然後登入控制檯啟動各節點。

Weblogic的優化

根據weblogic論壇查詢到的資料,整理如下。 
1、記憶體優化 
首先確定JDK支援的記憶體大小。各個jdk版本在不同作業系統中支援的最大記憶體是不一樣的,但是可以通過以下方法來進行測試。 
java -XmxXXXm(g) -version 
其中,XXX為最大記憶體數值, m(g)是記憶體的計量單位,如果命令能夠正確顯示出jdk的版本等資訊,說明當前jdk支援測試的最大記憶體數量,否則說明測試的記憶體超出了jdk支援的最大值。 
例如 java -Xmx1024m -version 或者 java -Xmx2g -version 
測試發現一般在32位機器上,windows作業系統該最大值位於1.5G-2G之間,linux作業系統該最大值為2G-3G之間;在64位機器上面應該沒啥限制,經測試寫64G也能正常得出版本資訊

修改方法: 
修改D:/Program_Files/Oracle/Middleware/user_projects/domains/base_domain/bin下的setDomainEnv.cmd檔案(linux上修改setDomainEnv.sh): 
修改前:(如下所示,預設的大小為512m) 
if”%JAVA_VENDOR%”==”Sun” ( 
set WLS_MEM_ARGS_64BIT=-Xms256m -Xmx512m 
set WLS_MEM_ARGS_32BIT=-Xms256m -Xmx512m 
) else ( 
set WLS_MEM_ARGS_64BIT=-Xms512m -Xmx512m 
set WLS_MEM_ARGS_32BIT=-Xms512m -Xmx512m 

setMEM_PERM_SIZE_32BIT=-XX:PermSize=48m 
setMEM_MAX_PERM_SIZE_32BIT=-XX:MaxPermSize=128m

修改後:(這裡給了它最大4G記憶體)

if”%JAVA_VENDOR%”==”Sun” ( 
set WLS_MEM_ARGS_64BIT=-Xms3072m –Xmx4096m 
set WLS_MEM_ARGS_32BIT=-Xms1024m –Xmx1536m 
) else ( 
set WLS_MEM_ARGS_64BIT=-Xms3072m –Xmx4096m 
set WLS_MEM_ARGS_32BIT=-Xms1024m –Xmx1536m 

setMEM_PERM_SIZE_32BIT=-XX:PermSize=288m 
setMEM_MAX_PERM_SIZE_32BIT=-XX:MaxPermSize=768m 
說明:具體修改值根據實際實體記憶體確定 
· -Xmx3550m:設定JVM最大堆記憶體為3550M。 
· -Xms3550m:設定JVM初始堆記憶體為3550M。此值可以設定與-Xmx相同,以避免每次JVM動態分配記憶體所浪費的時間。 
· -XX:PermSize=256M:設定堆記憶體持久化初始值為256M。(貌似是Eclipse等IDE的初始化引數) 
· -XX:MaxPermSize=512M:設定持久化最大值為512M。 
32位操作JDK記憶體系統:最大可設定1.5G,如果設定過大,會導致服務無法啟動 
64位操作JDK記憶體系統:最大設定為實體記憶體的60~80%

關於於JVM記憶體的一些詳細地知識,檢視“附錄I”

2、設定執行緒數

修改weblogic\user_projects\domains\base_domain\bin下的setDomainEnv.cmd中 
在JAVA_OPTIONS中新增如下: 
set JAVA_OPTIONS=%JAVA_OPTIONS%-Dweblogic.threadpool.MinPoolSize=2000 
set JAVA_OPTIONS=%JAVA_OPTIONS%-Dweblogic.threadpool.MaxPoolSize=4000 
說明: 
JDK5.0以後每個執行緒棧大小為1M,但是作業系統對一個程序內的執行緒數還是有限制的,不能無限生成。32位作業系統根據JVM最大堆記憶體設定;64位作業系統經驗值在3000~5000左右。

3、weblogic檔案連線數 
D:\Program_Files\Oracle\Middleware\wlserver_10.3\common\bin(根據自己的機器情況進入對應的路徑)路徑下的commEnv.cmd (linux伺服器為commEnv.sh),檔案中的方法resetFd限制了weblogic開啟的檔案連線數不大於1024,我們把這方法註釋掉以去掉這個限制。在檔案的最後一行由resetFd修改為#resetFd (#號表示註釋)

4、修改linux作業系統的檔案控制代碼數限制(這個未做測試,僅供參考) 
因為linux系統裡都是以檔案來表示的,所以在做高併發的web系統時,修改檔案控制代碼限制那是必須的。 
檢視某個程序使用了的檔案控制代碼數 
# sudo ps -ef | grep java 
root 1663 1 0 02:37 ? 00:00:43 /opt/bitnami/java/bin/java 
從結果中可得知程序的pid,然後根據pid檢視該程序當前使用的檔案控制代碼數 
#sudo ls /proc/1663/fd | wc -l 
1022 
發現控制代碼數一直就停留在1022,同時top檢視發現load持續增高。於是先查看了下當前程序的控制代碼數限制。 
#sudo cat /proc/1663/limits | grep “files” 
Max open files 1024 1024 files 
發現限制卡在這了,於是修改/etc/sysctl.conf檔案,新增一行如下: 
fs.file-max=30720 
儲存。並執行 
#sudo sysctl -p 
然後再檢視就發現已經改過來了。 
Google發現linux系統裡有兩種檔案控制代碼限制,一種是系統級的,一種是使用者級的。 
修改系統級的: www.2cto.com 
#echo “30720” > /proc/sys/fs/file-max 
修改使用者級的: 
#sudo vi /etc/security/limits.conf 
增加如下行: 
* soft nofile 2048 
* hard nofile 32768 
星號表示任何使用者,soft/hard表示軟限制、硬限制。修改/etc/pam.d/login檔案指定使用PAM 
session required /lib/security/pam_limits.so 
不過需要注意的是系統是32位還是64位,若是64位的那就是/lib64/security/pam_limits.so 
上面的修改後,reboot,再次檢視 
#ulimit -n 
30720 
修改成功。