Azure service fabric Traefik是否可以(也应该)用于;文件";服务结构集群中的模式?
我正在研究在运行停靠微服务的服务结构集群中使用Traefik作为反向代理。在服务结构中运行Traefik的方法是使用服务结构提供程序。不建议在Docker容器中运行Traefik,因为您无法通过localhost:19080访问Service Fabric API,而必须通过其公共IP访问它。这要求您安装SSL证书以安全地与API通信,这有点麻烦 我很好奇,使用Traefix服务结构提供程序(需要复杂的设置)是否比在与文件提供程序一起运行的容器中运行Traefix有什么好处。如果您的服务在ApplicationManifest中具有Azure service fabric Traefik是否可以(也应该)用于;文件";服务结构集群中的模式?,azure-service-fabric,traefik,Azure Service Fabric,Traefik,我正在研究在运行停靠微服务的服务结构集群中使用Traefik作为反向代理。在服务结构中运行Traefik的方法是使用服务结构提供程序。不建议在Docker容器中运行Traefik,因为您无法通过localhost:19080访问Service Fabric API,而必须通过其公共IP访问它。这要求您安装SSL证书以安全地与API通信,这有点麻烦 我很好奇,使用Traefix服务结构提供程序(需要复杂的设置)是否比在与文件提供程序一起运行的容器中运行Traefix有什么好处。如果您的服务在App
ServiceDnsName
属性,从而允许服务结构DNS找到它们,那么这似乎是一种更简单的方法。Traefik配置看起来像:
[frontends]
[frontends.api]
backend = "api"
passHostHeader = true
[frontends.api.routes.forwarder]
rule = "PathPrefixStrip: /api/"
[frontends.someservice]
backend = "someservice"
passHostHeader = true
[frontends.someservice.routes.forwarder]
rule = "PathPrefixStrip: /SomeService/"
[backends]
[backends.api]
[backends.api.servers.endpoint]
url = "http://Api:11080"
[backends.someservice]
[backends.someservice.servers.endpoint]
url = "http://SomeService:12080"
您需要将端口80映射到您的Traefix服务,然后该服务将根据URL前缀将HTTP调用分派到相应的内部服务
优点:
- 无需与Service Fabric API交谈,从容器中进行此操作有点麻烦
- 可能更安全;一切都是内部的,无需担心安装证书
- 您的服务路由现在绑定到Docker容器中的TOML文件,而不是集成到服务和应用程序清单文件中。如果不重新部署该容器,则无法修改此内容
- 除非所有服务都在一个容器中运行,否则我认为这是行不通的(尽管我相信如果启用了reserve代理,您可以使用
相反)http://localhost:19081/AppName/ServiceName
有没有什么我没有考虑的问题,或者有什么强烈的理由反对这样做?我会在你的考虑中加上我的两分钱: 是动态和静态配置之间的首选项 其好处是,每次服务使用Traefik配置时,它都会重新加载所有新配置。今天,您说“它不会改变”,但在几个月、几周或几天内,您可能会面临一个新的需求,您必须更新文件。如果系统发展很快,就像在Microservices解决方案上一样,您很快将面临手动更新此文件的艰巨工作 如果您确信它几乎不会更改,则不受服务结构配置或文件的限制,Traefik可以从中获取配置并加载规则 对于文件方法,您可以在Azure FileShare中创建文件并在容器中作为卷装载,因此无需重建容器即可生效 然后,您可以只更新文件并执行以下操作:
- 重新启动容器以重新加载文件,或
- 更好的方法是使用
设置,您不需要重新启动容器,它将监视文件中的任何更改file.watch