Mod-Cluster

WildFly 17 負載平衡與 mod_cluster 在域模式下沒有 apache

  • March 8, 2022

我已經在域模式下成功創建了一個包含 3 個主機的 WildFly 集群。現在我正在嘗試在中間沒有 apache 或其他伺服器的情況下獲取 mod_cluster 子系統,正如我所看到的那樣,這是可能的,但我還沒有找到任何最近的文件來實現這一點。

我嘗試了幾種方法和配置,但都沒有奏效。應用程序和持久性單元在主伺服器上部署和配置,並由主伺服器複製到從伺服器,並且所有伺服器上都可以訪問上下文。

但是,如果我嘗試在埠 80(負載均衡器)上獲取上下文,我得到的只是 404。此外,對於無上下文請求,它不會顯示“歡迎使用 WildFly”啟動頁面,因此負載均衡器組不是“連接”到主伺服器組及其部署的應用程序。

任何幫助將不勝感激。這是我的拓撲: 圖片

您不需要使用 Apache httpd 進行負載平衡,但您仍然需要使用負載平衡器。您可以啟動一個專用的 Wildfly 伺服器,該伺服器將作為您域中的負載均衡器。load-balancer在預設域配置文件 ( domain.xml) 中呼叫了一個即用型配置文件。

在 HTTP 預設埠 (80) 上添加 WildFly 負載均衡器的步驟:

1)編輯- 在元素中domain.xml填寫預期的埠號:socket-binding-group``load-balancer-sockets

<socket-binding-group name="load-balancer-sockets" default-interface="public">
   <socket-binding name="http" port="80"/>
   <socket-binding name="https" port="443"/>
   <socket-binding name="mcmp-management" interface="private" port="${jboss.mcmp.port:8090}"/>
   <socket-binding name="modcluster" interface="private" multicast-address="${jboss.modcluster.multicast.address:224.0.1.105}" multicast-port="23364"/>
</socket-binding-group>
  1. 編輯-為您的負載均衡器domain.xml添加一個新的。server-group使用load-balancer配置文件和load-balancer-sockets套接字綁定組。例子:
<server-groups>
   <server-group name="main-server-group" profile="ha">
       <socket-binding-group ref="ha-sockets"/>
   </server-group>
   <server-group name="load-balancer-group" profile="load-balancer">
       <socket-binding-group ref="load-balancer-sockets"/>
   </server-group>
</server-groups>

3)編輯host.xml- 添加一個新的伺服器,它將成為負載均衡器 - 即將它添加到新的load-balancer-group

<servers>
   <server name="server-one" group="main-server-group"/>
   <server name="server-two" group="main-server-group" auto-start="true">
       <socket-bindings port-offset="150"/>
   </server>
   <server name="load-balancer" group="load-balancer-group" auto-start="true"/>
</servers>
  1. 如果您在類似 Linux 的系統上使用低於 1024 的埠號,則使用特權系統帳戶執行域(例如,使用sudo):
sudo bin/domain.sh

您現在應該讓您的域(包括負載均衡器)成功執行。

更新1:

故障排除

確保所有綁定介面都已正確發布(例如private負載均衡器上的那個!)

主機控制器:

export MY_IP=192.168.105.1
bin/domain.sh --host-config=host-master.xml -b $MY_IP -bmanagement $MY_IP -bprivate $MY_IP

奴隸:

export MY_IP=192.168.105.2
bin/domain.sh --host-config=host-slave.xml -b $MY_IP -bmanagement $MY_IP -Djboss.domain.master.address=192.168.105.1

如果您將host-master.xml用作負載均衡器的主機配置,請確保已將public介面添加到其中。

<interface name="public">
   <inet-address value="${jboss.bind.address:127.0.0.1}"/>
</interface>

如果您的環境不支持多播(例如雲或 docker 環境),請使案例如靜態 modcluster 發現配置:

bin/jboss-cli.sh <<EOT
embed-host-controller
/socket-binding-group=ha-sockets/remote-destination-outbound-socket-binding=proxy1:add(host=192.168.105.1, port=8090)
/profile=ha/subsystem=modcluster/proxy=default:write-attribute(name=advertise, value=false)
/profile=ha/subsystem=modcluster/proxy=default:list-add(name=proxies, value=proxy1)
EOT

使用簡單的應用程序測試配置<distributable/>。我通常使用一個簡單的請求計數器應用程序。它是一個單一的 JSP,因此很容易直接在 war 文件中檢查它的原始碼:

wget https://github.com/kwart/secured-webapp-template/releases/download/single-jsp-counter-distributable/counter-distributable.war
bin/jboss-cli.sh <<EOT
embed-host-controller
deploy counter-distributable.war --server-groups=main-server-group

然後通過將瀏覽器指向http://192.168.105.1:8080/counter-distributable/http://192.168.105.1/counter-distributable/來測試它

引用自:https://serverfault.com/questions/980850