24.4. JBoss EAP를 프런트 엔드 로드 밸런서 장치로 구성
백엔드 JBoss EAP 서버에 대한 요청을 프록시하는 프런트엔드 로드 밸런서 장치 역할을 하도록 JBoss EAP 및 undertow
하위 시스템을 구성할 수 있습니다. Undertow는 비동기 IO를 사용하므로 연결을 담당하는 IO 스레드는 요청에 관련된 유일한 스레드입니다. 이 스레드는 백엔드 서버에 대한 연결에도 사용됩니다.
다음 프로토콜을 사용할 수 있습니다.
-
HTTP/1 및 HTTP/2 (
h
2c
)를 지원하는 일반 텍스트(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 명령 값을 업데이트해야 합니다.
mod_cluster 광고 보안 키를 설정합니다.
광고 보안 키를 추가하면 검색 중에 로드 밸런서와 서버를 인증할 수 있습니다.
다음 관리 CLI 명령을 사용하여 mod_cluster 광고 보안 키를 설정합니다.
/profile=ha/subsystem=modcluster/proxy=default:write-attribute(name=advertise-security-key, value=mypassword)
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 하위 시스템을 참조하십시오.
노드 경로를 구분하는 기본 구분 기호는 입니다 .
. 다른 값을 원하는 경우 선호도
리소스의 구분 기호
특성을 구성할 수 있습니다.
절차
로드 밸런서에 대해 순위가 지정된 세션 선호도를 활성화합니다.
/subsystem=undertow/configuration=filter/mod-cluster=load-balancer/affinity=ranked:add
선택 사항:
유사성
리소스의구분 기호
특성을 구성합니다./subsystem=undertow/configuration=filter/mod-cluster=load-balancer/affinity=ranked:write-attribute(name=delimiter,value=':')
24.4.3. Undertow를 정적 로드 밸런서로 구성
Undertow를 사용하여 정적 로드 밸런서를 구성하려면 undertow 하위 시스템에서
프록시 핸들러를 구성해야 합니다. Undertow에서 프록시 핸들러를 구성하려면 정적 로드 밸런서 장치 역할을 할 JBoss EAP 인스턴스에서 다음을 수행해야 합니다.
- 역방향 프록시 처리기 추가
- 각 원격 호스트에 대한 아웃바운드 소켓 바인딩 정의
- 각 원격 호스트를 역방향 프록시 핸들러에 추가
- 역방향 프록시 위치 추가
다음 예제에서는 JBoss EAP 인스턴스를 정적 로드 밸런서 장치가 되도록 구성하는 방법을 보여줍니다. JBoss EAP 인스턴스는 lb.example.com에 있으며,
로드 밸런서 장치가 위치 server1.example.com
과 server 2.example.com
이라는 두 개의 추가 서버 간에 부하를 분산합니다./app
으로 역방향 프록시를 수행하며 AJP 프로토콜을 사용합니다.
역방향 프록시 핸들러를 추가하려면 다음을 수행합니다.
/subsystem=undertow/configuration=handler/reverse-proxy=my-handler:add
각 원격 호스트에 대한 아웃바운드 소켓 바인딩을 정의하려면 다음을 수행합니다.
/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)
각 원격 호스트를 역방향 프록시 핸들러에 추가하려면 다음을 수행합니다.
/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)
역방향 프록시 위치를 추가하려면 다음을 수행합니다.
/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
에서 프록시된 콘텐츠가 표시됩니다.