2016-11-25 2 views
1

표면에 뭔가 빠져 있다고 생각합니다. Azure에서 SF 클러스터를 만들었습니다. Load Balancer와 IP 주소가 10.0.0.0/16 인 3 개의 VM (노드)이있는 네트워크가 있습니다.인터넷에서 Azure Service Fabric 응용 프로그램에 액세스

응용 프로그램 끝점에 대한 부하 분산 장치를 요청할 때 노드 IP 주소로 응답합니다. (WireShark로 패킷을 캡쳐했습니다.)하지만 네트워크가 비공개이기 때문에 액세스 할 수 없습니다.

3xA0 인스턴스, net.tcp : 20001 끝점, 방화벽 허용 연결, 열린 포트 및 수신 대기 포트, 공용 IP 주소가 균형 조정기에 할당되어 있고 서비스 포트를 검색합니다.

답변

0

가 있습니다 :

클러스터 외부에서 서비스와 통신 할

- 단지 부하 분산 장치의 IP를 사용하고 네임 서버 통신을 필요가 없습니다. 부하 분산 장치에는 클러스터의 각 노드에있는 포트를 확인할 수있는 probs가 있으며 요청한 서비스가있는 임의의 인스턴스로 요청을 전달할 수 있습니다.

  1. 은 부하 분산을 통해 네임 서비스를 요청하고 직접 서비스 통신 :

    클러스터 내에서 또 다른 한개에 microservice 통신 할

    은 다음 2 가지 옵션이 있습니다.
  2. 서비스가 클러스터의 모든 노드에 있어야한다는 것을 안다면 로컬 호스트와 직접 통신하면됩니다. 당신이 클러스터의 가상 네트워크 내에서 클러스터의 microservice에 별도의 VM에서 의사 소통을 할 때

다음로드 밸런서를 통해 서비스의 이름을 지정하지만 서비스를 사용하여 요청할 수 있습니다 (당신은 VPN을 사용하여 클러스터에 웹 애플리케이션을 연결할 수 있습니다) fabric 패브릭 SDK를 가지고 있지 않은 VM에서 서비스 패브릭 클래스를 사용할 수 없기 때문에 패브릭 HTTP API가 필요합니다. 다음은 서비스 해결의 예입니다. https://github.com/lAnubisl/ServiceFabricHttpApiClient

1

부하 분산 장치에서 공용 IP 주소를 할당해야합니다. 당신은 이것을 위해 documentation에서 정말로 좋은 세부 가이드를 찾을 수 있습니다. 여기에 좋아

+0

내 부하 분산 장치에 공용 IP 주소가 있습니다. 나는 그것을 액세스 할 수 있으며 노드의 엔드 포인트로 나를 응답합니다. 나는 문서에서 프로브와 다른 것들을 가지고있다. 문제는 내 VM 중 누구도 공인 IP 주소를 가지고 있지 않으며로드 밸런서 만이 나를 (내가 노드에 직접 연결하기를 원하는) 연결해야만하는 부분으로 응답한다는 것입니다. 나는 그것이 교통을 통과 할 것으로 예상하고 있었다. – Anubis

+0

VM을 공용 IP로 설정하는 것을 원하지 않습니다. 로드 밸런싱 규칙에 대한 직접 수익을 구성하려 했습니까? 우리는 SQL AAG를 위해 이것을 할 필요가있다. –

+0

예. 내 밸런싱 규칙에는 프론트 엔드 IP 주소 =로드 밸런서 공용 IP, 프로토콜 = TCP, 포트 = 내 서비스 포트, 백엔드 풀 = 내 VM 확장 성 그룹, 프로브, 세션 지속성 = 클라이언트 IP, 유동 IP = true가 있습니다. 클라이언트 응용 프로그램에 "10.0.0.5:20001/.....에 연결할 수 없습니다"라고 표시됩니다. – Anubis

관련 문제