influxdb集群部署

EMQX 客服发表于:2022年03月04日 09:47:59更新于:2022年03月04日 09:48:43

一、influxdb集群的介绍

influxdb是目前比较流行的时间序列数据库。

最简单的定义就是数据格式里包含Timestamp字段的数据,比如某一时间环境的温度,CPU的使用率等。时间序列数据重要的一个属性是如何去查询它,包括数据的过滤,计算等等。

当单台 influxdb 服务器的处理消息的能力达到瓶颈时,此时可以通过 influxdb 集群来进行扩展,从而达到提升吞吐量的目的。

InfluxDB,旨在处理高写入和查询负载。 它是TICK堆栈的组成部分。 InfluxDB旨在用作涉及大量带时间戳数据的任何用例的后备存储,包括DevOps监控,应用程序指标,物联网传感器数据和实时分析。

influxdb集群的优点主要有 1.实现扩容  2.分摊压力

二、influxdb安装

  1. 安装地址:https://portal.influxdata.com/downloads/

    安装步骤:
    wget https://dl.influxdata.com/influxdb/releases/influxdb-1.8.0.x86_64.rpm

    sudo yum localinstall influxdb-1.8.0.x86_64.rpm

    查看是否安装成功

    image.png

  2. 打开Influx:systemctl start influxdb.service

    连接数据库: influx -precision rfc3339

    参数:-precision为设置显示时间格式,如果没有设置,返回的时间类型字段显示为时间戳,使用rfc3339返回的时间格式为:2021-12-06T15:52:53.189100300Z

    简单连接也可以直接输入influx

    image.png

  3. 切换到数据库以及查看表名

    #  查看数据库
    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  三个都可以

    image.png


三、influxdb集群的实现

1.部署前的准备:两台服务器,服务器的ip分别为122.112.175.132  和 122.112.235.143,

华为云, 2核4g,服务器分别安装 influxdb 1.8.10版本(只是安装不启动)

image.png

2.各个节点主机安装inluxdb rpm,只是安装不启动influxdb,架构图如下:

image.png

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

image.png

image.png

6.配置文件proxy.json

vi /opt/influx-proxy/proxy.json

image.png

7.查看influx- proxy的版本

image.png

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

image.png

配置文件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

image.png

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

image.png

查看集群的状态

curl http://127.0.0.1:7076/health -u root:123456

4个配置的influxdb都显示可以正常使用

至此 集群就已经完成

image.png

    您需要登录后才可以回复