超级服务器
# 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模块设计界面。