IIS 6 호스팅 WCF 서비스를 어떻게로드 할 수 있습니까?
-
02-07-2019 - |
문제
우리는 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"이라는 파일에 라인을 추가 할 수 있습니다.