微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

InfluxDb 作为本地主机上 traefik 后面的子位置,使用 docker,Ubuntu 20.04

如何解决InfluxDb 作为本地主机上 traefik 后面的子位置,使用 docker,Ubuntu 20.04

自从最近两天以来,我正在尝试设置一个 traefik 实例,该实例可以通过 localhost/influx 访问我的 influxdb 2.0 实例的仪表板

tl;博士 该路线工作正常。当初始请求返回为 200-OK 时会出现问题,它尝试加载一些 javascript 以加载 gui 和登录页面,但请求中不存在子位置。

这是我所拥有的:

我使用以下命令在 docker 中有一个工作 traefik 实例:

docker run -d -v /var/run/docker.sock:/var/run/docker.sock:ro -v $PWD/traefik/traefik.toml:/traefik.toml -v $PWD/traefik/traefik_dynamic.toml:/traefik_dynamic.toml -p 80:80 -p 433:433 -p 8080:8080 --network skynet --name traefik traefik:latest

traefik.toml:

[entryPoints]
  [entryPoints.web]
    address = ":80"

[providers.docker]
  endpoint = "unix://var/run/docker.sock"
  network = "skynet"
  watch = true

[api]
  dashboard = true
  insecure = true

[providers.file]
  filename = "traefik_dynamic.toml"

traefik_dynamic.toml 文件

  users = [
    "user:pass"
  ]

[http.routers.api]
  rule = "Host(`localhost`)"
  entrypoints = ["web"]
  middlewares = ["simpleAuth"]
  service = "api@internal"

我使用此配置设置了一个 influx-docker (v2):

docker run -d --name influx --network skynet -v $PWD/config.yml:/etc/influxdb2/config.yml -v $PWD/data:/var/lib/influxdb2 --label-file ./traefik_labels influxdb:2.0.4

config.yml 没有变化,所以认。

bolt-path: /var/lib/influxdb2/influxd.bolt
e2e-testing: false
engine-path: /var/lib/influxdb2/engine
feature-flags: {}
http-bind-address: ":8086"
influxql-max-select-buckets: 0
influxql-max-select-point: 0
influxql-max-select-series: 0
key-name: ""
log-level: info
nats-max-payload-bytes: 1048576
nats-port: 4222
no-tasks: false
query-concurrency: 10
query-initial-memory-bytes: 0
query-max-memory-bytes: 0
query-memory-bytes: 9223372036854775807
query-queue-size: 10
reporting-disabled: false
secret-store: bolt
session-length: 60
session-renew-disabled: false
storage-cache-max-memory-size: 1073741824
storage-cache-snapshot-memory-size: 26214400
storage-cache-snapshot-write-cold-duration: 10m0s
storage-compact-full-write-cold-duration: 4h0m0s
storage-compact-throughput-burst: 50331648
storage-max-concurrent-compactions: 0
storage-max-index-log-file-size: 1048576
storage-retention-check-interval: 30m0s
storage-series-file-max-concurrent-snapshot-compactions: 0
storage-series-id-set-cache-size: 0
storage-shard-precreator-advance-period: 30m0s
storage-shard-precreator-check-interval: 10m0s
storage-tsm-use-madv-willneed: false
storage-validate-keys: false
storage-wal-fsync-delay: 0s
store: bolt
testing-always-allow-setup: false
tls-cert: ""
tls-key: ""
tls-min-version: "1.2"
tls-strict-ciphers: false
tracing-type: ""
vault-addr: ""

对于我使用的标签文件

traefik.enable=true
traefik.http.routers.influx-router.entryPoints=web
traefik.http.routers.influx-router.rule=(`/influx`)
traefik.http.middlewares.influx-strip.stripprefix.prefixes=/influx
traefik.http.routers.influx-router.middlewares=influx-strip@docker

通过此配置,我可以访问 traefik 的仪表板 http://localhost 在例如火狐。 如果我访问 http://localhost/influx 请求可以很好地解决

enter image description here

但是 javascript 缺少 pathPrefix。

enter image description here

我已经测试过将 http-bind-address 更改为 localhost/influx:8086 或 traefik/influx:8086。 甚至“influx/influx:8086”,因为主机在 docker 网络中是已知的。 如果我添加子位置,则永远找不到主机。

问题似乎是一个递归问题。 如果我省略任何绑定地址,则流入实例正在侦听 localhost/ 或 ::8086。 但随后它也仅使用“/”来提供其网址。 由于我想通过 /influx 访问它,因此我必须在 traefik 请求服务之前将其剥离。

这就是第一个请求有效的原因,并且由于传递的 url 没有前缀,因此 traefik 找不到/无法解析以下请求。

如果尝试将绑定地址更改为例如localhost/influx:8086 流入容器尝试访问该主机,但由于容器无法完全访问/加载的 traefik 将无法解析此路由并且主机无法访问。

有没有办法让这个工作? 我尝试了几种使用正则表达式的解决方法,但最终还是进入了重定向循环 ;)

外面有人有类似的设置吗?

解决方法

我遇到了同样的问题,但目前似乎没有可用的解决方案版本 > 2。关于这个子路径问题(例如 https://github.com/influxdata/influxdb/issues/15721),有一堆 GitHub 问题未解决。

据我所知,可以选择在 Chronograf

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。