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.
需要先生成 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
# 修改[[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数据库中均插入了数据,实现了双写的功能