문제

우리는 BIGIP를 사용하여 두 IIS 서버 간의 균형을로드합니다. 우리는 최근 IIS 6에서 호스팅 한 WCF 서비스를이 두 개의 Windows Server 2003R2 서버에 배치했습니다.

각 서버는 두 개의 호스트 헤더로 구성됩니다. 하나는로드 밸런서 주소 용으로, 해당 서버를 가리키는 두 번째 호스트 헤더입니다. 이렇게하면 디버깅을 위해로드 밸런스 그룹의 특정 서버를 참조 할 수 있습니다.

그래서 우리가 달리면 즉시 오류가 발생했습니다.

이 컬렉션에는 이미 Scheme HTTP가있는 주소가 포함되어 있습니다. 이 컬렉션에는 체계 당 최대 하나의 주소가있을 수 있습니다. 매개 변수 이름 : 항목

나는 약간의 연구를 수행했고 우리는 호스트 중 하나를 무시하기 위해 필터를 구현할 수 있지만 해당 주소에서 서버에 액세스 할 수는 없습니다.

<serviceHostingEnvironment>
    <baseAddressPrefixFilters>
        <add prefix="http://domain.com:80"/>
    </baseAddressPrefixFilters>
</serviceHostingEnvironment>

이 시나리오에서 가장 좋은 솔루션은 무엇입니까? http://domain.com/service.svc 그리고 http://server1.domain.com/service.svc?

일부 사이트에서 알 수 있듯이 자신의 ServiceFactory를 만들어야한다면 누구든지 샘플 코드가 있습니까?

모든 도움은 대단히 감사합니다.

편집 : 가능한 경우 두 주소 중 하나에서 WCF 서비스에 액세스 할 수 있어야합니다.

고맙습니다.

도움이 되었습니까?

해결책

BIGIP에서 2 개의 새로운 가상 서버를 만듭니다http://server1.domain.com/ http://server2.domain.com/

특정 서버 만 사용하여 각 대 VS에 대한 풀을 만듭니다. 따라서 실제로드 밸런싱이없고 그러한 방식으로 액세스 할 수 있습니다. 외부 IP가 부족한 경우 여전히 프로덕션 도메인 이름과 동일한 IP를 사용하고 irule을 사용하여 트래픽을 해당 풀로 직접 사용할 수 있습니다.

도움이 되었기를 바랍니다

다른 팁

사용하는 URL은 IIS의 바인딩을 기반으로합니다. 웹 사이트에는 하나 이상의 바인딩이 있습니까? 그렇지 않으면 WCF 서비스가 여러 사이트에서 사용됩니까? 그렇다면, 당신은 sol afaik입니다. 우리는이 문제를 해결했습니다. 기본적으로 HTTP에 대한 IIS 바인딩은 하나만있을 수 있으며, 그렇지 않으면 폭탄이 발생할 수 있습니다.

또한 여기에 정보가 있습니다 ServiceHostFactory 구현. WCF 서비스가 1 주소를 통해서만 액세스 할 수 있다면 작동합니다 (불행히도 우리에게는 불가능했습니다).

특정 컴퓨터를 테스트 해야하는 경우로드 밸런싱을 "우회"하고 올바른 호스트 헤더를 Keeep WCF Happy로 전송하여 테스트하는 시스템에서 "호스트"파일을 편집하여 다음과 같습니다.

10.0.0.11 ~ 10.0.0.16은 클러스터 "cluster.mycompany.local"에있는 6 개의 호스트이며로드 밸런스 IP 주소는 10.0.0.10입니다. 테스트 할 때 클러스터에서 세 번째 시스템을 직접 눌러 "10.0.0.13 Cluster.myCompany.local"이라는 파일에 라인을 추가 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top