4.2. 套接字绑定
通过套接字绑定和套接字绑定组,您可以定义网络端口及其与 JBoss EAP 配置所需的网络接口的关系。套接字绑定是套接字的命名配置。套接字绑定组是套接字绑定声明的集合,这些声明按照逻辑名称分组。
这允许配置的其他部分根据其逻辑名称引用套接字绑定,而不必在每次使用套接字配置的完整详情。
这些指定配置的声明可以在 standalone.xml
和 domain.xml
配置文件中找到。单机服务器仅包含一个套接字绑定组,而受管域则可包含多个组。您可以为受管域中的每个服务器组创建一个套接字绑定组,或者在多个服务器组之间共享套接字绑定组。
JBoss EAP 默认使用的端口取决于使用的套接字绑定组以及您各个部署的要求。
JBoss EAP 配置的套接字绑定组中可以定义三种类型的套接字绑定:
- 入站套接字绑定
socket-binding
元素用于为 JBoss EAP 服务器配置入站套接字绑定。默认 JBoss EAP 配置提供多个预配置的socket-binding
元素,例如用于 HTTP 和 HTTPS 流量的元素。另一个示例包括在为 JBoss EAP 配置消息传递的广播组小节。此元素的属性可以在 Socket binding 属性 中找到。
- 远程出站套接字绑定
remote-destination-outbound-socket-binding
元素用于为远程到 JBoss EAP 服务器的目的地配置出站套接字绑定。默认 JBoss EAP 配置提供一个示例远程目标套接字绑定,可用于邮件服务器。在为 JBoss EAP 配置消息传递的为远程连接使用集成 Artemis 资源适配器一节中,可找到另一个示例。此元素的属性可在 Socket 绑定属性 表中找到。
- 本地出站套接字绑定
local-destination-outbound-socket-binding
元素用于为属于 JBoss EAP 服务器本地的目的地配置出站套接字绑定。预计通常不会使用这种套接字绑定。此元素的属性可在 Socket 绑定属性 表中找到。
4.2.1. 管理端口
JBoss EAP 7 中整合了管理端口。默认情况下,JBoss EAP 7 将端口 9990
用于本地管理(由管理 CLI 使用)和 HTTP 管理(由基于 Web 的管理控制台使用)。用作 JBoss EAP 6 中的原生管理端口的端口 9999
不再使用,但在需要时仍可启用。
如果为管理控制台启用了 HTTPS,则默认使用端口 9993
。
4.2.2. 默认套接字绑定
JBoss EAP 为预定义的五个配置集(default, ha, full, full-ha, load-balancer)的每一个都提供了一个套接字绑定组。
有关默认套接字绑定的详情,如默认端口和描述,请参阅 默认套接字绑定 部分。
如果您修改了 JBoss EAP 使用的默认网络接口或端口,您还必须记得更改使用修改后的接口或端口的任何脚本。其中包括 JBoss EAP 服务脚本,以及记得在访问管理控制台或管理控制台或 CLI 时指定正确的接口和端口。
独立服务器
作为单机服务器运行时,每个配置文件仅定义一个套接字绑定组。每个独立配置文件(standalone.xml
、standalone-ha.xml
、standalone-full.xml
、standalone-full-ha.xml
、standalone-load-balancer.xml
)定义其对应配置集所使用的技术的套接字绑定。
例如,默认的单机配置文件(standalone.xml
)指定以下套接字绑定:
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}"> <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/> <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9993}"/> <socket-binding name="ajp" port="${jboss.ajp.port:8009}"/> <socket-binding name="http" port="${jboss.http.port:8080}"/> <socket-binding name="https" port="${jboss.https.port:8443}"/> <socket-binding name="txn-recovery-environment" port="4712"/> <socket-binding name="txn-status-manager" port="4713"/> <outbound-socket-binding name="mail-smtp"> <remote-destination host="localhost" port="25"/> </outbound-socket-binding> </socket-binding-group>
受管域
在受管域中运行时,所有套接字绑定组都在 domain.xml
文件中定义。有五个预定义的套接字绑定组:
-
standard-sockets
-
ha-sockets
-
full-sockets
-
full-ha-sockets
-
load-balancer-sockets
每个套接字绑定组都指定其对应配置集所使用的技术套接字绑定。例如,full-ha-sockets
套接字绑定组定义几个 jgroups
套接字绑定,供 full-ha 配置文件用于高可用性。
<socket-binding-groups> <socket-binding-group name="standard-sockets" default-interface="public"> <!-- Needed for server groups using the 'default' profile --> <socket-binding name="ajp" port="${jboss.ajp.port:8009}"/> <socket-binding name="http" port="${jboss.http.port:8080}"/> <socket-binding name="https" port="${jboss.https.port:8443}"/> <socket-binding name="txn-recovery-environment" port="4712"/> <socket-binding name="txn-status-manager" port="4713"/> <outbound-socket-binding name="mail-smtp"> <remote-destination host="localhost" port="25"/> </outbound-socket-binding> </socket-binding-group> <socket-binding-group name="ha-sockets" default-interface="public"> <!-- Needed for server groups using the 'ha' profile --> ... </socket-binding-group> <socket-binding-group name="full-sockets" default-interface="public"> <!-- Needed for server groups using the 'full' profile --> ... </socket-binding-group> <socket-binding-group name="full-ha-sockets" default-interface="public"> <!-- Needed for server groups using the 'full-ha' profile --> <socket-binding name="ajp" port="${jboss.ajp.port:8009}"/> <socket-binding name="http" port="${jboss.http.port:8080}"/> <socket-binding name="https" port="${jboss.https.port:8443}"/> <socket-binding name="iiop" interface="unsecure" port="3528"/> <socket-binding name="iiop-ssl" interface="unsecure" port="3529"/> <socket-binding name="jgroups-mping" interface="private" port="0" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45700"/> <socket-binding name="jgroups-tcp" interface="private" port="7600"/> <socket-binding name="jgroups-udp" interface="private" port="55200" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45688"/> <socket-binding name="modcluster" port="0" multicast-address="224.0.1.105" multicast-port="23364"/> <socket-binding name="txn-recovery-environment" port="4712"/> <socket-binding name="txn-status-manager" port="4713"/> <outbound-socket-binding name="mail-smtp"> <remote-destination host="localhost" port="25"/> </outbound-socket-binding> </socket-binding-group> <socket-binding-group name="load-balancer-sockets" default-interface="public"> <!-- Needed for server groups using the 'load-balancer' profile --> ... </socket-binding-group> </socket-binding-groups>
管理接口的套接字配置在域控制器的 host.xml
文件中定义。
4.2.3. 配置套接字绑定
在定义套接字绑定时,您可以配置 port
和 interface
属性,以及多播设置,如 multicast-address
和 multicast-port
。有关所有可用套接字绑定属性的详情,请查看 Socket 绑定属性 部分。
可以使用管理控制台或管理 CLI 配置套接字绑定。下列步骤介绍了添加套接字绑定组、添加套接字绑定和使用管理 CLI 配置套接字绑定设置。
添加新套接字绑定组。请注意,作为单机服务器运行时,无法执行此步骤。
/socket-binding-group=new-sockets:add(default-interface=public)
添加套接字绑定。
/socket-binding-group=new-sockets/socket-binding=new-socket-binding:add(port=1234)
将套接字绑定更改为使用默认接口,由套接字绑定组设置。
/socket-binding-group=new-sockets/socket-binding=new-socket-binding:write-attribute(name=interface,value=unsecure)
以下示例显示了在上述步骤完成后 XML 配置可以如何进行。
<socket-binding-groups> ... <socket-binding-group name="new-sockets" default-interface="public"> <socket-binding name="new-socket-binding" interface="unsecure" port="1234"/> </socket-binding-group> </socket-binding-groups>
4.2.4. 查看服务器的套接字绑定和开放端口
您可以从管理控制台查看服务器的套接字绑定名称和开放端口。当服务器处于以下状态时,可看到该信息:
-
running
-
reload-required
-
restart-required
查看服务器的套接字绑定和开放端口:
- 访问管理控制台并导航到 Runtime。
- 单击服务器,以查看右侧窗格中的套接字绑定名称和打开的端口。
4.2.5. 端口偏移
端口偏移是一个数字偏移值,添加到该服务器的套接字绑定组中指定的所有端口值中。这使得服务器能够继承其套接字绑定组中定义的端口值,并提供偏移以确保它不与同一主机上的任何其他服务器冲突。例如,如果套接字绑定组的 HTTP 端口为 8080
,并且服务器使用端口偏移 100
,则其 HTTP 端口为 8180
。
以下是使用管理 CLI 为受管域中的服务器设置端口偏移 250
的示例。
/host=master/server-config=server-two/:write-attribute(name=socket-binding-port-offset,value=250)
端口偏移可用于受管域中的服务器和在同一主机上运行多个单机服务器。
使用 jboss.socket.binding.port-offset
属性启动单机服务器时,您可以传递端口偏移。
$ EAP_HOME/bin/standalone.sh -Djboss.socket.binding.port-offset=100