转载请注明出处:
1.influxdb relay的作用和特性
- 数据转发:InfluxDB Relay 可以从一个或多个源(input)接收数据,并将其转发到一个或多个目标(output)的 InfluxDB 实例中。
- 负载均衡:Relay 可以通过在多个目标实例之间分配请求来提供负载均衡,确保可伸缩性和高可用性。
- 故障恢复:当某个目标实例发生故障时,Relay 可以自动切换到其他可用的目标实例,避免数据丢失。
- 自定义路由规则:您可以根据需要配置 Relay 的路由规则,以便根据数据的标签等信息对数据进行过滤和路由。
- 安全性:Relay 支持使用 HTTPS 和身份验证等方法来保护数据传输和访问。
- 高性能:Relay 使用了并发处理和批量写入等技术,以提供高性能的数据传输。
使用 InfluxDB Relay 可以帮助简化复杂的数据流处理和数据集成场景,提高数据传输的可靠性和效率。
特别注意:
InfluxDB Relay是一个用于提供InfluxDB高可用性的工具,它主要用于处理写请求,而不是读请求。它可以接收来自客户端的数据写入请求,并将这些请求转发到多个InfluxDB实例。
InfluxDB Relay并不能处理读请求。对于读请求,应该直接将请求发送到InfluxDB实例,而不是发送到InfluxDB Relay。InfluxDB Relay的设计目标是保证数据写入的高可用性,而不是提供高可用性的读取服务。
2.使用方式:
- 配置文件:使用 InfluxDB Relay 需要创建一个配置文件,其中包含输入源和输出目标的配置信息。
- 路由配置:您可以根据数据的标签、测量名称或其他属性来配置路由规则,以确定数据应该转发到哪个输出目标。
- 数据转发:Relay 会根据配置的路由规则接收来自输入源的数据,并将其转发到匹配的输出目标中。
- 监控和管理:Relay 提供了监控指标和管理接口,可以用于监视和管理 Relay 实例的运行状态和性能。
3.通过docker 安装influxdb relay
3.1 第一种安装方式
通过docker hub镜像安装
docker pull influxdb/influxdb-relay:v1.8.0
3.2 第二种安装方式
通过源码构建influxdb relay镜像;通过克隆 InfluxDB Relay 的源代码,并使用 Dockerfile 构建自定义镜像。
在您的主机上执行以下步骤:
- 克隆 InfluxDB Relay 源代码存储库:
git clone https://github.com/influxdata/influxdb-relay.git
- 进入源代码目录:
cd influxdb-relay
- 切换到所需的版本标签(例如 v1.8.0):
git checkout tags/v1.8.0
- 构建自定义镜像:
docker build -t my-influxdb-relay:v1.8.0 .
这将使用 Dockerfile 构建自定义镜像,并将其命名为 my-influxdb-relay
。
4.配置influxdb relay配置文件
创建 influxdb relay 的配置文件:influxdb-relay.toml
[[http]] name = "influxdb_relay" bind-addr = "0.0.0.0:8097" output = [ { name="192.168.0.1", location = "http://192.168.0.1:8086/write", buffer-size-mb = 500, max-batch-kb = 50, max-delay-interval = "5s" }, { name="192.168.0.2", location = "http://192.168.0.2:8086/write", buffer-size-mb = 500, max-batch-kb = 50, max-delay-interval = "5s" }, { name="192.168.0.3", location = "http://192.168.0.3:8086/write", buffer-size-mb = 500, max-batch-kb = 50, max-delay-interval = "5s" } ]
根据上面提供的InfluxDB Relay配置示例,在收到一个请求时,数据将同时发送到配置的3个InfluxDB实例。这是因为在output
部分列出了所有要发送数据的目标InfluxDB实例。每当InfluxDB Relay接收到一个写入请求时,它会将该请求复制到所有配置的InfluxDB实例中。这样可以实现数据的冗余存储和高可用性。
在这个配置示例中,[[http]]
部分指定了InfluxDB Relay的HTTP监听配置:
name
:设置InfluxDB Relay的名称为 "influxdb_relay"。bind-addr
:设置InfluxDB Relay监听的地址和端口为 "0.0.0.0:8097",这将允许来自任何IP地址的请求。
output
部分列出了所有要发送数据到的InfluxDB实例:
- 每个输出被大括号
{}
包围。 name
:指定InfluxDB实例的名称。location
:指定InfluxDB实例的写入地址。buffer-size-mb
:设置输出缓冲区的大小为 500MB。当缓冲区满时,InfluxDB Relay将阻塞写入直到缓冲区有足够的空间。max-batch-kb
:设置每个批次的最大大小为 50KB。当达到该大小或超过该大小时,InfluxDB Relay将触发写入操作。max-delay-interval
:设置最大延迟间隔为 5秒。即使未达到最大批次大小,如果等待时间超过此间隔,Relay也会立即将数据发送到InfluxDB。
根据您的示例配置,InfluxDB Relay将数据发送到以下目标:
- InfluxDB实例1:http://192.168.0.1:8086/write
- InfluxDB实例2:http://192.168.0.2:8086/write
- InfluxDB实例3:http://192.168.0.3:8086/write
5.启动influxdb relay的容器
运行以下命令以启动 InfluxDB Relay 容器:
docker run -d \ --name=influxdb-relay \ -p 8097:8097 \ -v /path/to/influxdb-relay.toml:/etc/influxdb-relay.toml \ --network=influxdb_network \ influxdb-relay -config /etc/influxdb-relay.toml
-d
:以后台模式运行容器。--name=influxdb-relay
:指定容器的名称。-p 8097:8097
:将主机的8097端口映射到容器的8097端口,这样可以通过主机的8097端口访问 InfluxDB Relay。-v /path/to/influxdb-relay.toml:/etc/influxdb-relay.toml
:将主机上的influxdb-relay.toml
配置文件挂载到容器内的/etc/influxdb-relay.toml
路径,确保配置文件可用于容器中的 InfluxDB Relay。--network=influxdb_network
:将容器连接到之前创建的influxdb_network
网络。
验证数据复制:确保 InfluxDB Relay 成功连接到源和目标 InfluxDB 实例,并且复制规则配置正确。可以通过监视日志文件或使用 InfluxDB Relay 提供的管理 API 来验证数据是否成功复制。