Ubuntu20.04对influxdb的安装以及influx-relay的应用

537 阅读1分钟

1、Ubuntu20.04安装influxdb


1.1 更新最新安装包

sudo apt update
sudo apt upgrade

1.2 将InfluxDB存储库添加到Ubuntu系统

wget -qO- https://repos.influxdata.com/influxdb.key | sudo apt-key add -
source /etc/lsb-release
echo "deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list

1.3 继续更新系统并安装InfluxDB

sudo apt update
sudo apt install influxdb

1.4 启动并设置开机自启动

sudo systemctl enable --now influxdb

1.5 配置influxdb

vi /etc/influxdb/influxdb.conf
[http]
  # Determines whether HTTP endpoint is enabled.
  enabled = true

  # Determines whether the Flux query endpoint is enabled.
  flux-enabled = true

  # The bind address used by the HTTP service.
  bind-address = ":8086"

至此,influxdb的安装就完成了。

2、influxdb-relay的搭建


influxdb-relay是一个基于go语音开发的一个高可用工具,他的源码地址为:https://github.com/influxdata/influxdb-relay。所以influxdb-relay的搭建必须要依赖go1.5+的环境。

2.1 Ubuntu20.04安装go 1.5+运行环境

2.1.1 下载安装包

先从官网下载对应的安装包:go1.19.4.linux-amd64.tar.gz

2.1.2 安装go

tar -zxvf go1.19.4.linux-amd64.tar.gz -C /usr/local/

2.2 go的系统配置

2.2.1 系统环境变量设置

vi /etc/profile

export PATH=$PATH:/usr/local/go/bin
:wq

source /etc/profile

2.2.2 go的环境变量设置

当遇到# dial tcp 142.251.42.241:443: connect: connection refused报错时,说明代理地址为国外,国内无法访问,修改环境变量中的代理地址为国内地址即可

go env -w GOPROXY=https://goproxy.cn

当遇到 'go get' is no longer supported outside a module.

image.png

需要先生成 go.mod 文件

# 生成 mod 文件(切换到模块根目录) 
go mod init modulename 
# 清理无效依赖,增加缺失依赖 
go mod tidy

2.2.3 go的安装版本查看

go version
#输出如下显示版本信息,表代表go以安装好了
go version go1.19.4 linux/amd64

2.3 利用go来打包编译influxdb-relay的源码

influxdb-relay的GitHub官网没有提供面编译或者release等直接安装包,所以需要我们使用go来对源码进行编译

# 使用go get来下载influxdb-relay的源码
go get -u github.com/influxdata/influxdb-relay

# 执行go get以后会发现在$GOPATH路径下出现pkg文件夹,里面包含我们下载的源码(pkg/mod/github.com/influxdata/influxdb-relay@v0.0.0-20200717153856-05c88110dfca/)
# ps:$GOPATH指go env环境变量中的GOPATH环境变量的值
# 所以我们的目标是把源码路径下的main.go及其依赖编译到$GOPATH/bin路径下

cd $GOPATH
mkdir bin
cd bin/
# 将源码路径influxdb-relay@v0.0.0-20200717153856-05c88110dfca下的main.go编译到当前路径下,并命名为influxdb-relay运行脚本
go build -o influxdb-relay /root/go/pkg/mod/github.com/influxdata/influxdb-relay@v0.0.0-20200717153856-05c88110dfca/

# 创建influxdb-relay配置文件
cp /root/go/pkg/mod/github.com/influxdata/influxdb-relay@v0.0.0-20200717153856-05c88110dfca/sample.toml ./relay.toml

# 编译配置文件
vi ./relay.toml

image.png

# 修改[[http]]中的
bind-addr="0.0.0.0:9096"

# 将output中两个local指向两个不同的influxdb安装的服务器地址
output = [
    { name="local1", location="http://192.168.31.129:8086/write", timeout="10s" },
    { name="local2", location="http://192.168.31.130:7086/write", timeout="10s" },

# 启动influxdb-relay程序,我这里使用nohup使其作为后台程序启动
nohup $GOPATH/bin/influxdb-relay -config $GOPATH/bin/relay.toml &

# 查看9096端口是否在运行
netstat -nltp|grep 9096

2.4 验证influxdb-relay双写的效果

 curl -i -XPOST http://192.168.31.129:9096/write?db=device --data-binary 'test,name=hepeng,age=15 value=5.5'

通过上述发送post请求,可以发现在192.168.31.129和192.168.31.130两台服务器上的influxdb实例中的device数据库中均插入了数据,实现了双写的功能

image.png

image.png