Red Hat JBoss 엔터프라이즈 애플리케이션 플랫폼 (EAP)
NIO HTTP Connector
를 사용해야 합니다. 구현은 서버 엔드 포인트에 대한 완전한 종속성 주입 지원을 제공하지만 클라이언트 엔드 포인트에 대한 CDI 서비스를 제공하지 않습니다. CDI 지원은 EE6플랫폼에 필요한 것으로 제한 되며, 결과적으로 엔드 포인트에 대한 인터셉터와 같은 EE7 기능은 지원되지 않습니다. JBoss EAP 6.4.0 릴리스 노트 - 섹션 §2.1을 참조하십시오.
httpd 2.4.37 SP8+
이상버전 에서만 가능합니다. 참조: https://access.redhat.com/solutions/3294391
mod_cluster
설정에 아래와 같이 추가합니다.
EnableWsTunnel WSUpgradeHeader websocket
그외의 이전버전에서는 웹 소켓은 mod_cluster
사용시 지원되지 않습니다.
관련링크 : https://issues.redhat.com/browse/MODCLUSTER-438
웹 소켓에 대한 프록 싱을 처리하는 Apache mod_proxy_wstunnel
호출 모듈이 있습니다. 이 모듈은 현재 JBoss Web Server 3.0 Apache HTTPD 이상에서 사용할 수 있습니다. 구성 예는 다음과 같습니다.
1) httpd.conf에서 다음 행의 주석 처리를 제거하십시오.
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
2) 단일 노드로 프록 싱하려면 다음을 사용하여 $HTTPD_HOME/conf.d/mod_proxy_wstunnel.conf
파일을 새로 만듭니다.
<VirtualHost *:80> ServerAdmin webmaster@localhost ServerName localhost ServerAlias localhost RewriteEngine On RewriteCond %{HTTP:Connection} upgrade [NC] RewriteCond %{HTTP:Upgrade} websocket [NC] RewriteRule /app(.*) ws://localhost:8080/app$1 [P,L] ProxyPass /app http://localhost:8080/app ProxyPassReverse /app http://localhost:8080/app <Proxy *> Order deny,allow Allow from all </Proxy> </VirtualHost>
3) 밸런서를 사용하려면 $HTTPD_HOME/conf.d/mod_proxy_wstunnel.conf
파일을 새로 만듭니다.
<VirtualHost *:80> ServerAdmin webmaster@localhost ServerName localhost ServerAlias localhost <Proxy balancer://wscluster> BalancerMember ws://127.0.0.1:8080 route=node1 BalancerMember ws://127.0.0.1:8180 route=node2 ProxySet stickysession=JSESSIONID|jsessionid </Proxy> <Proxy balancer://httpcluster> BalancerMember http://127.0.0.1:8080 route=node1 BalancerMember http://127.0.0.1:8180 route=node2 ProxySet stickysession=JSESSIONID|jsessionid </Proxy> RewriteEngine On RewriteCond %{HTTP:Connection} upgrade [NC] RewriteCond %{HTTP:Upgrade} websocket [NC] RewriteRule /app(.*) balancer://wscluster/jboss-websocket-hello$1 [P,L] ProxyPass /app balancer://httpcluster/app ProxyPassReverse /app balancer://httpcluster/app </VirtualHost>
JBoss CLI에서 아래와 같이 설정 하도록 한다.
[standalone@node11:9999 /] /subsystem=web/connector=http/:write-attribute(name=protocol,value=org.apache.coyote.http11.Http11NioProtocol) { "outcome" => "success", "response-headers" => { "operation-requires-reload" => true, "process-state" => "reload-required" } } [standalone@node11:9999 /] reload