InfluxDB集群
InfluxDB官方的集群版本闭源收费, 资源允许的情况下可以考虑使用官方的集群版本, 这里我们采用第三方的开源方案influx-proxy, 详情见github项目地址:Wiki文档
Linux部署InfluxDB集群
准备两个服务节点(ip地址信息根据实际部署环境进行对应调整)
节点1: 192.168.1.101
节点2: 192.168.1.102
部署InfluxDB实例
在节点1上运行:
docker -d --name influxdb-1 --restart always --net iot --privileged=true \
-p 8086:8086 -v /opt/db/influxdb:/var/lib/influxdb \
influxdb:1.8.10
在节点2上运行:
docker -d --name influxdb-2 --restart always --net iot --privileged=true \
-p 8086:8086 -v /opt/db/influxdb:/var/lib/influxdb \
influxdb:1.8.10
分别在两个节点上面各运行一个influxdb的实例,/opt/db/influxdb是两个实例在各自服务器上的本地文件路径,该路径根据实际情况进行更改
这里的两个influxdb的实例是独立运行的两个节点,两个节点互不相干,之后会在这两个节点之上部署Influx Proxy,通过Influx Proxy来管理这两个influxdb的实例来实现集群的功能
部署Influx Proxy实例
在节点1上创建proxy.json配置文件,内容如下,配置为最小集群(2个influxdb节点)的示例配置:
{
"circles": [
{
"name": "circle-1",
"backends": [
{
"name": "influxdb-1-1",
"url": "http://192.168.1.101:8086",
"username": "",
"password": ""
}
]
},
{
"name": "circle-2",
"backends": [
{
"name": "influxdb-2-1",
"url": "http://192.168.1.101:8086",
"username": "",
"password": ""
}
]
}
],
"listen_addr": ":7076",
"db_list": [],
"data_dir": "data",
"tlog_dir": "log",
"hash_key": "idx",
"flush_size": 10000,
"flush_time": 1,
"check_interval": 1,
"rewrite_interval": 10,
"conn_pool_size": 20,
"write_timeout": 10,
"idle_timeout": 10,
"username": "",
"password": "",
"write_tracing": false,
"query_tracing": false,
"https_enabled": false,
"https_cert": "",
"https_key": ""
}
在节点1上启动Influx Proxy服务:
docker -d --name influx-proxy-1 --restart always --net iot \
-p 7076:7076 -e TZ=Asia/Shanghai \
-v ./proxy.json:/etc/influx-proxy/proxy.json \
chengshiwen/influx-proxy:latest
circles属性表示配置了两个circle,两个cicle相当于互为副本,每个cicle各管理一个influxdb节点 在该配置中,业务服务通过访问 http://192.168.1.101:7076 实现influxdb的读写功能
当influx proxy收到写请求时,会把数据同时写到influxdb-1和influxdb-2两个节点,实现集群的功能
当influx proxy收到读请求时,任意找一个节点处理读请求,将读的结果进行返回
同理,在节点2上创建相同的proxy.json的配置文件,文件内容和节点1上的proxy.json保持一致,配置文件创建好之后,在节点2上启动Influx Proxy服务:
docker -d --name influx-proxy-2 --restart always --net iot \
-p 7076:7076 -e TZ=Asia/Shanghai \
-v ./proxy.json:/etc/influx-proxy/proxy.json \
chengshiwen/influx-proxy:latest
这样节点1和节点2这两个节点组成了一个最小的influx proxy的集群,通过http://192.168.1.101:7076;http://192.168.1.102:7076进行InfluxDB集群的读写