天天看點

《水經注地圖服務》橫向擴充部署說明

作者:水經注GIS

在地圖伺服器中,随着資料量的不斷增大,可能會存在原有的儲存設備空間不夠的情況,或無法承受高并發請求的情況。

此時,我們就可以通過橫向擴充部署,增加新的裝置來進行分擔緩減,進而達到動态擴充儲存設備以及動态對高并發請求進行分流的目的。

這裡就來講解一下橫向擴充部署的具體實施方法,并以新增伺服器的作業系統為Linux為例,目的主要是為了解決存儲空間不足的問題。

挂載檔案系統

當存儲空間不足時,首先就需要對原有的資料進行拆分,先将舊的裝置挂載到新的裝置上(反之也可以,隻要能夠實作資料傳輸即可)。

當然,采取移動硬碟直接拷貝也是可以的,但是考慮到資料的大小(至少幾十個TB),采取直接讓兩台機器實作資料傳輸是更好的選擇,具體的操作可以參考下面的指令:

sudo mount -t nfs [NFS伺服器位址]:[共享路徑] [本地挂載點]

sudo 擷取管理者權限

mount 挂載指令

-t nfs 指定挂載裝置類型為遠端NFS伺服器

操作示例:

sudo mount -t nfs  192.168.3.100:vol1  /home/rivermap/288T_vol1           
《水經注地圖服務》橫向擴充部署說明

挂載後的檔案系統

資料拷貝

由于新的伺服器是Linux作業系統,我們通過指令進行拷貝,如果是Windows作業系統,直接拷貝即可。

根據對資料大小的估計,這裡我們将原伺服器上編号4-512的檔案夾拷貝到新的伺服器上,使用-r選項遞歸複制,通過正規表達式(表示需要拷貝的檔案夾名稱),具體的操作參考指令如下:

cp [選項] [資料目錄]{開始..結束} [目标目錄]

​選項:

-r 或 --recursive:遞歸複制目錄及其内容。

-i 或 --interactive:在複制之前進行互動式确認,避免覆寫現有檔案。

-u 或 --update:僅複制比目标檔案更新的源檔案。

-v 或 --verbose:顯示詳細的複制過程。

-p 或 --preserve:保留源檔案的屬性,包括所有者、權限和時間戳。

-f 或 --force:強制複制,覆寫現有的目标檔案。

-n 或 --no-clobber:不要覆寫現有的目标檔案。

-s 或 --symbolic-link:建立符号連結而不是複制實際檔案。

-l 或 --link:建立硬連結而不是複制實際檔案。

--backup:在複制時建立備份檔案。

​通配符操作:

*:比對任意字元序列(包括空字元),例如,*.txt 比對所有以 .txt 結尾的檔案。

?:比對單個字元,例如,file?.txt 比對類似于 file1.txt、fileA.txt 的檔案。

[...]:比對方括号内的任意單個字元,例如,file[123].txt 比對 file1.txt、file2.txt、file3.txt。

[!...] 或 [^...]:比對除方括号内指定字元之外的任意單個字元,例如,file[!12].txt 比對除了 file1.txt 和 file2.txt 之外的檔案。

​操作示例:

cp -r /home/rivermap/288T_vol1/G2120west/West/{4..512} /media/rivermap/96T/West512           
《水經注地圖服務》橫向擴充部署說明

拷貝指令

啟用mod_proxy和mod_proxy_balancer子產品

為了實作服務分流,需要啟用mod_proxy和mod_proxy_balancer這兩個子產品,子產品啟用需修改\Apache24\conf\httpd.conf檔案,删除兩個子產品前面的#,去掉注釋即可。

《水經注地圖服務》橫向擴充部署說明

啟用子產品

啟用虛拟主機

除了開啟子產品之外,還需要啟用虛拟主機配置,同樣的還是去掉注釋的#号即可,如下圖所示。

《水經注地圖服務》橫向擴充部署說明

啟用虛拟主機配置

添加虛拟主機

一個Apache可以監聽多個端口,可以通過虛拟主機監聽指定端口的服務,添加監聽端口方法如下圖所示。

《水經注地圖服務》橫向擴充部署說明

添加監聽端口

打開\Apache24\conf\extra\httpd-vhosts.conf 檔案,添加虛拟主機并分别綁定8085端口和8080端口。

操作示例:

<VirtualHost *:8085>
</VirtualHost>
<VirtualHost *:80>
</VirtualHost>           

添加反向代理服務

上一步完成了虛拟主機的添加,現在為虛拟主機添加反向代理:

<VirtualHost *:8085>
ProxyRequests Off
# 反向代理的配置
ProxyPass 收到的請求位址 轉發的代理伺服器
</VirtualHost>           

ProxyPass 将收到的請求轉發到指定的伺服器上去

ProxyRequests off 開啟反向代理服務 on 開啟代理服務

​操作示例:

<VirtualHost *:8085>
ProxyRequests Off
# 反向代理的配置
Proxy /WeServer/ http://localhost:8080
</VirtualHost>           

​上面的操作表示将8085收到的請求中帶有/WeServer/的url轉發到8080服務上去

添加負載均衡伺服器

添加完反向代理之後,在上一步的基礎上添加一個負載均衡伺服器。

<VirtualHost *:8085>
ProxyRequests Off
<Proxy 負載均衡伺服器名字>
     BalancerMember 後端伺服器成員 負載均衡配置
  ProxySet 負載均衡算法
</Proxy>
ProxyPass 收到的請求位址 轉發的代理伺服器
ProxyPassReverse 收到的請求位址 轉發的代理伺服器
</VirtualHost>           

​Proxy 負載均衡器:

​BalancerMember 負載均衡器的成員(後端伺服器)以及其配置

​ProxySet 負載均衡算法:

​lbmethod=byrequests:按請求數進行負載均衡。根據每個後端伺服器收到的請求數來配置設定請求。

​lbmethod=bytraffic:按流量進行負載均衡。根據每個後端伺服器處理的資料流量來配置設定請求。

​lbmethod=bybusyness:按繁忙程度進行負載均衡。根據每個後端伺服器的目前負載情況來配置設定請求。

​lbmethod=heartbeat:使用心跳檢測進行負載均衡。通過監視後端伺服器的心跳信号來确定其可用性,并根據可用性配置設定請求。

​操作示例:設定一個名為balancer://mycluster/的負載均衡器,将8085上收到的請求轉發到該負載均衡器上,負載均衡器中有兩個服務,請求會按照1:1的轉發到兩個伺服器上。

<VirtualHost *:8085>
ProxyRequests Off
# 反向代理的配置
ProxyPass / balancer://mycluster/  
ProxyPassReverse  / balancer://mycluster/
<Proxy balancer://mycluster>
# 後端伺服器成員的配置
BalancerMember http://backend1.example.com loadfactor=1
BalancerMember http://backend2.example.com loadfactor=1
# 其他負載均衡相關的配置
ProxySet lbmethod=roundrobin
</Proxy>
</VirtualHost>           

添加分流

上一步添加了一個負載均衡伺服器後,再增加一個負載均衡伺服器來分流:

<VirtualHost *:8085>
ProxyRequests Off
<Proxy 負載均衡伺服器1>
     BalancerMember 後端伺服器成員 負載均衡配置
  ProxySet 負載均衡算法
</Proxy>
<Proxy 負載均衡伺服器2>
     BalancerMember 後端伺服器成員 負載均衡配置
  ProxySet 負載均衡算法
</Proxy>
<LocationMatch 正規表達式>
    ProxyPass / 負載均衡伺服器2
    ProxyPassReverse / 負載均衡伺服器2
</LocationMatch>
ProxyPass  / 負載均衡伺服器1
ProxyPassReverse  / 負載均衡伺服器1
</VirtualHost>           

​LocationMatch用于比對請求 URL 路徑,當擷取的請求滿足後面的正則表達的時候,就會啟用他下面的配置,否則就使用下面的預設配置。

​操作示例:

​該虛拟主機上存在兩個服務,分别占用9010端口和9015端口,如果收到的url中帶有wmts就轉發給9010端口的服務,否則就轉發給9015的服務。

<VirtualHost *:8085>
  <Proxy balancer://mycluster2>
    BalancerMember http://127.0.0.1:9010/WeServer/
  </Proxy>
  <Proxy balancer://mycluster>
    BalancerMember http://127.0.0.1:9015/WeServer/
  </Proxy>
<LocationMatch "/wmts/.*">
    ProxyPass / balancer://mycluster2
    ProxyPassReverse / balancer://mycluster2
</LocationMatch>
ProxyPass /balancer://mycluster/
ProxyPassReverse / balancer://mycluster/ 
</VirtualHost>           

結果驗證

打開\Apache24\conf\httpd.conf檔案,啟用log_config_module子產品(去掉注釋的#号),如下圖所示。

《水經注地圖服務》橫向擴充部署說明

啟用log_config_module子產品​

​找到CustomLog "logs/access.log" combined,取消注釋,開放請求資訊日志,如下圖所示。

《水經注地圖服務》橫向擴充部署說明

開放請求資訊日志

CustomLog請求可以設定日志請求資訊顯示格式,也可以使用系統預定義的日志格式

​common:常用的日志格式,包含常見的請求資訊。

​combined:綜合的日志格式,包含更詳細的請求資訊,如來源 IP、請求時間、請求方法、請求 URL 等。

​完成以上步驟後重新開機Apache服務,就可以在\Apache24\logs\access.log中看到該服務收到請求,以此判斷資料分流時評是否正确,如果分流正确但是沒有圖,也可檢查是否是因為分流時字元拼接錯誤。

【推薦閱讀】

1、《2023深圳國際測繪地理資訊産業展覽會》精彩瞬間

2、236TB《水經注全球離線地圖G21.20》震撼釋出!

3、免費分享全國省級與地級行政區劃啦!

6、免費從網盤下載下傳的衛星影像和高程DEM如何使用?

【往期熱文】

7、哪些國家希望中國強大起來

8、為什麼說“四川不滅,中華不亡”

9、全球四個非法擁核國,怎有三個是中國鄰國?

10、建國後,大陸周邊竟消失了三個國家?

繼續閱讀