超級伺服器
# FastWeb 超級伺服器
- 適用平臺: WEB(桌面)
提示
超級伺服器不包含于FastWeb的安裝包中,使用者可前往愛招飛產品網站下載。
FastWeb支援負載均衡,該架構能夠大大提升FastWeb的可用性、穩定性。FastWeb的負載均衡是一種特殊的負載均衡,不是用於伺服器之外,而是用於伺服器內部,在伺服器內部自動管理你的專案。根據需要啟動多個獨立的專案執行緒,以充分利用你豐富的伺服器效能資源。負載均衡由一個獨立的程序和多個執行緒構成,所有的執行緒都運行在一個獨立的程序之內,所有執行緒在同一程序里為外界提供多併發服務。
FastWeb的負載均衡將傳統模式改變為多程序多執行緒模式,該模式下可以為你的專案啟動多個服務程序,所有客戶端的訪問請求將被按照一定機制分配給不同的服務程序。所有的程序都由負載均衡服務統一產生和排程,未啟用負載均衡前是直接訪問你的應用專案,現在是先訪問負載均衡,負載均衡負責將訪問請求分發給不同的應用專案程序,在該技術中,每個專案程序被稱作一個服務節點,負載均衡是主要訪問入口,它會過濾客戶端請求並將客戶請求引導到相應的節點上,如果請求是一個新發起的訪問請求將被按照特定演算法分配至一個節點上。
# 1. 基本概念
- Node:節點
一個基本的節點實際上是一個工作程序,其實它是一個獨立的exe檔案,開發者開發時也不需要為此做任何考慮。
NodeId:節點編號
每個Node都有一個獨立的節點編號。節點編號在建立節點時產生,節點被回收後節點編號會被重複利用。
Transport:傳輸通道
用專有的傳輸通道和分配的節點進行通訊,目前傳輸通道由HTTP實現。
Node Recyling:節點回收機制
伺服器節點將按照預設場景進行回收,如果一個節點將被回收,它的程序將被請求自我停止,當這個請求觸發后,節點就要開始停止自己正在服務的客戶端請求會話,然後停止自己的程序。如果節點不響應回收請求,它將被強制停止與回收。
Active Node:活動節點
活動節點是正常運行的節點,可以接收新的服務請求。
Suspended Node:掛起節點
定時巡檢各個節點的運行狀態,失聯的節點將被標記為掛起狀態,如果一個節點連續多次被認為處於掛起狀態將會被伺服器處理掉。
Purged Node:清除狀態的節點
清除狀態節點是指被伺服器從正常狀態節點清單里刪除,並被送往待回收佇列里。清除狀態的節點既不接收新的訪問請求,也不會繼續處理已有的請求,將在下一個回收週期被回收。
Discarded Node:棄用節點
棄用節點是一個已經接收了一些訪問請求並且正在為使用者提供服務的節點,但是它不再接收新的請求,它會將已有的請求處理完畢,但已有請求處理完畢后將會被清除掉。
Persistent Node:0號節點
0號節點是一個特殊的節點,它是爲了保持服務的連續性,它不會被永遠解除安裝,但是,它想其他節點一樣會被偶爾回收,然後馬上由重新載入產生。0號節點的設計目標是至少保證有一個節點在服務狀態。有的應用可能是一個後臺服務,後臺服務不需要客戶端請求,沒有客戶端請求就不會被分配一個新節點,因此設計0號節點是爲了至少保證有個節點能夠運行後臺服務。
# 2. 功能特性
# 2.1. 穩定能力
負載均衡是一個提升FastWeb程式穩定性的技術,傳統程式僅依賴自己本身唯一的程序為所有請求提供服務,就相當於把所有雞蛋放在同一個籃子里一樣,在這個比喻中session就是雞蛋,程式就是籃子,在這種模式下有很多缺點,最嚴重的問題就是一旦程式出現問題所有的請求都會被終止。這在特定情況下可能會產生更嚴重的故障。
爲了解決該問題,負載均衡應運而生。它主要有兩個機制,一個是負載均衡,另一個是節點回收,負載均衡主要實現節點之間的負載分配,節點回收主要實現節點資源定期釋放和重建,它的主要作用是保證FastWeb在運行中不會因為停止運行而導致伺服器運行故障。
# 2.2. 服務能力
WEB應用客戶最關心的就是最大服務能力與併發服務能力,FastWeb的單一程式的併發能力也能達到數千個,只要你的伺服器資源足夠強大而且伺服器絕對穩定,併發數量並無上限,但是如果一個程序同時服務太多請求也會可能導致其他問題。通過負載均衡在伺服器內部建立和管理多節點,未來他還有可能會被擴充套件到管理多個獨立伺服器的集群。
# 2.3. 遠端發佈
負載均衡可實現遠端不停機更新程式,因此其不僅能提升系統的穩定性和服務能力,它還能提高系統的可用性和連續性。
# 3. 快速體驗
在使用負載均衡之前,請先檢查FastWeb的主目錄中是否存在super_server.cfg
與super_server.exe
,如未下載請先前往愛招飛下載網站進行下載。
接下來修改配置檔案super_server.cfg
,主要修改[hyper_server]
中的如下所示選項。請將 ext_root
,uni_mobile_root
,uni_root
與 uni_packages_root
中的帶方括號的目錄地址修改爲實際目錄的名稱。
[hyper_server]
binary_name=FastWebClient
prompt_login=0
port=8888
ext_root=library\runtime\[ext]\
uni_mobile_root=library\runtime\[unim]\
uni_root=library\runtime\[uni]\
uni_packages_root=library\runtime\[unipack]\
antiflood_per_ip=0
2
3
4
5
6
7
8
9
修改[login-0]
區域的內容如下,開啟管理功能。請修改 {password}
為管理員密碼。
[login-0]
user_name=admin
password={password}
admin=1
2
3
4
FastWeb目錄中使用滑鼠左鍵雙擊super_server.exe
以負載均衡模式開啟服務,使用瀏覽器訪問http://localhost:8888 (opens new window)可以進入至FastWeb程式的登錄界面。
如果需要進入至負載均衡控制面板,使用瀏覽器訪問http://localhost:8888/server (opens new window)。輸入上文中設定的管理使用者名稱與密碼,進入至控制檯主界面。
狀態
主頁面顯示的內容如下:
Sessions(會話):目前運行的會話數,
峰值
為運行結果中出現的最大的會話處理數。一般不能超過最大值。Requests(請求):伺服器正在處理的Ajax請求數量,
峰值
為運行結果中出現的最大的Ajax請求數量,該數量不應超過設定的最大值。Purged Files/Folders(清除檔案/資料夾):不再屬於活動會話的目錄和檔案數(還沒有清除)。
Bytes(位元組):伺服器運行生命週期內已發送、已接收的位元組數,以及數據量的壓縮比。
Uptime(運行時間):伺服器已經運行了多久。如果運行時間較長的話建議及時進行維護操作,一般1個月需要進行一次。
點選切換至資源
選項卡,其中的內容說明如下:
Memory(Internal) 記憶體(內部):這個參數需要高度關注,尤其是在32位操作系統之下,按照理論32位應用程式最多隻能使用2G記憶體,但是實際上如果其使用量達到1.0GB-1.1GB時就意味著系統存在危險,此時可能會出現「Out of Memory 記憶體不足」的錯誤提示。
Memory(Process) 記憶體(程序):程式整體使用的記憶體量(包括所依賴的其他DLL等)。按照理論32位應用程式最多隻能使用2G記憶體,但是實際上如果其使用量達到1.0GB-1.1GB時就意味著系統存在危險,此時可能會出現「Out of Memory 記憶體不足」的錯誤提示。
CPU Load CPU負載(系統):正在使用的CPU情況,包含多核CPU。對於CPU負載空閑狀態下不超過1%,在高負載下不能長時間維持在100%,否則就可能會對網站的訪問產生影響。
GDI Objects GDI對像:GDI對象是有限的系統資源,對於空閑的應用系統來說該參數不應該多於100。
USER Objects 使用者對像:使用者對象的資源。通常會略微低於GDI對象。
Handles 處理:處理的資源指標。
Connections(Pooled) 連線數(池):連線池的數據指標。
在控制檯界面,點選[HyperServer]
選項卡進入至對應的界面,能夠觀察HyperServer節點和各種其他資訊。
HyperServer的節點選項中的欄位說明如下:
- 節點編號:建立的節點的編號,從0開始。
- 狀態:節點的當前的狀態,
Active
表示節點處於活動狀態,Purged
表示節點處於停止狀態。 - 活動時間:節點的活動時間。
- 閑置時長:節點的閑置狀態的所用時長。
- 會話(峰值):會話的數量,括號中的數量表示為峰值會話。
- 程序編號:節點程序的對應編號。
- 名稱:程序對應的可執行檔名稱。
- 版本:可執行檔案的版本編號。
- 日期/時間:可執行檔案的版本編號。
- UniGUI版本/Extjs版本:可執行檔案的對應使用的庫版本。
- 記憶體/處理(峰值):處理的記憶體大小。
- 動作:可執行的動作,包含會話查詢以及節點回收的選項。
在這個界面上,還可以測試遠端部署功能。該功能適用於新版本發佈時進行更新操作。
- 在HyperServer控制面板中,選擇
上傳
圖示。 - 選擇新發布的程式(FastWebClient),然後點選
上傳
按鈕。 - 完成上傳並確定。此時所有現有節點都將標記為Discarded。
- 在瀏覽器中啟動新會話,將看到應用程式的新版本,而舊版本的應用程式仍將繼續在其他瀏覽器界面中運行。您已使用HyperServer的遠端部署功能成功更新了應用程式。
伺服器節點選項屬於集群專用的管理界面,請參閱集群。
# 4. 參數配置
負載均衡的相關配置可在hyperserver.cfg
中進行修改,配置檔案中包含眾多參數,大多數都可以保留預設值。
[transport]
## 該參數是最大傳輸控制代碼池,最大控制代碼數不能超過這個數,預設為0,系統自動分配。
pool_size=0
## 該參數是內部節點間特殊命令通訊執行超過時間,預設為20000毫秒
command_timeout=20000
## 該參數是等待節點完成任務的超時時間,AjaxTimeout超時時間必須比request_timeout大一些,預設是300秒。
request_timeout=300000
## 伺服器與節點建立連線的超時時間。
connect_timeout=20000
[http_transport]
## 該參數是負載均衡與其節點之間進行的HTTP通訊的開始埠,系統會自動選擇一個,每個節點都要佔用一個獨立的埠與負載均衡進行通訊。
## 埠號將在操作系統允許的範圍內分配,操作系統的1024-19151都是可以用的埠。會根據負載的的節點數來分配。每個節點會被分配一個埠。
start_port=16384
[hyper_server]
## 該參數為可執行檔案的名稱。可不帶檔名後綴
binary_name=FastWebClient
## 初始建立的節點數,專案一啟動就建立相應數目的節點,當節點數低於這個值時就重新建立,以保證最低服務能力
initial_nodes=2
## 最大節點數,其實生產中最大的節點數可能會超過這個數值,因為每個被清除和棄用的節點都需要等待內部已有功能執行完畢或等待回收后才會釋放。
## 正常來講一個系統的最大節點數不會超過該參數的二倍。
max_nodes=8
## 該參數是負載均衡可以提高的最大併發會話數,代表著系統最大的處理能力。預設值為0,表示無限制。
## 如果該參數有設定,每個節點的最大處理能力=max_sessions/max_nodes
max_sessions=0
## 該參數暫時無效果。
sessions_per_nodes=0
## 該參數是控制檯的登錄提示開關,設為1表示為需要使用者名稱和密碼才允許訪問,設為0表示不用登錄就可以直接訪問。
## 系統支援設定十個授權訪問使用者,每個使用者的使用者名稱和密碼以及是否擁有管理員許可權都要獨立配置。
prompt_login=1
## 該參數用於配置是否需要配置永續性的0號節點。
persistent_node_zero=0
## 該參數用於配置應用埠,該埠為UG.ini中指定的伺服器埠
port=8888
## 以下幾項參數為js庫的目錄,這幾項內容通常位於主目錄的library目錄下,因此一般按照以下方式去設定,如果庫目錄有修改則需要重新填寫目錄進行指定
url_path=
url_referer=
ext_root=library\runtime\[ext]\
uni_mobile_root=library\runtime\[unim]\
uni_root=library\runtime\[uni]\
uni_packages_root=library\runtime\[unipack]\
## 該參數用於配置負載均衡的最大併發處理能力,高出這個參數的訪問請求將會被排隊等候處理。
max_requests=500
## 該參數用於控制同一IP訪問來源的訪問間隔時間,小於這個時間間隔的訪問請求將被拋出異常,到達不了業務處理節點。
## 一般情況下,如果設定這個參數,取值250-1000比較合理,如果取值250,則表示同一地址每秒只能訪問四次。
## 需要說明的是如果一個網路內的多臺電腦對映成同一個IP地去訪問一個外部應用,那麼參數設定時就需要考慮實際的電腦數量。
## 在壓力測試時該參數需保持預設設定為0。
antiflood_per_ip=0
server_title=
server_build=1.90.0.1560
dont_create_backup=0
allow_remote_config=1
# 管理認證的選項,此項用於集群中,用於為主伺服器訪問從伺服器的控制面板選項提供免驗證登錄功能。
token=nhxkal211108232020913
[node_recycling]
enabled=1
recycle_after_secs=3600
recycle_after_sessions=0
recycle_after_idle_secs=300
recycle_when_empty=1
[login-0]
## 使用者0的使用者名稱
user_name=admin
## 使用者0的密碼
password=admin
## 使用者0是否具有管理許可權,為1時表示開啟管理員許可權
admin=0
[login-1]
user_name=
password=
admin=0
[login-2]
user_name=
password=
admin=0
[login-3]
user_name=
password=
admin=0
[login-4]
user_name=
password=
admin=0
[login-5]
user_name=
password=
admin=0
[login-6]
user_name=
password=
admin=0
[login-7]
user_name=
password=
admin=0
[login-8]
user_name=
password=
admin=0
[login-9]
user_name=
password=
admin=0
[custom_mimes]
## 未來確保伺服器安全,很多檔案型別不允許從伺服器下載,只有少有的的幾種檔案型別被允許。
## 如果想增加一種檔案型別,就需要配置這個屬性,這個屬性可以根據需要增加,不限制數量。
mime_0_ext=
mime_0_type=
mime_1_ext=
mime_1_type=
mime_2_ext=
mime_2_type=
mime_3_ext=
mime_3_type=
mime_4_ext=
mime_4_type=
## 比如需要允許下載副檔名為7z的檔案型別,則配置如下:
## mine_0_ext=7z
## mine_0_type=application/x-7z-compressed
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
# 5. 網路調優
正常情況下不需要做網路調優,但是如果你的伺服器同時還運行其他動態使用TCP埠的應用,爲了保證負載均衡能夠正常使用動態埠通訊,就需要做一些網路的配置。
- 增加動態埠
netsh init <ipv4|ipv6> set dynamicport <tcp|udp> start=number num=range
命令如下:
netsh init ipv4 set dynamicport tcp start=32768 num=32767
查詢結果:
netsh init ipv4 show dynamicport tcp
# 6. 遠端部署
負載均衡支援遠端更新版本,訪問http://localhost:8888/server (opens new window)打開伺服器監控,登錄後進入監控界面,在管理界面中,點選「小云」圖示,即可打開新版本選擇和上傳界面,上傳成功后,已有任務將由舊版本繼續完成服務,新的請求就由新版本提供服務。
# 7. SSL支援
使用獨立部署方式需要單獨設定SSL。使用SSL前需要設定super_server.ssl.cfg
。
object TUniHyperSSL
SSL.Enabled = False //是否啟用SSL,如果需啟用則設定為True
SSL.SSLOptions.RootCertFile = 'root.pem' //CA證書的名稱
SSL.SSLOptions.CertFile = 'cert.pem' //cert證書名稱
SSL.SSLOptions.KeyFile = 'key.pem' //key私鑰證書名稱
SSL.SSLOptions.Method = sslvSSLv23 //SSL選項
SSL.SSLOptions.SSLVersions = [sslvTLSv1_1, sslvTLSv1_2]//SSL版本
SSL.SSLOptions.Mode = sslmUnassigned //SSL模式
SSL.SSLOptions.VerifyMode = [] //SSL驗證模式
SSL.SSLOptions.VerifyDepth = 0 //SSL驗證深度
SSL.SSLPort = 0 //SSL埠,在SSL啟用的狀態下此項需設定為其他的數值,比如443等常用的SSL埠。
end
2
3
4
5
6
7
8
9
10
11
12
啟動super_server.exe
,之後可使用SSL訪問網頁服務,使用瀏覽器打開https://localhost (opens new window)即可訪問使用SSL的網頁服務。
# 8. 會話監控
通過負載均衡控制面板,您可以監控每個節點的會話,它還允許遠端終止屬於某個節點的部分或全部會話。
HyperServer選項卡的節點選項中,在動作
列點選最右側的按鈕打開新的視窗,該視窗會顯示該節點下的所有會話的資訊。
視窗中顯示的欄位內容說明如下:
- 會話編號:正在連線的會話的編號。
- IP地址:連線的客戶端的IP地址。
- 活動時長:連線處於活動狀態的時長。
- 閑置時長:連線處於閑置狀態的時長。
- 使用者字串:使用者連線的字串。用於標識會話連線。
- 上次事件:上次成功觸發的事件資訊。
- 事件資源:觸發事件的資源名稱。
- 動作:列出可執行的操作,如回收節點。
如需要回收某個特定會話,點選該會話右側動作
欄位中的回收按鈕結束該會話。
如需要回收節點下所有的會話,點選會話對話方塊頂部的回收按鈕結束節點下所有的會話。
# 9. 注意事項
負載均衡是一種多程序模型,應用程式是多個節點同時在運行。
# 9.1. 快取資料夾與日誌檔案
每個節點將建立自己的專用全域性和專用快取資料夾。 每個節點還將建立一個私有日誌檔案,該檔案將對該節點可見。
# 9.2. 會話
負載均衡模型與經典模型的另一個重要區別是,在經典模型中,應用程式能夠訪問所有可用的會話對象,而在SuperServer中,每個節點只能訪問由該特定節點建立的會話。 每個節點都擁有與其他節點隔離的一組會話。 如果需要查詢所有會話,則需要使用其他方法,例如將會話資訊儲存在資料庫表中。 可以在建立會話時在數據表中建立一行,並在釋放會話時將其刪除。
# 9.3. 其他特殊目錄
儘管節點具有自己的專用快取資料夾,但它們共用FilesFolder
和TempFolder
的路徑。 由於這些資料夾用作只讀資料夾,因此它對於節點不會造成問題。 因此,通常只應在Cache資料夾中建立檔案和資料夾,並且應將FilesFolder
和TempFolder
用作只讀資料夾。
# 9.4. 抗病毒和其他保護軟體
某些防護軟體(例如防病毒軟體)可以攔截HTTP通訊並嘗試對其進行過濾。 它可能會干擾在節點和SuperServer
之間進行通訊的HTTP傳輸通道。 目前不建議在生產伺服器上安裝這種型別的保護軟體。 即使您想要保護軟體,也請嘗試使用專門為伺服器操作系統設計的保護軟體。
# 9.5. 防火墻
由於SuperServer內部依賴於HTTP通訊,因此確保節點和SuperServer都不會被防火墻阻止非常重要。
# 9.6. 不宜使用負載均衡的情形
[系統工具]
-[模組列表(APP)]
的界面中,在使用SuperServer的情況下選擇APP模組進入模組設計界面時會出現報錯的情況。如需要設計APP下的模組界面,請直接運行FastWebClient而不是在SuperServer中進行設定。
# 10. 集群
集群是另一種提高FastWeb應用程式可擴充套件性以及穩定性的方法。
在上圖中,可以看到典型的伺服器群配置,也可以注意到集群是標準負載均衡器配置的擴充套件。在標準負載均衡器配置中,有一個負載均衡器和許多節點。對於伺服器集群,我們引入了新術語伺服器節點。伺服器節點實際上是一個運行在從模式下的負載均衡器實體。負載均衡伺服器群集群的入口點也是一個負載均衡器實體,它被配置為處於主模式。
# 10.1. 設定伺服器集群
配置和設定伺服器集群非常簡單。假設需要構建一個由三臺伺服器組成的伺服器群。在這種情況下需要設定三個負載均衡實體。其中一個作為主設備,另外兩個將作為從設備運行。處於從屬模式的負載均衡實體也稱為 伺服器節點。所以一般來說,我們有一個主負載均衡實體,它負責處理所有傳入的請求,並將它們中繼到其他構成伺服器群集群的 伺服器節點。
# 10.1.1. 配置主伺服器
爲了將常規負載均衡伺服器轉換為主負載均衡伺服器,需要將一個或多個 伺服器節點 新增到相關的 CFG 檔案中。
以下是將兩個 伺服器節點 配置資訊新增到主負載均衡器的 CFG 檔案的示例:
# 每個 伺服器節點 配置都應該從 CFG 檔案中的一個新部分開始。該部分應以單詞server-開頭,並加上一個唯一編號,例如server-0。
[server-0]
# 確定是否啟用 伺服器節點。啟用后,流量將重定向到此 伺服器節點,否則將被忽略。
enabled=1
# url是這個 伺服器節點 的 HTTP 地址。此 URL 用於執行與此 伺服器節點 的所有通訊。
# 比如
# http://192.168.1.33:8888 帶有物理 IP 地址的 URL
# http://webserver-1:8888 帶有本地伺服器網路名稱的 URL
# http://mycompanydomain.com:8888 帶域名的全域性 URL
url=http://192.168.1.32:8888
# 這是此 伺服器節點 的可選名稱。它可以是運行此 伺服器節點 的計算機名稱或任何其他有助於您更好地識別此 伺服器節點 的名稱。
name=HP-ML150
# 令牌是授權主負載均衡器到伺服器節點s的遠端訪問伺服器控制面板的唯一識別符號。如果沒有此令牌,則每次要訪問 伺服器節點 的控制面板時都需要通過身份驗證。
# 這個令牌是在每個 伺服器節點 的 CFG 檔案中自動產生的。當您第一次運行 伺服器節點 可執行檔案時,此令牌參數將填充一個自動產生的字串,您需要將其複製並貼上到伺服器節點 配置部分的令牌參數中。新增或修改以上參數后需要重啟負載均衡服務。(將來伺服器集群參數將新增到控制面板的配置表單中,因此您無需重新啟動伺服器即可更這些參數)
token=gmvsek210828175924563
[server-1]
enabled=1
url=http://192.168.1.33:8888
name=DELL-7080
token=eftrgj210828180420097
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 10.1.2. 配置從伺服器(伺服器節點)
配置從伺服器與配置一般的負載均衡伺服器無差別,在設定完成後需要注意打開CFG檔案,找到其中的一行帶有token
字樣的參數。
.
.
.
server_title=Slave- 8078
server_build= 1.90.0.1552
dont_create_backup= 0
allow_remote_config= 1
token=gmvsek210828175924563
http_max_pool= 1000
max_connections= 1000
.
.
.
2
3
4
5
6
7
8
9
10
11
12
13
將此串字元複製並貼上至主伺服器的cfg檔案中。
[server-0]
enabled=1
url=http://192.168.1.16:8888
name=DELL-7080
token=gmvsek210828175924563
2
3
4
5
# 10.1.3. 測試伺服器集群
設定完所有內容后,準備測試伺服器集群。首先運行您的從機伺服器實體,然後運行您的主伺服器的負載均衡實體。
使用以下 URL 打開主伺服器實體的伺服器控制面板:
可以注意到HyperServer
下有一個伺服器節點
的新頁面,在此頁面下,您可以看到在CFG檔案中配置的伺服器節點列表,如果有按照上述的方式正確配置並運行,則可以在目前界面中看到節點處於Online
狀態。
在此界面中可以訪問從站的控制面板,在伺服器節點
的面板中,點選動作
下的搜索圖示,單擊此圖示將打開一個新的頁面,標題為此伺服器的名稱。此頁面顯示的是從機服務端的控制面板,可在此頁面中監控活動或者管理節點、會話或配置。
# 10.1.4. 在伺服器集群中運行應用程式會話
運行應用程式的方法與普通的負載均衡設定的方式相同,只需要訪問根伺服器的URL地址,此應用程式就會顯示在瀏覽器的選項卡中。
檢查控制檯界面可以發現實體的節點ID為1024開始,在集群中,伺服器的節點ID會被賦予從1024開始的ID。
主伺服器的負載均衡有兩種設定方式。在之前的設定中,主伺服器節點與從機的節點均可以接收處理應用會話,如果希望僅將主伺服器作為從機的負載均衡伺服器而不處理應用會話的話,則需要修改主伺服器節點的負載均衡設定CFG檔案。將其max_nodes
的參數設定為0
。即max_nodes=0
,經過這樣的設定之後,主機節點將不再建立本地節點,傳入的所有連線請求都會被轉發至從機。
# 10.2. 流量分配的計算方式
在負載均衡集群中,流量的分配是由負載均衡器自動分配的,使用者只需要對其進行細微的調整就可以確保集群中的每臺伺服器都能獲得平衡的負載。每個伺服器節點能夠處理的節點數量,是由對應伺服器的負載均衡器配置CFG檔案中的max_nodes
參數決定的。
假設有4臺從機伺服器節點,節點編號為0-3,其max_nodes
參數分別為24
、24
、32
、64
。主伺服器節點的max_nodes
參數設定為0
,即僅作為流量分發使用。
基於上述配置,前兩個從機伺服器的節點0與1將接收17%的流量。其計算方式如下:
24 / ( 24 + 24 + 32 + 64 ) = 0.166 ~ 0.17
同理,伺服器2將收到22%的流量,伺服器3將收到44%的流量。所以,使用者在配置每個伺服器節點的max_nodes
參數時需根據伺服器規格、記憶體等資訊來確定。
# 10.3. 集群同步
在集群環境中,如果要訪問置於FastWeb目錄下的靜態資源,請注意將其置於主機的目錄下,置於從機伺服器中的靜態資源不會被FastWeb訪問。
FastWeb由於其工作的特性,會話工作時相關的內容是建立在從機伺服器節點中的,而客戶端訪問均通過主機節點來進行。在遇到比如檔案上傳的情況下,上傳的檔案仍儲存在從機節點中,無法通過URL的方式來訪問這些上傳的檔案。故在此推薦一套解決的方案,即數據分離模式的集群同步。
這套方案的要求是要設立一個專門用於儲存檔案的網路伺服器,並開啟SAMBA網路共享服務,將FastWeb運行環境所需的靜態資原始檔與同步目錄置於此處,按照上述的設定集群的方式分別設定主機伺服器與從機伺服器。在各伺服器上分別掛載此網路伺服器中的共享盤,將本機的環境目錄指向遠端的網路共享目錄。運行配置完成後就可以在瀏覽器中使用此地址正常訪問應用會話。
掛載共享盤的方式在系統中被成為對映網路驅動器
,操作方式如下。
- 從工作列或開始功能表中打開「檔案資源管理器」,或者按Windows 徽標鍵 + E。
- 從左側窗格中選擇「這臺電腦」。 然後,在計算機選項卡上,選擇「對映網路驅動器」。
- 在驅動器列表中,選擇驅動器號。 (任何可用驅動器號均可。)
- 在「資料夾」框中,鍵入資料夾或計算機的路徑,或者選擇「瀏覽」以查詢資料夾或計算機。 若要在每次登錄到電腦時都進行連線,請選中「登錄時重新連線」覈取方塊。
- 選擇「完成」。
以下假設對映的網路驅動器符號為Z
。 FastWeb安裝的目錄為 D:\Program Files\IsoFace\FastWeb
。找到FastWeb目錄下,依次刪除 custom
、files
、library
、resources
、uploadfolder
、temp
、frame
資料夾。
打開命令提示符界面,分別執行以下命令,依次建立符號鏈接:
mklink /d "D:\Program Files\IsoFace\FastWeb\custom" "Z:\custom"
mklink /d "D:\Program Files\IsoFace\FastWeb\files" "Z:\files"
mklink /d "D:\Program Files\IsoFace\FastWeb\library" "Z:\library"
mklink /d "D:\Program Files\IsoFace\FastWeb\resources" "Z:\resources"
mklink /d "D:\Program Files\IsoFace\FastWeb\uploadfolder" "Z:\uploadfolder"
mklink /d "D:\Program Files\IsoFace\FastWeb\temp" "Z:\temp"
mklink /d "D:\Program Files\IsoFace\FastWeb\frame" "Z:\frame"
2
3
4
5
6
7
通過上述方式,可將靜態資源引用的目錄指向集群主機所在的目錄,連線至任意會話進行的檔案操作均可同步至集群主機。
如果在重啟時網路驅動器沒有自動連線,可使用以下命令作為批處理語句,請修改對映網路驅動器的地址為您實際服務部署的地址,在開機后自動運行此批處理語句,以實現自動執行連線。
ping 127.0.0.1 -n 30
net use Z: \\192.168.0.166\FastWeb
2
# 11. 已知問題
- 超級伺服器模式下App模組設計界面進入時報錯
Access violation at address 0000000004617953 in module 'rtl260.bpl'. Read of address FFFFFFFFFFFFFF40.
,建議使用獨立伺服器訪問FastWeb的App模組設計界面。