2010-03-12 4 views
7

Glassfish와 같은 Java EE 컨테이너를 사용하여 EJB 수준 (웹 세션 복제가 아닌)에서로드 균형 조정이 어떻게 작동하는지 개념적으로 궁금합니다. 내가 원격 인터페이스를 수집 한 것은 환경에서 가질 수있는 많은 서버 중 하나에 호출을 위임하는 프록시입니다.개념적으로 Glassfish/모든 ejb 컨테이너에서 EJB 계층의로드 균형 조정을 수행하는 방법

만약 실패하면 다른 서버에서 "완료"할 수 있습니까? 이로드 균형 조정의 기본 이론을 이해하고 싶습니다.로드 밸런서에서 세션 선호도가있는 일반 웹 응용 프로그램을 모두 실행하는 서버 무리보다 왜 더 좋은가?

답변

7

내가 개념 궁금 방법 글래스 피시와 같은 자바 EE 컨테이너와 EJB 수준 (안 웹 세션 복제)에 로드 밸런싱 작동합니다. 내가 리모컨을 수집 한 것에서 인터페이스는 이 많은 서버 중 하나에 대한 호출을 에게 위임하는 프록시입니다.

당신 말이 맞습니다. Glassfish에서 초기 검색은 jndi.properties 파일에 나열된 서버 중 하나에 연결을 시도합니다. 그런 다음 서버는 라운드 로빈에 사용될 클러스터의 다른 모든 노드를 인식합니다. 원격 참조 (프록시)는이를 투명하게 처리합니다. 이론적으로 클러스터에서 노드를 동적으로 추가/제거 할 수 있습니다. Glassfish RMI-IIOP load balancing and fail-over을 참조하십시오.

만약 실패하면 다른 서버에서 을 "완료"할 수 있습니까? I 이로드 균형 조정의 기본 이론 인 을 이해하고 싶습니다. 왜 여러 서버보다 더 좋을까요? 로드 밸런서에 세션 선호도가있는 일반 웹 응용 프로그램을 실행하고 있습니까?

bean이 상태 비 저장 인 경우, 어떤 종류의 선호도가 필요하지 않으며 모든 노드에서 요청을 처리 할 수 ​​있습니다. 각 원격 참조는로드 밸런서 역할을합니다.

빈이 statefull이면 더 털이 있습니다. 클러스터는 빈의 2 복제본을 유지하려고합니다. 요청은이 두 복제본에 대해 전달됩니다. 노드 중 하나가 충돌하면 클러스터는 노드가 돌아올 때까지 다른 복제본을 다시 만듭니다. 실제로 세션 선호도가있는 HTTP 세션 복제와 비슷합니다.

웹 서버와 달리, bean은 트랜잭션 구성 요소입니다. 따라서 예외가 발생하면 상태가 더 이상 일관성이 없기 때문에 트랜잭션이 롤백되고 상태 유지 Bean이 무효화됩니다.

파스칼에 의해 지적 되었 듯이, 특정 종류의 실패에 대해 일종의 장애 조치가 있습니다. 노드를 사용할 수 없으면 요청을 다른 노드로 다시 라우팅 할 수 있습니다. 그러나 노드가 에 실패하고 요청이 처리되지 않으면 다른 곳으로 다시 전송할 수 있는지 여부를 알 수 없습니다.

자세히 알고 싶으면 Guide to GlassFish High AvailabilityCluster Support in Glassfish을 읽어보십시오.

6

만약 실패하면 다른 서버에서 "완료"할 수 있습니까?

장애 조치

은 내가 아는 한 사양의 일부가 아닌 (당신은로드 밸런싱을 여기하지 장애 조치를 참조하면된다). 그러나 대부분의 공급 업체는 페일 오버를 지원하고이 기능을 제공하기 위해 여러 EJB 컨테이너를 클러스터링 할 수 있습니다. 기본적으로 열려있는 각 트랜잭션의 진행률은 백업 서버로 전송되고 트랜잭션이 아직 열려있는 동안 기본 컨테이너에 오류가 발생하면 백업 서버가 인계 받아 일부 상황에서는 트랜잭션을 계속할 수 있습니다 (예 : 으로 선언 된 WebLogic requires 메소드). 대부분의 경우 백업 컨테이너는 트랜잭션을 롤백하고 클라이언트에 원래 요청을 다시 시도하도록 신호를 보냅니다.

이로드 균형 조정의 기본 이론을 이해하고 싶습니다.로드 균형 조정기에서 세션 선호도가있는 일반 웹 응용 프로그램을 모두 실행하는 서버보다 많은 이유는 무엇입니까?

답변을 제공하기에는 너무 많은 개념이 섞여 있습니다. Failover! =로드 밸런싱, 세션 선호도는 실제로 페일 오버와 관련이 없습니다 (단지 세션을 보유하고있는 서버에 요청이 전송된다는 의미입니다). HTTP 세션 상태 복제 (메모리 내 복제, 데이터베이스 등)를 사용하여 웹 계층에서 장애 조치를 수행 할 수 있습니다. 질문을 명확히해야합니다.

관련 문제