我正在尝试通过Traefik反向代理和SSL终端将后端(python,端口9000)连接到外部。这是我第一次Traefik体验,因此在3个小时的文档阅读和配置后,我仍然可能会错过一些东西,而我对docker也很陌生。
我怀疑网络有问题。
到目前为止,该Swarm仅限于一个节点。这是设置。 Redis由后端使用,这基本上可以工作。问题是我无法通过Traefik到达后端。它只是不断加载并最终超时。
private IEnumerable<int> GetIdsByCommandLine(string commandLine)
{
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT ProcessID FROM Win32_Process WHERE CommandLine = " + commandLine))
using (ManagementObjectCollection objects = searcher.Get())
{
foreach (var element in objects)
yield return (int) element["ProcessId"];
}
}
我在Traefik的日志输出中发现的东西
version: "3"
volumes:
cs-api-config:
networks:
webgateway:
driver: overlay
external: true
traefik:
driver: overlay
api:
driver: overlay
services:
api:
image: my-rep/my-api
volumes:
- cs-api-config:/app/config
networks:
- traefik
- api
ports:
- 9000
deploy:
restart_policy:
condition: any
mode: replicated
replicas: 2
placement:
constraints: [node.role == manager]
update_config:
delay: 2s
labels:
- "traefik.docker.network=cs-api_traefik"
- "traefik.port=9000"
- "traefik.backend.loadbalancer.stickiness=true"
- "traefik.backend.loadbalancer.swarm=true"
- "traefik.frontend.rule=Host:my.domain.app"
# - "traefik.wss.protocol=http"
redis:
image: redis
networks:
- api
ports:
- 6379
deploy:
restart_policy:
condition: any
mode: replicated
replicas: 1
placement:
constraints: [node.role == manager]
update_config:
delay: 2s
loadbalancer:
image: traefik
command:
- "--loglevel=DEBUG"
- "--web"
- "--entrypoints=Name:http Address::80 Redirect.EntryPoint:https"
- "--entrypoints=Name:https Address::443 TLS"
- "--defaultentrypoints=http,https"
- "--acme"
- "--acme.storage=/etc/traefik/acme/acme.json"
- "--acme.entryPoint=https"
- "--acme.onHostRule=true"
- "--acme.onDemand=false"
- "--acme.httpChallenge.entryPoint=http"
- "--acme.email=myemail"
- "--docker"
- "--docker.swarmmode"
- "--docker.domain=my.domain.app"
- "--docker.watch"
ports:
- 80:80
- 443:443
- 9090:8080
volumes:
- cs-api-config:/etc/traefik/acme/
- /var/run/docker.sock:/var/run/docker.sock
deploy:
restart_policy:
condition: any
mode: replicated
replicas: 1
update_config:
delay: 2s
placement:
constraints: [node.role == manager]
networks:
- webgateway
- traefik
后端获得内部IP,这些IP当然是无法公开访问的,但是我认为这应该由Traefik处理并转发到外部“ Webgateway”网络。
此外,我对Traefik感到困惑,抱怨缺少Redis的端口标签,我使用api将其放置在自己的网络中以摆脱此困扰,但Traefik仍然对此表示抱怨。它还抱怨自己的服务。
... | time="2018-09-12T14:01:18Z" level=debug msg="No virtual IPs found in network 3npv6h0g3vjv2agnj3moqcz7m"
... | time="2018-09-12T14:01:18Z" level=debug msg="No IP addresses found for network 3npv6h0g3vjv2agnj3moqcz7m"
在此先感谢您的帮助。