docker上的服务发现组成了在Linux上运行的Service Fabric集群



我创建了一个docker-compose集群,希望将其部署到基于Linux的SF集群中。显然,所有的应用程序都是在docker上创建的,它们使用DNS相互通信。在前面提到的LinuxSF集群上进行云开发时,尽管我已经配置了主机名和网络别名,但服务无法通过DNS相互通信,如下所示。

在我的本地机器上,一切都运行顺利,服务可以相互交谈。有人知道我在这里做错了什么吗?

identity:
image: .....
environment:
...
ports:
- "5020:5020"
hostname: identity.dhcloud
networks:
default:    
aliases:
- identity.dhcloud

谢谢,

谨致问候,何塞。

SF DNS在Linux集群中还不能工作。

Linux上还不支持service Fabric服务的DNS服务。

只支持docker compose操作的一小部分。主机名和别名不在列表中。

  • 服务>部署>副本
  • 服务>部署>放置>限制
  • 服务>部署>资源>限制
    • cpu共享
    • 存储器
    • 内存交换
  • 服务>命令
  • 服务>环境
  • 服务>端口
  • 服务>图像
  • 服务>隔离(仅适用于Windows(
  • 服务>日志记录>驱动程序
  • 服务>日志记录>驱动程序>选项
  • 音量&部署>音量

您可以使用Fabric Client/ServicePartitionResolver进行手动解析。有关的详细信息,请参阅此答案

var resolver = ServicePartitionResolver.GetDefault();
var fabricClient = new FabricClient();
var services = await fabricClient.QueryManager.GetServiceListAsync(applicationName);
var resolved = await resolver.ResolveAsync(services[0].ServiceName, someKey, CancellationToken.None);

您可以直接提供名称过滤器,而不是在所有应用程序和服务上循环。

最新更新