一、influxdb集群的介绍
influxdb是目前比较流行的时间序列数据库。
最简单的定义就是数据格式里包含Timestamp字段的数据,比如某一时间环境的温度,CPU的使用率等。时间序列数据重要的一个属性是如何去查询它,包括数据的过滤,计算等等。
当单台 influxdb 服务器的处理消息的能力达到瓶颈时,此时可以通过 influxdb 集群来进行扩展,从而达到提升吞吐量的目的。
InfluxDB,旨在处理高写入和查询负载。 它是TICK堆栈的组成部分。 InfluxDB旨在用作涉及大量带时间戳数据的任何用例的后备存储,包括DevOps监控,应用程序指标,物联网传感器数据和实时分析。
influxdb集群的优点主要有 1.实现扩容 2.分摊压力
二、influxdb安装
安装地址:https://portal.influxdata.com/downloads/
安装步骤:
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.8.0.x86_64.rpmsudo yum localinstall influxdb-1.8.0.x86_64.rpm
查看是否安装成功
打开Influx:systemctl start influxdb.service
连接数据库: influx -precision rfc3339
参数:-precision为设置显示时间格式,如果没有设置,返回的时间类型字段显示为时间戳,使用rfc3339返回的时间格式为:2021-12-06T15:52:53.189100300Z
简单连接也可以直接输入influx
切换到数据库以及查看表名
# 查看数据库 show databases # 创建数据库 create database test # 使用数据库use test # 查看所有的表 show measurements # 查询某个表的数据 select * from 表名 # 显示用户 show users # 添加普通用户,可以读取查询 create user "test" with password '123456' # 添加管理员 create user "root" with password '123456' with all privileges # 退出 Influxexit/quit/ctrl+d 三个都可以
三、influxdb集群的实现
1.部署前的准备:两台服务器,服务器的ip分别为122.112.175.132 和 122.112.235.143,
华为云, 2核4g,服务器分别安装 influxdb 1.8.10版本(只是安装不启动)
2.各个节点主机安装inluxdb rpm,只是安装不启动influxdb,架构图如下:
3.两个节点主机上依次编辑 influxdb.conf文件,/etc/influxdb/influxdb.conf
主要修改bind-address 选项,依次修改两个主机节点的配置文件
4.下载 influx-proxy服务器
Influx Proxy 是一个基于高可用、一致性哈希的 InfluxDB 集群代理服务,实现了 InfluxDB 高可用集群的部署方案,具有动态扩/缩容、故障恢复、数据同步等能力
git clone https://github.com/chengshiwen/influx-proxy.git
安装必备的go环境
wget https://go.dev/dl/go1.17.4.linux-amd64.tar.gz, 然后安装即可
5.编译influx-proxy命令
cd /opt/influx-proxy Make cp /opt/influx-proxy/bin/influx-proxy /usr/local/bin/
复制influx-proxy到全局
influxdb启动的命令
systemctl start influx-proxy
需要修改系统的服务文件
# 系统服务文件
vim /etc/systemd/system/influx-proxy.service
(这个文件默认不存在,需要用vi命令创建一个后修改文件)
[Unit] Description=influx-proxy After=network.target [Service] Type=simple ExecStart=/usr/local/bin/influx-proxy -config /opt/influx-proxy/proxy.json KillSignal=SIGTERM [Install] WantedBy=multi-user.target
6.配置文件proxy.json
vi /opt/influx-proxy/proxy.json
7.查看influx- proxy的版本
8.设置权限
# 设置权限(服务器1)(服务器2) mkdir -p /mnt/data/influxdb chown influxdb:influxdb /mnt/data/influxdb mkdir -p /mnt/data/influx-pr chown influxdb:influxdb /mnt/data/influx-pr
9.设置用户和密码(两台服务器4个实例都需要设置)
influx -port 8086 create user 'username' with password 'password' with all privileges exit influx -port 8087 create user 'username' with password 'password' with all privileges exit
10.配置文件influxdb.conf.1
vi /etc/influxdb/influxdb.conf.1 加入如下的内容(服务器1和服务器2都要加入) reporting-disabled = true # 禁用报告,默认为false bind-address = ":8088" [meta] dir = "/mnt/data/influxdb/meta" # 元信息目录 [data]dir = "/mnt/data/influxdb/data" # 数据目录 wal-dir = "/mnt/data/influxdb/wal" # 预写目录 wal-fsync-delay = "10ms" # SSD 设置为 0s,非 SSD 推荐设置为 0ms-100ms index-version = "tsi1" # tsi1 磁盘索引,inmem 内存索引需要大量内存 query-log-enabled = true # 查询的日志,默认是true [coordinator]write-timeout = "20s" # 写入请求超时时间,默认为 10s [http] enabled = true bind-address = ":8086" auth-enabled = true log-enabled = true # http 请求日志,默认是 true [logging] level = "info" # 日志等级,error、warn、info(默认)、debug
配置文件influxdb.conf.2
vi /etc/influxdb/influxdb.conf.2 reporting-disabled = true # 禁用报告,默认为 false bind-address = ":8089" [meta] dir = "/mnt/data/influxdb/meta" # 元信息目录 [data] dir = "/mnt/data/influxdb/data" # 数据目录 wal-dir = "/mnt/data/influxdb/wal" # 预写目录 wal-fsync-delay = "10ms" # SSD 设置为 0s,非 SSD 推荐设置为 0ms-100ms index-version = "tsi1" # tsi1 磁盘索引,inmem 内存索引需要大量内存 query-log-enabled = true # 查询的日志,默认是 true [coordinator] write-timeout = "20s" # 写入请求超时时间,默认为 10s [http] enabled = true bind-address = ":8087" auth-enabled = true log-enabled = true # http 请求日志,默认是 true [logging] level = "info" # 日志等级,error、warn、info(默认)、debug
11.配置系统服务文件
vi /etc/systemd/system/influxd-cluster@.service
[Unit] Description=influx-clusterAfter=network.target [Service] Type=simple ExecStart=/usr/bin/influxd -config /etc/influxdb/influxdb.conf.%i Restart=on-failure [Install] WantedBy=multi-user.target
12.启动influxdb,influx-proxy(服务器1)和(服务器2)
systemctl start influxd-cluster@1
systemctl start influxd-cluster@2
systemctl start influx-proxy
或者直接用 influxd -config /etc/influxdb/influxdb.conf.1
查看cluster启动状态 systemctl status influxd-cluster@1
查看集群的状态
curl http://127.0.0.1:7076/health -u root:123456
4个配置的influxdb都显示可以正常使用
至此 集群就已经完成