首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在带有非标准端口的码头安装进水数据库

在带有非标准端口的码头安装进水数据库
EN

Stack Overflow用户
提问于 2019-12-17 08:55:57
回答 2查看 1.2K关注 0票数 0

我是新来的码头工人,我需要一些帮助。我正试图在码头安装滴答号。Influxdb、Kapacitor和Chronograf将安装在dockers中,但telegraf将安装在每台必要的机器上。我的主机中的端口8086正在使用,所以我将使用8087作为进水数据库。用-p 8087:8086配置进水数据库dokcer是否可行?如果是,我应该在conf文件中配置哪个端口?Docker撰写文件将是:

代码语言:javascript
复制
version: '3'

networks:
    TICK_network:

services:

influxdb:
    image: influxdb
    container_name: influxdb
    networks:
        TICK_network:
    ports:
        - "8087:8086"
        - "8083:8083"
    expose:
        - "8087"
        - "8083"
    hostname: influxdb
    volumes:
        - /var/lib/influxdb:/var/lib/influxdb
        - /etc/influxdb/influxdb.conf:/etc/influxdb/influxdb.conf:ro
    restart: unless-stopped

kapacitor:
    image: kapacitor
    container_name: kapacitor
    networks:
        TICK_network:
    links:
        - influxdb
    ports:
        - "9092:9092"
    expose:
        - "9092"
    hostname: kapacitor
    volumes:
        - /var/lib/kapacitor:/var/lib/kapacitor
        - /etc/kapacitor/kapacitor.conf:/etc/kapacitor/kapacitor.conf:ro
    restart: unless-stopped

chronograf:
    image: chronograf
    container_name: chronograf
    networks:
        TICK_network:
    links:
        - influxdb
        - kapacitor
    ports:
        - "8888:8888"
    expose:
        - "8888"
    hostname: chronograf
    volumes:
        - /var/lib/chronograf:/var/lib/chronograf
    restart: unless-stopped

influxdb.conf被编辑为指向端口8087。

代码语言:javascript
复制
[http]
  enabled = true
  bind-address = ":8087"
  auth-enabled = true

Kapacitor.conf和telegraf.conf也指向端口8087。但我收到以下错误:

Telegraf日志:

代码语言:javascript
复制
W! [outputs.influxdb] when writing to [http://localhost:8087]: database "telegraf" creation failed: Post http://localhost:8087/query: EOF
E! [outputs.influxdb] when writing to [http://localhost:8087]: Post http://localhost:8087/write?db=tick: EOF
E! [agent] Error writing to outputs.influxdb: could not write any address

kapacitor日志:

代码语言:javascript
复制
vl=error msg="encountered error" service=run err="open server: open service *influxdb.Service: failed to link subscription on startup: authorization failed"
run: open server: open service *influxdb.Service: failed to link subscription on startup: authorization failed
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-17 09:48:59

如果您想从Docker网络之外访问这些服务,例如从主机访问localhost:8087,那么您所做的是正确的。

但是,在您的情况下,这是不正确的。当您使用docker-compose时,所有服务都位于同一个网络中,因此,您需要攻击流入在 Docker网络(右侧端口)中侦听的端口,即8086

但是,即使你这样做了,它仍然是行不通的。为什么?因为您正在尝试从Telegraf容器访问localhost。您需要将对流入的访问配置为influxdb:8086,而不是localhost:8087influxdb这里是容器的名称,例如,如果您将它命名为ailb90,那么它将是ailb90:8086

票数 1
EN

Stack Overflow用户

发布于 2019-12-17 10:05:06

谢谢你的回答。但是telegraf没有安装在容器中。这就是为什么我使用urls = ["http://localhost:8087"]访问数据库的原因。

另一方面,kapacitor安装在码头容器中。使用字符串urls=["https://influxdb:8087"]来生成进水数据库的conexion。如果我在端口8086中显示了一个连接错误(我认为这是因为influxdb.conf指向端口8087):

代码语言:javascript
复制
lvl=error msg="failed to connect to InfluxDB, retrying..." service=influxdb cluster=default err="Get http://influxdb:8086/ping: dial tcp 172.0.0.2:8086: connect: connection refused"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59370643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档