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 명령 값을 업데이트해야 합니다.
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 에서 프록시된 콘텐츠가 표시됩니다.