如何使用动态端口的Service Fabric DNS服务?

时间:2018-04-18 17:21:37

标签: azure-service-fabric

我无法从Service Fabric上托管的服务调用API,并将其配置为使用动态端口。我引用docs来设置内部DNS服务,并在ApplicationManifest.xml

中将其命名如下
<Service Name="Data" ServiceDnsName="services.data">

我尝试按如下方式调用API:

using (var client = new HttpClient())
{
    var response1 = await client.GetAsync("https://services.data/api/v1/countries"); // throws exception
    var response2 = await client.GetAsync("https://services.data:30006/api/v1/countries"); // works
}

但我观察到,除非在Uri中明确提供了端口值,否则它不起作用。

1 个答案:

答案 0 :(得分:2)

DNS的概念是将人类可读的字符串转换为IP。

例如:

鉴于域www.mydomain.com,DNS调用会将其转换为您的请求将发送到的IP 192.168.0.1

如果您希望客户端连接80(http)以外的任何端口,则必须提出www.mydomain.com:81的请求,该请求将转换为192.168.0.1:81

在服务结构DNS上应用相同的逻辑。

鉴于service1上的服务application1。 DNS条目将是:service1.application1 IP解析将重定向到:The node IP

如果您的服务未在端口80上侦听请求,则客户端必须提供您的服务正在侦听的端口。

如果您打算使用动态分配的端口,我建议您使用reverse proxy或使用remoting