FineReport

最強大的動態報表與BI商業智慧工具!

FineReport6.5企業版Windows集群配置說明

前述:

windows集群同J2EE的集群不同,因為它是操作系統自帶的集群支持,它沒有J2EE集群對java的web應用的良好支持,例如session複製以及session粘滯。所以對windows集群,需要特別配置一下,以此來支持集群的功能。

簡單原理說明:

Windows集群的均衡負載會根據情況,將外部請求分配給集群內的伺服器處理。當一個會話(Session)在A伺服器上產生並開始,產生了一部分會話信息將保存到A伺服器的內存中。假如這次會話中的一次請求被windows集群的均衡負載調度器分配到了B伺服器去處理,那麼問題就產生了,B伺服器中的內存中並沒有這個會話的信息,那麼就會報session timeout。

而我們的配置,會在集群的伺服器間建立聯繫。當B伺服器收到請求,發現這個請求的會話不是自己產生的,那麼它會根據請求中的信息,判斷出這個會話是由哪台伺服器產生。接著它會將這個請求通過內網轉發給相應的那台伺服器去處理。這樣相當於就實現了J2EE集群的會話粘滯的功能。簡單的說,會話粘滯就是保持一個會話中的多次交互都由一台集群中的伺服器處理。這樣就不會再產生上述的問題。

前提:

集群的伺服器間需要有內網間通信的支持。不同伺服器上的報表應用必須是一致的。

配置步驟:

集群內的每台安裝有報表應用的伺服器都需要這樣配置。

1. 關閉現在的報表服務。

2. 增加配置文件。

將配置包resource文件夾下的cluster.xml打開。看見如下內容:

<?xml version="1.0" encoding="UTF-8" ?>
<ClusterConfig useCluster="true">      //useCluster=」true」表示啟用集群配置
	<ClusterService>
		<ServiceName>A</ServiceName>  //給這台伺服器取一個區別於其他機器的別名
		<ip>192.168.0.1</ip>            //這台伺服器在內網中的IP地址
		<port>8080</port>              //報表應用的埠
		<WebAppName>WebReport</WebAppName>  //報表應用的名稱
	</ClusterService>
	<ClusterService>
		<ServiceName>B</ServiceName>
		<ip>192.168.0.2</ip>
		<port>8080</port>
		<WebAppName>WebReport</WebAppName>
	</ClusterService>
</ClusterConfig>

這裡的每個ClusterService都是集群中一台伺服器的相關信息。配置好後,系統會根據自身的IP和埠號去匹配找到相應的信息。當然也可能會有一些原因導致系統無法正確的匹配找到。這時您可以設置isSelf屬性來指定自身的屬性。例如這個配置文件部署在A伺服器下,那麼ServiceName為A的那個ClusterService節點後加一個屬性 isSelf=」true」,表示下這是本機的信息。如下所示:

<?xml version="1.0" encoding="UTF-8" ?>
<ClusterConfig useCluster="true">
	<ClusterService  isSelf="true">
		<ServiceName>A</ServiceName>
		<ip>192.168.0.1</ip>
		<port>8080</port>
		<WebAppName>WebReport</WebAppName>
	</ClusterService>
	<ClusterService>
		<ServiceName>B</ServiceName>
		<ip>192.168.0.2</ip>
		<port>8080</port>
		<WebAppName>WebReport</WebAppName>
	</ClusterService>
</ClusterConfig>         //這個就是指定自身信息的A伺服器相應的配置文件了

ServiceName是為一台伺服器取的別名,只是為了區別標記一下。最好簡單方便,如A、B、C或者A1、A2等。注意!不能是中文。

IP、PORT、和WebAppName上面的注釋中有介紹。

IP是該台伺服器內網中的IP,就是其它伺服器能與之通信的IP。Port是報表應用的埠號,假如是部署在tomcat下,那麼就是tomcat的埠號,默認是8080.例如我們的內置伺服器是8079。WebAppName是報表應用的名稱,我們默認的是WebReport。

簡單的講。如上面的那個例子。B伺服器的信息如下。

<ClusterService>
	<ServiceName>B</ServiceName>
	<ip>192.168.0.2</ip>
	<port>8080</port>
	<WebAppName>WebReport</WebAppName>
</ClusterService>

那麼正確的配置的結果,就是在A伺服器上,假如有瀏覽器,瀏覽器中輸入:

http://192.168.0.2:8080/WebReport/ReportServer?reportlet=xxx.cpt

就能訪問到B伺服器上的報表應用。這個url中的IP、埠號和web應用名稱就是上面配置信息裡面的。註:xxx.cpt只是舉個例子。

那麼綜上說明,假如集群中多了一台C伺服器,給它取個別名就叫C。內網IP是192.168.0.3。裝了tomcat,埠默認是8080。報表應用名稱也是默認是WebReport。那麼伺服器下的配置文件應該如下所示:

<?xml version="1.0" encoding="UTF-8" ?>
<ClusterConfig useCluster="true">
	<ClusterService>
		<ServiceName>A</ServiceName>
		<ip>192.168.0.1</ip>
		<port>8080</port>
		<WebAppName>WebReport</WebAppName>
	</ClusterService>
	<ClusterService>
		<ServiceName>B</ServiceName>
		<ip>192.168.0.2</ip>
		<port>8080</port>
		<WebAppName>WebReport</WebAppName>
	</ClusterService>
	<ClusterService>
		<ServiceName>C</ServiceName>
		<ip>192.168.0.3</ip>
		<port>8080</port>
		<WebAppName>WebReport</WebAppName>
	</ClusterService>
</ClusterConfig>

最後,請根據上面的格式,寫好cluster.xml文件,並且將其拷貝到各伺服器的報表應用下WEB-INFresources文件夾下。當然,有isSelf屬性指定的特定伺服器的配置文件需要保存到相應的伺服器路徑下。注意:xml文件的保存格式是 utf-8 no Bom的格式。一般用寫字板打開配置包下的cluster.xml文件,修改保存就可以。

3. 測試配置是否生效。

當集群中的伺服器都已經按照上述步驟配置好,並且重新啟動報表應用後。依次在各台伺服器上做如下測試。例如,現在在A伺服器下,先本機測試下報表能否訪問,測一張簡單的模板就行。能正常訪問(ie瀏覽器可能需要將localhost或者127.0.0.1的本機地址添加到信任站點中才能顯示頁面),接著在瀏覽器上輸入:

http://localhost:8080/WebReport/ReportServer?op=cluster_test

上述url地址前面部分按情況,請換上相應報表應用的埠號和應用名稱。然後假如本機設置正常就能看到如下的信息(以上述A、B兩台伺服器的配置文件舉例):

Cluster is start!
SELF:
ServiceName:A
IP:192.168.0.1
PORT:8080
WebAppName:WebReport

Other Server List:
NO1: ServiceName:B = 192.168.0.2:8080/WebReport – OK

這樣說明,配置生效,A伺服器能與B伺服器間進行通信。再次查看下信息是否有誤。那麼相應的在B伺服器下測試,正確的回應如下。

Cluster is start!
SELF:
ServiceName:B
IP:192.168.0.2
PORT:8080
WebAppName:WebReport

Other Server List:
NO1: ServiceName:A = 192.168.0.1:8080/WebReport – OK

假如,沒有顯示Cluster is start,那麼說明該機的配置沒有生效,請檢查配置文件後,重新啟動應用,並且再次依照上面步驟測試。

假如顯示是這樣:

Cluster is start!
Can not find Own Service Info.
LocalIP:192.168.0.39
LocalPort:8070。

說明,集群配置了,但是系統無法根據自身找到的IP和埠匹配到配置文件中的信息。而系統找到的IP是192.168. 0.39,埠是8070.可能您配置成了192.168.0.38:8080,那系統就找不到相應的節點信息了。當然由於各種原因可能系統無法拿到正確的IP和埠,這時請您檢查後,設置正確的IP和埠後,在相應的ClusterService的節點上加isSelf屬性(isSelf=」true」)。

假如,SELF:下的信息不正確,或者沒有信息,也請檢查配置文件;假如,下面列出的其它機器的信息不正確,或者有遺漏,也請檢查配置信息後,重啟報表應用重試;假如,其它伺服器的回應,沒有回應OK,例如回應Connection timed out: connect。請檢查一下那台伺服器的配置信息,檢查網路連接,ping下那台機器的ip地址,看看是否能ping通,然後查看那台伺服器報表應用的埠和應用名稱是否設置正確。可以在瀏覽器中輸地址直接在內網中訪問下那台機上的報表應用,看看設置的ip、埠號等是否設置正確。修改後,重新啟動報表應用,重試。

假如您覺得一台台伺服器都這樣去測試太麻煩,您也可以直接改成op=cluster_test_all 。(http://localhost:8080/WebReport/ReportServer?op=cluster_test_all)來一起測試。這個其實就是在本機上給其它機器發op=cluster_test的請求,然後把回應一起顯示出來。例如這樣:

Cluster is start
SELF:
ServiceName:A
IP:192.168.100.39
PORT:8080
WebAppName:WebReport

Other Server List:
NO1: ServiceName:B = 192.168.100.39:8070/WebReport
——————————————
Test it(op = cluster_test) – RE:
Cluster is start! SELF:
ServiceName:B
IP :192.168.100.39
PORT :8070
WebAppName :WebReport

Other Server List:
NO1: ServiceName:A = 192.168.100.39:8080/WebReport – OK

——————————————
這個可能回應的時間比較長,所以假如長時間沒有回應,說明某台機器的配置有問題,還是需要照上面的步驟一台台機器去測試。

4. 結束

當以上檢查步驟結束。所有伺服器都檢查,發現正確後。恭喜,配置就完成了。

假如您在配置過程中,有無法解決的問題,請與我們聯繫。

  • 聯繫我們

  • 電話:0933-790886
  • 邮箱:brian.wang@fanruan.com
  • 地址:300 新竹市學府路40號 (交大育成中心 R302)
  • 臉書粉絲團
Copyright©2017 Fanruan Software Co.,Ltd. All Rights Reserved. 帆軟軟體有限公司 | 蘇ICP備14031611號-8

返回頂部