WildFly 17 負載平衡與 mod_cluster 在域模式下沒有 apache
我已經在域模式下成功創建了一個包含 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>
- 編輯-為您的負載均衡器
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>
- 如果您在類似 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/來測試它