2017-09-20 79 views
1

我試圖使用ModCluster來負載平衡某些服務器。我們有一個EAR需要通過不同的DNS進行負載平衡。如何配置相同的上下文應用程序以通過ModCluster和Wildfly10使用不同的計算機

我們有這種情況。我們需要保持相同的情況下 '系統1'因爲向後兼容的

  • 4臺服務器的urla.com.br/system1/
  • 2服務器進行urlb.com.br/system1/

在域模式下使用Wildfly 10.1.0時,它們被兩個服務器組分隔開:URLAURLB。他們共享相同的配置文件(URL-HA)和套接字綁定(URL-HA-SOCKET)。

我有一個Apache與mod_cluster與最小配置。

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/的機器,反之亦然。我能找到這樣做(我沒有測試過...)

的唯一方法是爲每個服務器組配置文件,這樣我就可以配置不同的負載均衡組:

簡介> URLA-HA/URLB-HA>子系統> ModCluster。

但是在這種情況下,我們複製了配置文件(DataSources,Queues,MailSession等)中存在的所有配置。這是很難維持的。

那麼,我們有什麼選擇呢?謝謝!

回答

1

我只使用一個Wildfly的配置文件找到了我的問題的解決方案。

爲此,我使用了兩個平衡器並使用ProxyPass來使用特定的平衡器。


Wildfly:在域控制器上的控制檯管理URL,請訪問:

配置:配置配置:URL-HA子系統:ModCluster

在廣告標籤,更改平衡器值:

${projectcluster.modcluster.balancer:mybalancer} 

添加系統屬性這兩個服務器組

運行 - >服務器組 - >烏拉 - >查看

在系統屬性選項卡,添加:

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' 

在此之後,重新啓動服務器組烏拉和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將發送到第二個平衡器

就是這樣。

相關問題