如何配置相同的上下文应用程序以使用带有 ModCluster 和 Wildfly10 的不同机器
How to configure same context applications to use different machines with ModCluster and Wildfly10
我正在尝试使用 ModCluster 对某些服务器进行负载平衡。我们有一个 EAR 需要由不同的 DNS 进行负载平衡。
我们有这种情况。由于向后兼容
,我们需要保持相同的上下文'system1'
- 4 个服务器 urla.com。br/system1/
- 2 个服务器用于 urlb.com。br/system1/
在域模式下使用 Wildfly 10.1.0,它们由两个服务器组分隔:URLA 和 URLB 。它们共享相同的配置文件 (URL-HA) 和套接字绑定 (URL-HA-SOCKET)。
我有一个 mod_cluster 的 Apache,配置最少。
LoadModule cluster_slotmem_module modules/mod_cluster_slotmem.so
LoadModule manager_module modules/mod_manager.so
LoadModule proxy_cluster_module modules/mod_proxy_cluster.so
LoadModule advertise_module modules/mod_advertise.so
Listen 10.90.0.13:7777
<VirtualHost 10.90.0.13:7777>
<Directory />
Require all granted
</Directory>
<Location />
Order deny,allow
Allow from all
</Location>
ManagerBalancerName mybalancer
ServerAdvertise on
EnableMCPMReceive On
<Location /mod_cluster-manager>
SetHandler mod_cluster-manager
Order deny,allow
Allow from all
</Location>
</VirtualHost>
当我访问 http://10.90.0.13:7777/mod_cluster-manager 时,我看到在上下文 system1/
中注册了 6 个服务器。顺便说一句,他们使用相同的 EAR 文件。
但这对我们来说不是理想的场景。访问urla.com.br/system1/的用户不能使用urlb.com.br/system1/的机器,反之亦然。
我能找到的唯一方法(我还没有测试过...)是为每个服务器组创建一个配置文件,这样我就可以在以下位置配置不同的负载平衡组:
Profile > URLA-HA / URLB-HA > Subsystems > ModCluster.
但在这种情况下,我们复制了配置文件中存在的所有配置(DataSources、Queues、MailSession 等)。这很难维护。
那么,对于我的情况,我们有哪些选择?谢谢!
我仅使用一个 Wildfly 的配置文件就找到了解决问题的方法。
为此,我使用了两个平衡器,并使用ProxyPass来使用特定的平衡器。
Wildfly:在域控制器的控制台管理员 url,转到:
配置:配置文件配置文件:URL-HA 子系统:ModCluster
在“广告”选项卡上,更改平衡器值:
${projectcluster.modcluster.balancer:mybalancer}
将系统属性添加到两个服务器组
运行时 -> 服务器组 -> URLA -> 视图
在“系统属性”选项卡上,添加:
Key 'projectcluster.modcluster.balancer' value 'first'
Key 'jboss.modcluster.multicast.address' value '224.0.2.108'
运行时 -> 服务器组 -> URLB -> 视图
在“系统属性”选项卡上,添加:
Key 'projectcluster.modcluster.balancer' value 'second'
Key 'jboss.modcluster.multicast.address' value '224.0.2.108'
在此之后,重新启动您的服务器组 URLA 和 URLB
阿帕奇
在问题上使用示例 Apache conf:
...
...
ManagerBalancerName mybalancer
ServerAdvertise on
EnableMCPMReceive On
# Defined on Wildfly
AdvertiseGroup 224.0.2.108:23364
<Location /mod_cluster-manager>
SetHandler mod_cluster-manager
Order deny,allow
Allow from all
</Location>
</VirtualHost>
Listen 10.90.0.13:8001
<VirtualHost 10.90.0.13:8001>
ProxyPass / balancer://first stickysession=JSESSIONID|jsessionid nofailover=On
ProxyPassReverse / balancer://first
</VirtualHost>
Listen 10.90.0.13:8002
<VirtualHost 10.90.0.13:8002>
ProxyPass / balancer://second stickysession=JSESSIONID|jsessionid nofailover=On
ProxyPassReverse / balancer://second
</VirtualHost>
10.90.0.13:8001/system1 上的所有请求将发送到 第一个 平衡器,10.90.0.13:8002/system1 上的所有请求将发送到 ]second 平衡器
就是这样。
我正在尝试使用 ModCluster 对某些服务器进行负载平衡。我们有一个 EAR 需要由不同的 DNS 进行负载平衡。
我们有这种情况。由于向后兼容
,我们需要保持相同的上下文'system1'- 4 个服务器 urla.com。br/system1/
- 2 个服务器用于 urlb.com。br/system1/
在域模式下使用 Wildfly 10.1.0,它们由两个服务器组分隔:URLA 和 URLB 。它们共享相同的配置文件 (URL-HA) 和套接字绑定 (URL-HA-SOCKET)。
我有一个 mod_cluster 的 Apache,配置最少。
LoadModule cluster_slotmem_module modules/mod_cluster_slotmem.so
LoadModule manager_module modules/mod_manager.so
LoadModule proxy_cluster_module modules/mod_proxy_cluster.so
LoadModule advertise_module modules/mod_advertise.so
Listen 10.90.0.13:7777
<VirtualHost 10.90.0.13:7777>
<Directory />
Require all granted
</Directory>
<Location />
Order deny,allow
Allow from all
</Location>
ManagerBalancerName mybalancer
ServerAdvertise on
EnableMCPMReceive On
<Location /mod_cluster-manager>
SetHandler mod_cluster-manager
Order deny,allow
Allow from all
</Location>
</VirtualHost>
当我访问 http://10.90.0.13:7777/mod_cluster-manager 时,我看到在上下文 system1/
中注册了 6 个服务器。顺便说一句,他们使用相同的 EAR 文件。
但这对我们来说不是理想的场景。访问urla.com.br/system1/的用户不能使用urlb.com.br/system1/的机器,反之亦然。
我能找到的唯一方法(我还没有测试过...)是为每个服务器组创建一个配置文件,这样我就可以在以下位置配置不同的负载平衡组:
Profile > URLA-HA / URLB-HA > Subsystems > ModCluster.
但在这种情况下,我们复制了配置文件中存在的所有配置(DataSources、Queues、MailSession 等)。这很难维护。
那么,对于我的情况,我们有哪些选择?谢谢!
我仅使用一个 Wildfly 的配置文件就找到了解决问题的方法。
为此,我使用了两个平衡器,并使用ProxyPass来使用特定的平衡器。
Wildfly:在域控制器的控制台管理员 url,转到:
配置:配置文件配置文件:URL-HA 子系统:ModCluster
在“广告”选项卡上,更改平衡器值:
${projectcluster.modcluster.balancer:mybalancer}
将系统属性添加到两个服务器组
运行时 -> 服务器组 -> URLA -> 视图
在“系统属性”选项卡上,添加:
Key 'projectcluster.modcluster.balancer' value 'first'
Key 'jboss.modcluster.multicast.address' value '224.0.2.108'
运行时 -> 服务器组 -> URLB -> 视图
在“系统属性”选项卡上,添加:
Key 'projectcluster.modcluster.balancer' value 'second'
Key 'jboss.modcluster.multicast.address' value '224.0.2.108'
在此之后,重新启动您的服务器组 URLA 和 URLB
阿帕奇 在问题上使用示例 Apache conf:
...
...
ManagerBalancerName mybalancer
ServerAdvertise on
EnableMCPMReceive On
# Defined on Wildfly
AdvertiseGroup 224.0.2.108:23364
<Location /mod_cluster-manager>
SetHandler mod_cluster-manager
Order deny,allow
Allow from all
</Location>
</VirtualHost>
Listen 10.90.0.13:8001
<VirtualHost 10.90.0.13:8001>
ProxyPass / balancer://first stickysession=JSESSIONID|jsessionid nofailover=On
ProxyPassReverse / balancer://first
</VirtualHost>
Listen 10.90.0.13:8002
<VirtualHost 10.90.0.13:8002>
ProxyPass / balancer://second stickysession=JSESSIONID|jsessionid nofailover=On
ProxyPassReverse / balancer://second
</VirtualHost>
10.90.0.13:8001/system1 上的所有请求将发送到 第一个 平衡器,10.90.0.13:8002/system1 上的所有请求将发送到 ]second 平衡器
就是这样。