1
votes

I think I'm missing something that is on surface. I have created SF cluster in Azure. It has a Load Balancer and a network with 3 VMs (nodes) which have IP addresses in 10.0.0.0/16.

When I'm asking Load balancer for application endpoint it responds with node IP address. (I captured packets with WireShark) But I can't access it because the network is private.

A bit more info about my case: 3xA0 instances, net.tcp:20001 endpoints, firewall allow connections, ports opened and listening, i have public IP address assigned to balancer, probe for service port.

2

2 Answers

1
votes

On your load balancer you will need to assign a public IP address. You can find some really good detailed guides in the documentation for this.

0
votes

Ok Here is it:

When you want to communicate to the service from outside the cluster - just use load balancer IP and you don't need the naming server communication. Load balancer has probs that can check ports on each node in cluster and forward your request to random instance which has service you are asking.

When you want to communicate one microservice to another within the cluster then you have 2 options:

  1. ask naming service through load balancer and then communicate to the service directly.
  2. if you know for sure that the service should be on every node in your cluster - you can just communicate to localhost directly.

When you want to communicate from separate vm to the microservice in the cluster from within cluster's virtual network (you can connect WebApp to the cluster using vpn) then you can ask naming service through load balancer but using Service fabric HTTP API because you will not be able to use service fabric classes on VM wich doesn't have Service Fabric SDK installed. Here is an example of service resolving: https://github.com/lAnubisl/ServiceFabricHttpApiClient