在地圖伺服器中,随着資料量的不斷增大,可能會存在原有的儲存設備空間不夠的情況,或無法承受高并發請求的情況。
此時,我們就可以通過橫向擴充部署,增加新的裝置來進行分擔緩減,進而達到動态擴充儲存設備以及動态對高并發請求進行分流的目的。
這裡就來講解一下橫向擴充部署的具體實施方法,并以新增伺服器的作業系統為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、建國後,大陸周邊竟消失了三個國家?