【发布时间】:2016-01-22 15:38:12
【问题描述】:
有没有办法在不同的服务器之间分配服务请求? ideia 是由 wso2 esb 控制的 web 服务的高可用性。我将在不止一个服务器(jboss)中部署相同的服务,我打算用 wso2 处理这个问题。 在创建自定义代理时,选项“固定服务器”可以做到这一点吗?
【问题讨论】:
有没有办法在不同的服务器之间分配服务请求? ideia 是由 wso2 esb 控制的 web 服务的高可用性。我将在不止一个服务器(jboss)中部署相同的服务,我打算用 wso2 处理这个问题。 在创建自定义代理时,选项“固定服务器”可以做到这一点吗?
【问题讨论】:
“固定服务器”属性控制多个服务器中的代理服务部署。有时我们需要使用一个 CAPP 文件在多个服务器中部署工件,但可能需要在选定服务器中部署代理服务工件。所以在这种情况下可以使用“固定服务器”属性。
您可以提供一个 Synapse 服务器名称列表,该代理服务应使用 pinnedServers 属性部署在其中。它采用以逗号或空格字符分隔的服务器名称。如果没有固定服务器列表,则代理服务将在所有服务器实例中启动。
如果给定一个固定的服务器名称列表,它只会在给定的命名 Synapse 服务器实例中启动。
对于您的问题“有没有办法在不同的服务器之间分配服务请求?”
您可以使用带有负载均衡器(如 nginex、httpd)的集群设置来实现此目的。
【讨论】:
如果您需要使用固定服务器选项,您可以在代理中添加一个名为 pinnedServers 属性的属性,如下所示
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="myproxy"
transports="https,http"
pinnedServers="server1"
statistics="disable"
trace="disable"
startOnLoad="true">
<target>
<outSequence>
<send/>
</outSequence>
<endpoint>
<address uri="http://www.google.com"/>
</endpoint>
</target>
<description/>
</proxy>
这里的“server1”是突触服务器名称,应该使用 pinnedServers 属性部署此代理服务。 接下来,您需要根据上述代理在axis2.xml中添加突触服务器实例名称,如下所示
<parameter name="SynapseConfig.ServerName" locked="false">server1</parameter>
您需要重新启动 ESB 才能从 pinnedServers 属性中获得效果。
然后您需要在执行启动脚本 wso2server.bat 或 wso2server.sh 时通过指定 -DSynapseServerName= 属性为 Synapse 服务器实例指定名称
在代理中设置pinnedServers属性请参考[1]。
【讨论】: