목차

JBoss with WebSocket

환경

Red Hat JBoss 엔터프라이즈 애플리케이션 플랫폼 (EAP)

WebSocket 지원 여부

지원하지 않는 버전

MOD_CLUSTER가있는 WEBSOCKET

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

MOD_PROXY_BALANCER가있는 WEBSOCKET

웹 소켓에 대한 프록 싱을 처리하는 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 6.4 HTTP Connector NIO 변경

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

NIO 및 Websocket 설정 관련 참고내용

참조링크

Websocket 지원 버전 확인