Java軟件報(bào)表軟件技術(shù)博客

          java報(bào)表軟件技術(shù)匯總 java報(bào)表軟件制作 報(bào)表軟件新聞
          posts - 355, comments - 100, trackbacks - 0, articles - 3
             :: 首頁(yè) :: 新隨筆 ::  :: 聚合  :: 管理
           前述:

          windows集群同J2EE的集群不同,因?yàn)樗遣僮飨到y(tǒng)自帶的集群支持,它沒(méi)有J2EE集群對(duì)javaweb應(yīng)用的良好支持,例如session復(fù)制以及session粘滯。所以對(duì)windows集群,需要特別配置一下,以此來(lái)支持集群的功能。

          簡(jiǎn)單原理說(shuō)明:

          Windows集群的均衡負(fù)載會(huì)根據(jù)情況,將外部請(qǐng)求分配給集群內(nèi)的服務(wù)器處理。當(dāng)一個(gè)會(huì)話(Session)在A服務(wù)器上產(chǎn)生并開(kāi)始,產(chǎn)生了一部分會(huì)話信息將保存到A服務(wù)器的內(nèi)存中。假如這次會(huì)話中的一次請(qǐng)求被windows集群的均衡負(fù)載調(diào)度器分配到了B服務(wù)器去處理,那么問(wèn)題就產(chǎn)生了,B服務(wù)器中的內(nèi)存中并沒(méi)有這個(gè)會(huì)話的信息,那么就會(huì)報(bào)session timeout

          而我們的配置,會(huì)在集群的服務(wù)器間建立聯(lián)系。當(dāng)B服務(wù)器收到請(qǐng)求,發(fā)現(xiàn)這個(gè)請(qǐng)求的會(huì)話不是自己產(chǎn)生的,那么它會(huì)根據(jù)請(qǐng)求中的信息,判斷出這個(gè)會(huì)話是由哪臺(tái)服務(wù)器產(chǎn)生。接著它會(huì)將這個(gè)請(qǐng)求通過(guò)內(nèi)網(wǎng)轉(zhuǎn)發(fā)給相應(yīng)的那臺(tái)服務(wù)器去處理。這樣相當(dāng)于就實(shí)現(xiàn)了J2EE集群的會(huì)話粘滯的功能。簡(jiǎn)單的說(shuō),會(huì)話粘滯就是保持一個(gè)會(huì)話中的多次交互都由一臺(tái)集群中的服務(wù)器處理。這樣就不會(huì)再產(chǎn)生上述的問(wèn)題。

          前提:

                   集群的服務(wù)器間需要有內(nèi)網(wǎng)間通信的支持。

                   不同服務(wù)器上的報(bào)表應(yīng)用必須是一致的。

          配置步驟:

          集群內(nèi)的每臺(tái)安裝有報(bào)表應(yīng)用的服務(wù)器都需要這樣配置。

          1.       關(guān)閉現(xiàn)在的報(bào)表服務(wù)。

          2.       增加配置文件。

          將配置包resource文件夾下的cluster.xml打開(kāi)。看見(jiàn)如下內(nèi)容

          <?xml version="1.0" encoding="UTF-8" ?>

          <ClusterConfig useCluster="true">      //useCluster=”true”表示啟用集群配置

          <ClusterService>

                     <ServiceName>A</ServiceName> //給這臺(tái)服務(wù)器取一個(gè)區(qū)別于其他機(jī)器的別名

                     <ip>192.168.0.1</ip>            //這臺(tái)服務(wù)器在內(nèi)網(wǎng)中的IP地址

                     <port>8080</port>              //報(bào)表應(yīng)用的端口

                     <WebAppName>WebReport</WebAppName>  //報(bào)表應(yīng)用的名稱

          </ClusterService>

          <ClusterService>

                     <ServiceName>B</ServiceName>

                     <ip>192.168.0.2</ip>

                     <port>8080</port>

                     <WebAppName>WebReport</WebAppName>

          </ClusterService>

          </ClusterConfig>

          這里的每個(gè)ClusterService都是集群中一臺(tái)服務(wù)器的相關(guān)信息。配置好后,系統(tǒng)會(huì)根據(jù)自身的IP和端口號(hào)去匹配找到相應(yīng)的信息。當(dāng)然也可能會(huì)有一些原因?qū)е孪到y(tǒng)無(wú)法正確的匹配找到。這時(shí)您可以設(shè)置isSelf屬性來(lái)指定自身的屬性。

          例如這個(gè)配置文件部署在A服務(wù)器下,那么ServiceNameA的那個(gè)ClusterService節(jié)點(diǎn)后加一個(gè)屬性 isSelf=”true”,表示下這是本機(jī)的信息。如下所示。

          <?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>         //這個(gè)就是指定自身信息的A服務(wù)器相應(yīng)的配置文件了

          ServiceName是為一臺(tái)服務(wù)器取的別名,只是為了區(qū)別標(biāo)記一下。最好簡(jiǎn)單方便,如ABC或者A1A2等。注意!不能是中文。

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

          IP是該臺(tái)服務(wù)器內(nèi)網(wǎng)中的IP,就是其它服務(wù)器能與之通信的IP

          Port報(bào)表應(yīng)用的端口號(hào),假如是部署在tomcat下,那么就是tomcat的端口號(hào),默認(rèn)是8080.例如我們的內(nèi)置服務(wù)器是8079.

          WebAppName是報(bào)表應(yīng)用的名稱,我們默認(rèn)的是WebReport

          簡(jiǎn)單的講。如上面的那個(gè)例子。B服務(wù)器的信息如下。

          <ClusterService>

                     <ServiceName>B</ServiceName>

                     <ip>192.168.0.2</ip>

                     <port>8080</port>

                     <WebAppName>WebReport</WebAppName>

          </ClusterService>

          那么正確的配置的結(jié)果,就是在A服務(wù)器上,假如有瀏覽器,瀏覽器中輸入

          http://192.168.0.2:8080/WebReport/ReportServer?reportlet=xxx.cpt就能訪問(wèn)到B服務(wù)器上的報(bào)表應(yīng)用。這個(gè)url中的IP、端口號(hào)和web應(yīng)用名稱就是上面配置信息里面的。注:xxx.cpt只是舉個(gè)例子。

          那么綜上說(shuō)明,假如集群中多了一臺(tái)C服務(wù)器,給它取個(gè)別名就叫C。內(nèi)網(wǎng)IP192.168.0.3。裝了tomcat,端口默認(rèn)是8080。報(bào)表應(yīng)用名稱也是默認(rèn)是WebReport。那么服務(wù)器下的配置文件應(yīng)該如下所示。

          <?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>

          最后,請(qǐng)根據(jù)上面的格式,寫好cluster.xml文件,并且將其拷貝到各服務(wù)器的報(bào)表應(yīng)用下WEB-INF"resources文件夾下。當(dāng)然,有isSelf屬性指定的特定服務(wù)器的配置文件需要保存到相應(yīng)的服務(wù)器路徑下。

          注意!xml文件的保存格式是 utf-8 no Bom的格式。一般用寫字板打開(kāi)配置包下的cluster.xml文件,修改保存就可以。

          3.       測(cè)試配置是否生效。

          當(dāng)集群中的服務(wù)器都已經(jīng)按照上述步驟配置好,并且重新啟動(dòng)報(bào)表應(yīng)用后。依次在各臺(tái)服務(wù)器上做如下測(cè)試。

          例如,現(xiàn)在在A服務(wù)器下,先本機(jī)測(cè)試下報(bào)表能否訪問(wèn),測(cè)一張簡(jiǎn)單的模板就行。能正常訪問(wèn)(ie瀏覽器可能需要將localhost或者127.0.0.1的本機(jī)地址添加到信任站點(diǎn)中才能顯示頁(yè)面),接著在瀏覽器上輸入:

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

          上述url地址前面部分按情況,請(qǐng)換上相應(yīng)報(bào)表應(yīng)用的端口號(hào)和應(yīng)用名稱。然后假如本機(jī)設(shè)置正常就能看到如下的信息:(以上述AB兩臺(tái)服務(wù)器的配置文件舉例)

          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

          這樣說(shuō)明,配置生效,A服務(wù)器能與B服務(wù)器間進(jìn)行通信。再次查看下信息是否有誤。

          那么相應(yīng)的在B服務(wù)器下測(cè)試,正確的回應(yīng)如下。

          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

             

          假如,沒(méi)有顯示Cluster is start,那么說(shuō)明該機(jī)的配置沒(méi)有生效,請(qǐng)檢查配置文件后,重新啟動(dòng)應(yīng)用,并且再次依照上面步驟測(cè)試。

          假如顯示是這樣:

          Cluster is start!

          Can not find Own Service Info.

          LocalIP:192.168.0.39

          LocalPort:8070

          說(shuō)明,集群配置了,但是系統(tǒng)無(wú)法根據(jù)自身找到的IP和端口匹配到配置文件中的信息。而系統(tǒng)找到的IP192.168. 0.39,端口是8070.可能您配置成了192.168.0.388080,那系統(tǒng)就找不到相應(yīng)的節(jié)點(diǎn)信息了。當(dāng)然由于各種原因可能系統(tǒng)無(wú)法拿到正確的IP和端口,這時(shí)請(qǐng)您檢查后,設(shè)置正確的IP和端口后,在相應(yīng)的ClusterService的節(jié)點(diǎn)上加isSelf屬性(isSelf=”true”)

          假如,SELF:下的信息不正確,或者沒(méi)有信息,也請(qǐng)檢查配置文件。

          假如,下面列出的其它機(jī)器的信息不正確,或者有遺漏,也請(qǐng)檢查配置信息后,重啟報(bào)表應(yīng)用重試。

          假如,其它服務(wù)器的回應(yīng),沒(méi)有回應(yīng)OK,例如回應(yīng)Connection timed out: connect。請(qǐng)檢查下那臺(tái)服務(wù)器的配置信息,檢查網(wǎng)絡(luò)連接,ping下那臺(tái)機(jī)器的ip地址,看看是否能ping通。然后查看那臺(tái)服務(wù)器報(bào)表應(yīng)用的端口和應(yīng)用名稱是否設(shè)置正確。

          可以在瀏覽器中輸?shù)刂分苯釉趦?nèi)網(wǎng)中訪問(wèn)下那臺(tái)機(jī)上的報(bào)表應(yīng)用,看看設(shè)置的ip、端口號(hào)等是否設(shè)置正確。修改后,重新啟動(dòng)報(bào)表應(yīng)用,重試。

          假如您覺(jué)得一臺(tái)臺(tái)服務(wù)器都這樣去測(cè)試太麻煩,您也可以直接改成op=cluster_test_all.(http://localhost:8080/WebReport/ReportServer?op=cluster_test_all)來(lái)一起測(cè)試。這個(gè)其實(shí)就是在本機(jī)上給其它機(jī)器發(fā)op=cluster_test的請(qǐng)求,然后把回應(yīng)一起顯示出來(lái)。例如這樣。

          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


          ------------------------------------------

          這個(gè)可能回應(yīng)的時(shí)間比較長(zhǎng),所以假如長(zhǎng)時(shí)間沒(méi)有回應(yīng),說(shuō)明某臺(tái)機(jī)器的配置有問(wèn)題,還是需要照上面的步驟一臺(tái)臺(tái)機(jī)器去測(cè)試。

          4.       結(jié)束

          當(dāng)以上檢查步驟結(jié)束。所有服務(wù)器都檢查,發(fā)現(xiàn)正確后。恭喜,配置就完成了。

          假如您在配置過(guò)程中,有無(wú)法解決的問(wèn)題,請(qǐng)與我們聯(lián)系。



          主站蜘蛛池模板: 定州市| 香港 | 呼和浩特市| 上思县| 曲靖市| 将乐县| 吴忠市| 云浮市| 滦平县| 诸城市| 思茅市| 康乐县| 黑河市| 松原市| 文登市| 大余县| 剑川县| 乃东县| 青铜峡市| 化隆| 山西省| 额敏县| 德江县| 晋宁县| 禹城市| 大石桥市| 绥中县| 翼城县| 武清区| 会同县| 中牟县| 镇宁| 江西省| 西贡区| 湖北省| 哈密市| 桦甸市| 莱芜市| 旺苍县| 黄陵县| 庄河市|