24.4. JBoss EAP를 프런트 엔드 로드 밸런서 장치로 구성

백엔드 JBoss EAP 서버에 대한 요청을 프록시하는 프런트엔드 로드 밸런서 장치 역할을 하도록 JBoss EAP 및 undertow 하위 시스템을 구성할 수 있습니다. Undertow는 비동기 IO를 사용하므로 연결을 담당하는 IO 스레드는 요청에 관련된 유일한 스레드입니다. 이 스레드는 백엔드 서버에 대한 연결에도 사용됩니다.

다음 프로토콜을 사용할 수 있습니다.

  • HTTP/1 및 HTTP/2 (h2c)를 지원하는 일반 텍스트(http)를 통한 HTTP
  • HTTP/1 및 HTTP/2(h2)를 지원하는 보안 연결(http)을 통한 HTTP
  • AJP(Ajp)

정적 로드 밸런서 를 정의하고 구성에서 백엔드 호스트를 지정하거나 mod_cluster 프론트엔드 를 사용하여 호스트를 동적으로 업데이트할 수 있습니다.

HTTP/2를 사용하도록 Undertow를 구성하는 지침은 HTTP/2 구성을 참조하십시오.

24.4.1. mod_cluster를 사용하여 Undertow를 로드 밸런서로 구성

기본 제공 mod_cluster 프런트 엔드 로드 밸런서 장치를 사용하여 다른 JBoss EAP 인스턴스의 부하를 분산할 수 있습니다.

이 절차에서는 관리형 도메인에서 실행 중이며 다음이 이미 구성되어 있다고 가정합니다.

  • 로드 밸런서 장치 역할을 할 JBoss EAP 서버입니다.

    • 이 서버는 load-balancer- sockets 소켓 바인딩 그룹에 바인딩된 load-balancer 프로필을 사용합니다.

      참고

      load-balancer 프로필은 소켓 바인딩, mod-cluster Undertow 필터를 사용하여 이미 사전 구성되어 있으며 이 서버를 프런트엔드 로드 밸런서로 사용하기 위해 기본 호스트에서 필터에 대한 참조를 사용합니다.

  • 백엔드 서버 역할을 할 두 개의 JBoss EAP 서버.

    • 이러한 서버는 클러스터에서 실행 중이며 ha -sockets 소켓 바인딩 그룹에 바인딩된 ha 프로필을 사용합니다.
  • 백엔드 서버에 부하 분산할 수 있는 배포 가능 애플리케이션.
mod_cluster 프런트 엔드 로드 밸런서 장치 구성

아래는 관리형 도메인의 서버의 부하 분산 단계를 수행하지만 독립 실행형 서버 집합에 적용하도록 조정할 수 있습니다. 사용자 환경에 맞게 관리 CLI 명령 값을 업데이트해야 합니다.

  1. mod_cluster 광고 보안 키를 설정합니다.

    광고 보안 키를 추가하면 검색 중에 로드 밸런서와 서버를 인증할 수 있습니다.

    다음 관리 CLI 명령을 사용하여 mod_cluster 광고 보안 키를 설정합니다.

    /profile=ha/subsystem=modcluster/proxy=default:write-attribute(name=advertise-security-key, value=mypassword)
  2. mod_cluster 로드 밸런서의 보안 키를 업데이트합니다.

    다음 관리 CLI 명령을 사용하여 mod_cluster 필터의 보안 키를 설정합니다.

    /profile=load-balancer/subsystem=undertow/configuration=filter/mod-cluster=load-balancer:write-attribute(name=security-key,value=mypassword)
중요

mod_cluster에서 사용하는 소켓 바인딩 관리 및 알림 소켓 바인딩은 공용 IP 주소가 아닌 내부 네트워크에만 노출되는 것이 좋습니다.

이제 로드 밸런서 장치 JBoss EAP 서버가 두 개의 백엔드 JBoss EAP 서버를 로드 밸런싱할 수 있습니다.

여러 mod_cluster 구성

mod_cluster 하위 시스템은 기본이 아닌 서버를 역방향 프록시로 등록할 수 있는 여러 명명된 프록시 구성을 지원합니다. 또한 단일 애플리케이션 서버 노드가 다양한 프록시 서버 그룹에 등록할 수 있습니다.

다음 예제에서는 ajp-listener, server 및 host를 the undertow 서버에 추가합니다. 또한 광고 메커니즘을 사용하여 호스트를 등록하는 새로운 mod_cluster 구성을 추가합니다.

/socket-binding-group=standard-sockets/socket-binding=ajp-other:add(port=8010)
/subsystem=undertow/server=other-server:add
/subsystem=undertow/server=other-server/ajp-listener=ajp-other:add(socket-binding=ajp-other)
/subsystem=undertow/server=other-server/host=other-host:add(default-web-module=root-other.war)
/subsystem=undertow/server=other-server/host=other-host
/location=other:add(handler=welcome-content)
/subsystem=undertow/server=other-server/host=other-host:write-attribute(name=alias,value=[localhost]))

/socket-binding-group=standard-sockets/socket-binding=modcluster-other:add(multicast-address=224.0.1.106,multicast-port=23364)
/subsystem=modcluster/proxy=other:add(advertise-socket=modcluster-other,balancer=other-balancer,connector=ajp-other)

reload

24.4.2. 로드 밸런서에서 등급이 지정된 세션 유사성 활성화

distributable-web 하위 시스템에서 여러 개의 순서로 지정된 경로와 세션 선호도를 갖도록 로드 밸런서에서 순위 세션 선호도를 활성화해야 합니다. distributable-web 하위 시스템 및 다양한 선호도 옵션에 대한 자세한 내용은 JBoss EAP 개발 가이드에 있는 배포 가능한 웹 세션 구성의 Distributable-web 하위 시스템을 참조하십시오.

노드 경로를 구분하는 기본 구분 기호는 입니다 .. 다른 값을 원하는 경우 선호도 리소스의 구분 기호 특성을 구성할 수 있습니다.

절차

  1. 로드 밸런서에 대해 순위가 지정된 세션 선호도를 활성화합니다.

    /subsystem=undertow/configuration=filter/mod-cluster=load-balancer/affinity=ranked:add
  2. 선택 사항: 유사성 리소스의 구분 기호 특성을 구성합니다.

    /subsystem=undertow/configuration=filter/mod-cluster=load-balancer/affinity=ranked:write-attribute(name=delimiter,value=':')

24.4.3. Undertow를 정적 로드 밸런서로 구성

Undertow를 사용하여 정적 로드 밸런서를 구성하려면 undertow 하위 시스템에서 프록시 핸들러를 구성해야 합니다. Undertow에서 프록시 핸들러를 구성하려면 정적 로드 밸런서 장치 역할을 할 JBoss EAP 인스턴스에서 다음을 수행해야 합니다.

  1. 역방향 프록시 처리기 추가
  2. 각 원격 호스트에 대한 아웃바운드 소켓 바인딩 정의
  3. 각 원격 호스트를 역방향 프록시 핸들러에 추가
  4. 역방향 프록시 위치 추가

다음 예제에서는 JBoss EAP 인스턴스를 정적 로드 밸런서 장치가 되도록 구성하는 방법을 보여줍니다. JBoss EAP 인스턴스는 lb.example.com에 있으며, server1.example.com 과 server 2.example.com 이라는 두 개의 추가 서버 간에 부하를 분산합니다. 로드 밸런서 장치가 위치 /app 으로 역방향 프록시를 수행하며 AJP 프로토콜을 사용합니다.

  1. 역방향 프록시 핸들러를 추가하려면 다음을 수행합니다.

    /subsystem=undertow/configuration=handler/reverse-proxy=my-handler:add
  2. 각 원격 호스트에 대한 아웃바운드 소켓 바인딩을 정의하려면 다음을 수행합니다.

    /socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=remote-host1/:add(host=server1.example.com, port=8009)
    
    /socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=remote-host2/:add(host=server2.example.com, port=8009)
  3. 각 원격 호스트를 역방향 프록시 핸들러에 추가하려면 다음을 수행합니다.

    /subsystem=undertow/configuration=handler/reverse-proxy=my-handler/host=host1:add(outbound-socket-binding=remote-host1, scheme=ajp, instance-id=myroute1, path=/test)
    
    /subsystem=undertow/configuration=handler/reverse-proxy=my-handler/host=host2:add(outbound-socket-binding=remote-host2, scheme=ajp, instance-id=myroute2, path=/test)
  4. 역방향 프록시 위치를 추가하려면 다음을 수행합니다.

    /subsystem=undertow/server=default-server/host=default-host/location=\/test:add(handler=my-handler)

lb.example.com:8080/app 에 액세스할 때 server1.example.com 및 server2.example.com 에서 프록시된 콘텐츠가 표시됩니다.