ArcGIS for Sever 10.1 服務遷移與恢復


 

===

聲明:以下內容本是自己寫給單位內部同事的參考手冊,但是被傳到百度文庫中。陸續有用戶就這方面的問題,通過電話,郵件等方式聯系我。首先,感到榮幸。其次是,由於本人當時測試和編寫的時候,由於倉促,可能有存在着缺陷的地方。如果大家在實際的工作中,按照這個方式出現問題或者想和我交流的話,請在該文章下面留言,盡量回復大家。最后,個人不代表單位,也不代表官方。

該文章百度文庫的連接如下:

我是度娘

下面的內容與文庫有點不一樣,修改了諸如圖片序列,錯別字等低級錯誤。

===

在實際的工作環境中,服務的備份與恢復是日常基礎的維護與管理操作。但是直到10.2 的版本,ArcGIS for Server才推出站點的恢復與備份功能。這就導致10.2之前的10.1和10.1sp1的Server,在需要遷移或者重新安裝的時候,無法重用已有服務。官方的遷移和回復答案是對site中的所有的服務都需要重新發布。那么問題就來了,當site中的服務特別的多,更甚發布服務的mxd文檔找不到的時候,重新發布服務變得比較困難。這個時候就迫切的需要在不需要重新發布服務的情況下,能批量對已有site中服務進行遷移且在新的site中能夠正常的運行。

在日常的技術支持工作中,經常遇到用戶反饋上述需求。基於上面的目的,為了測試在不重新發布服務的情況下,平穩的遷移site。特做了多組測試。最后總結服務遷移的操作方式。

1單台服務器

測試環境:Windows Server 2008, ArcGIS for Server 10.1, Oracle 11gR2

1.1 情形一:數據源相同

由於服務的能否正常使用,一個關鍵點是服務能夠找到對應的數據源,為了避免數據源帶來的影像,在情形一的所有測試中,假設發布服務的數據源的絕對位置沒有發生變化和連接數據源的連接方式沒有發生變化。

A. Config-store directories 存放路徑相同

測試說明:

假設遷移前的ArcGIS for Server的服務目錄為C:\arcgisserver, config-store和directories 位於該目錄下。且遷移后,新的site的服務目錄不變。

測試步驟:

STEP 1: 拷貝遷移前服務目錄中的 config-store里面的services目錄和整個directories(更為方便的方式是拷貝整個arcgisserver目錄)

STEP2: 刪除site

STEP 3:重新創建site,根據前提條件,目錄和原先site保存不變

STEP4:如果STEP1拷貝的只是services和directories 轉到步驟5,拷貝了整個arcgisserver目錄轉到步驟6

STEP5:將步驟1備份的Services目錄和directories 目錄拷貝到新創建的site對應的目錄下,覆蓋對應目錄。由於data store的存儲信息沒有帶過來,故重新注冊data store(注意,data store和遷移前的一模一樣,包括,data store的名字,連接字符串等,否則不能稱為數據源不變)。

STEP6: 拷貝過來的arcgisserver目錄,由於拷貝丟失了相關的權限信息。故在文件夾屬性的安全中,賦予ArcGIS for Server的完全控制選項。

STEP7: 重新啟動服務

結果:

測試的地圖服務,要素服務,gp服務,切片服務都能正常運行。則證明通過這種方式,完全可以在不用重新發布服務的情況下,對站點中的服務進行遷移。測試中發現,STEP5中即使不注冊數據源也能成功,證明在msd中記錄了數據源的連接信息。

B. config-store directories 存放路徑不同

假設遷移前的confg-store和directories在C:\arcigsserver,而新安裝的ArcGIS for Server的目錄在D:\arcigsserver 目錄下。則按照上面1中的測試步驟測試。重啟服務的時候,出現了如圖1-1的錯誤。

                 

圖 1‑1重啟服務出現錯誤

 

這錯誤也有力說明了,服務的發布是通過msd的形式。既然是msd的路徑沒有改過來,就需要找到Server的配置文檔,並修改相對應的位置,在該過程中,分別嘗試修改了兩個出現上面路徑的地方

路徑1:在arcgisinput的目錄下的相對應服務目錄下的manifest.json和manifest.xml文件(如arcgisinput\siteRS\MyMapServiceRS.MapServer\extracted\),通過這種方式重啟服務,任然出現圖1錯誤。說明msd的路徑的映射不在該位置。

路徑2:在config-store的services目錄中找到對應的服務目錄,修改了服務名對應的json文件中的相對應路徑(如:config-store\services\siteRS\MyMapServiceRS.MapServer\MyMapServiceRS.MapServer.json)如圖1-2所示:

                       

圖 1‑2服務配置文件

將以上路徑,修改新site中的對應的位置,重新啟動服務。所有服務都能正常啟動。

C. ArcGIS for Server的賬戶不同

上面1和2的測試情況,易出現在Server正常而site的不能正常的情況,在可以不重新安裝Server的情況下,修復site中的服務。

除了上面的情況,還有一種較為常見的情況,就是Server服務不能正常啟動。這個時候就手動需要修復Server。通常推薦的方式,就是通過卸載已有的ArcGIS for Server,然后重新安裝。

測試說明:

備份的ArcGIS for Server的賬戶Administrator 密碼:Administrator,而重新安裝的ArcGIS for Server的賬戶:ArcGIS 密碼:ArcGIS;且arcigsserver目錄保持不變。

測試步驟:

STEP1:卸載前,對config-store中的services和directories或者整個arcgisserver目錄進行備份。

STEP2:刪除Program Files目錄中的全部Server目錄,刪除arcgisserver目錄(也可以不手動刪除,但是建議全部刪除)

STEP3: 重新安裝Server,創建站點

STEP4:將STEP1中的備份文件拷貝到對應的目錄下

STEP5:重啟服務,但是出現如圖1-3所示的錯誤:

               

圖 1‑3啟動錯誤

通過查看日志文件,出現如下創建實例失敗。如圖1-4所示:

             

圖 1‑4日志文件

通常出現該問題就是Server的賬戶沒有權限訪問到arcgisserver目錄。為了驗證是賬戶權限導致該問題,作了如下兩種驗證:

方式1:通過Configure ArcGIS Server Account 更改Server的賬戶,操作如圖1-5所示,更改到備份前Server賬戶。重啟Server服務,服務能正常啟動和使用。

                                       

 

圖 1‑5修改server賬戶

方式2:在不修改server賬戶的前提下,修改arccgisserver文件夾屬性,更改其安全,如圖1-6所示,賦予新的ArcGIS Server賬戶對arccgisserver目錄的控制權限。重啟備份的服務,服務能正常啟動和使用。

 

圖 1‑6更改文件權限

PS:請注意ArcGIS for Server的賬戶與ArcGIS for Server的管理賬戶的區別。

1.2 情形二:數據源不同

上面的情形一中,都是默認數據源是相同的。但是在實際的情況下,有可能出現如下情況諸如:

更改了Server中的服務的數據源的連接字符串,如數據庫的用戶名,密碼或者ip發生了變化,導致通過注冊到Server的舊的sde連接字符串沒有辦法訪問新的數據庫。還又如發布服務的時候數據存儲在filegeodatabase中,現在數據存儲轉存到sde中等等。不管怎么樣,就是現在的Server訪問不到發布服務的數據源。

測試說明:

為了單純的測試數據源的不同,該測試中,默認遷移的時候,Server的賬戶和site的存儲位置不變。只改變了連接sde的密碼。

測試步驟:

和上面步驟大致一樣。啟動服務,服務能夠正常啟動,如圖1-7所示:

 

圖 1‑7 服務界面

但是通過rest頁面訪問的時候,出現如下1-8的錯誤:

 

圖 1‑8 錯誤信息

由於Server端服務的正常與否是由msd決定的。為了探究能否直接修改msd中的數據源連接,來修復服務。嘗試更改了msd的后綴,將其更改為zip,而后解壓,可以看到msd包括的內容如圖1-9所示:

 

圖 1‑9 msd的文件結構

其中layers里面包含了服務的圖層的配置和渲染信息,也記錄了連接數據庫的信息。由於數據庫的密碼已經被加密了,沒有辦法直接去更改xml文檔中的密碼。既然msd是由mxd生成,故選擇修復服務器端的mxd文檔,根據修改后的文檔去重新生成msd。

Mxd和msd都位於該arcgisinput目錄的對應的服務里,如:

C:\arcgisserver\directories\ArcGISsystem\arcgisinput\SiteRS\MyMapServiceRS.MapServer\extracted\v101

結果:

使用arcmap或者arcpy修復mxd,然后通過arcpy生成msd,覆蓋現當前的msd,重新啟動服務。服務能夠正常啟動和使用。同理可推,如果是將數據從file遷移到filegeodatabase或者到sde,或者三種互相遷移,同樣可以先通過修復服務器端的mxd,然后再生成msd文件,來修復服務。

1.3 情形三:未注冊data store的情形

上面測試的情形,都是注冊了data store的情況。在實際的情況中,還有未注冊data store的情況。由於不注冊data-store,服務中使用的數據,已經存在在服務目錄的arcgisinput的目錄中以文件(shapefile或者影像)或者filegeodatabase的形式存在。

由於服務的發布是通過msd的形式,只要恢復的Server能夠訪問到對應的msd文件即可。具體的更改和設置參考情形一中的多種情況。

2 多台服務器

在實際的工作中,服務遷移,除了剛才的在同台服務器中遷移外,還有一種情形,就是在多台服務器中之間遷移。

2.1 測試環境

服務器A:ArcGIS for Server10.1+Windows Server2008+Oracle11gR2

服務器B和服務器A的環境一致。

2.2 測試說明

服務器A上安裝了ArcGIS for Server,且具有地圖服務,切片服務,要素服務,gp服務等。需要將這些服務前移到服務器B上,在不需要重新發布服務的情況下,能夠正常使用。

2.3測試步驟

按照單台服務器遷移的多種情況,分別進行了測試。大體如下:

首先在服務器B上,安裝與服務器A中的相同版本的Server,構建站點。將服務器A中備份的文件拷貝到服務B arcgisserver相對應的目錄下。

在多台服務器上的遷移,根據測試的情形不同,出現的現象和單台服務器測試情形完全一樣。

不同的是,如果將服務器A中整個arcgisserver的目錄拷貝到B中,覆蓋B的全部ArcGIS Server目錄的話,B中的站點將會丟失。訪問manager將出現創建站點的頁面,出現這個問題的原因是,arcgisserver中的config-store記錄了機器是否屬於某個site。為了避免去逐個修改config-store中的machine中的機器名,建議只覆蓋config-store中的services和directories目錄。

 

3 結論

根據上面的測試,可以完全在不用重新發布服務的情況下,對已有站點中的服務進行遷移。在遷移的過程中,需要至少對services和directories目錄進行備份。根據遷移前后的情況配置情況,分別進行不同的設置。

最為簡單的遷移模式,遷移前后的Server的用戶名和密碼保持一致,arcgsiserver的物理位置一致,數據的存儲不變,將備份的services目錄和directories目錄覆蓋到對應的目錄下,重新啟動服務即可。

如遷移前后arcgisserver的物理位置發生變化,在上面的基礎上,去config-store的services目錄下,找到服務的配置文件,修改msd的路徑,指向新的路徑。

如數據源發生變化,則需要通過ArcMap或者Arcpy修復服務器端的MXD文檔,然后使用arcpy生成msd,覆蓋舊的msd文件,重啟服務即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM