InfluxDB(HA)

文章目录

    • 1. 安装
    • 2. 修改配置文件
    • 3. 启动
    • 4. 开启代理
    • 5. Nginx负载
    • 参考文章:

1. 安装

安装1.8.0版本,借助1.1.0版本的UI界面

https://dl.influxdata.com/influxdb/releases/influxdb-1.8.0_linux_amd64.tar.gz
https://dl.influxdata.com/influxdb/releases/influxdb-1.1.0_linux_amd64.tar.gz

2. 修改配置文件

{influxdb目录}/usr/bin

influxd          influxdb服务器
influx           influxdb命令行客户端
influx_inspect   查看工具
influx_stress    压力测试工具
influx_tsm       数据库转换工具(将数据库从b1或bz1格式转换为tsm1格式)

{influxdb目录}/etc/influxdb/influxdb.conf

默认配置

# 禁止报告开关,默认 每 24 小时往 usage.influxdata.com 发送报告
reporting-disabled = false
# 用于备份和恢复的 RPC 服务的绑定地址
bind-address = "127.0.0.1:8088"

[meta]
  # 元数据存储目录
  dir = "/var/lib/influxdb/meta"
  # retention policy 自动创建开关
  retention-autocreate = true
  # 元数据服务日志开关
  logging-enabled = true

[data]
  # 数据目录
  dir = "/var/lib/influxdb/data"
  # 预写日志目录(write ahead log)
  wal-dir = "/var/lib/influxdb/wal"
  # fsync 调用之前的写等待时间,默认为 0s,SSD 设置为 0s,非 SSD 推荐设置为 0ms-100ms
  wal-fsync-delay = "0s"
  # inmem 内存索引(需要大量内存),tsi1 基于磁盘的时序索引
  index-version = "inmem"
  # 查询日志开关
  query-log-enabled = true
  # 分片缓存在拒绝 /write 请求前能写入的最大内存大小,默认为 1g
  cache-max-memory-size = "1g"
  # tsm 引擎将快照缓存并将其写入 tsm 文件的缓存大小,完成后释放内存
  cache-snapshot-memory-size = "25m"
  # 持续一段时间后,如果分片没有收到写入或删除,tsm 引擎将对缓存进行快照并将其写入新的 TSM 文件
  cache-snapshot-write-cold-duration = "10m"
  # 持续一段时间后,如果 tsm 引擎未收到写入或删除,tsm 引擎将压缩分片中的所有 TSM 文件
  compact-full-write-cold-duration = "4h"
  # tsm 压缩每秒写入磁盘的最大数据量,短暂突发期间可以被设置为 compact-throughput-burst
  compact-throughput = "48m"
  # tsm 压缩在短暂突发期间每秒写入磁盘的最大数据量
  compact-throughput-burst = "48m"
  # 最大并发压缩数,默认值 0 会将 50% 的 CPU 核心数用于压缩
  max-concurrent-compactions = 0
  # inmem 设置项:在删除写入之前每个数据库允许的 series 的最大数量,设置 0 则不限制
  max-series-per-database = 1000000
  # inmem 设置项:每个 tag 键允许的 tag 值的最大数量,设置 0 则不限制
  max-values-per-tag = 100000
  # tsi1 设置项:预写日志 wal 文件将压缩为索引文件时的阈值大小
  # 较小的阈值将导致日志文件更快地压缩,并导致较低的堆内存使用量,但会以写入吞吐量为代价
  # 更大的阈值将不会频繁地压缩,在内存中存储更多的 series,并提供更高的写入吞吐量
  max-index-log-file-size = "1m"
  # tsi1 设置项:tsi 索引中用于存储先前计算的 series 结果的内部缓存大小
  # 缓存结果将从缓存中快速返回,而不需要对匹配 tag 键值的后续查询进行重新计算
  # 将此值设置为 0 将禁用缓存,这可能会导致查询性能问题
  series-id-set-cache-size = 100

[coordinator]
  # 写入请求超时时间
  write-timeout = "10s"
  # 最大并发查询数,默认值 0 表示不限制
  max-concurrent-queries = 0
  # 在终止查询之前允许执行查询的最长持续时间,默认值 0 表示不限制
  query-timeout = "0s"
  # 慢查询的最大持续时间,一个查询超出该时间将打印 Detected slow query 日志
  # 默认值 0s 表示不记录慢查询
  log-queries-after = "0s"

[retention]
  # 执行保留策略并淘汰旧数据开关
  enabled = true
  # 执行保留策略的检查时间间隔
  check-interval = "30m0s"

[monitor]
  # 内部记录统计信息开关,生产环境中若数据量较大,建议关闭
  store-enabled = true
  # 记录统计信息的数据库
  store-database = "_internal"
  # 记录统计信息的时间间隔
  store-interval = "10s"

[http]
  # http 开关
  enabled = true
  # http 绑定地址
  bind-address = ":8086"
  # 认证开关
  auth-enabled = false
  # http 请求日志
  log-enabled = true
  # 详细写入日志开关
  write-tracing = false
  # flux 查询开关
  flux-enabled = false
  # flux 查询日志开关
  flux-log-enabled = false
  # pprof http 开关,用于故障排除和监控
  pprof-enabled = true
  # 启用 /pprof 端点并绑定到 localhost:6060,用于调试启动性能问题
  debug-pprof-enabled = false
  # https 开关
  https-enabled = false
  # https 证书
  https-certificate = "/etc/ssl/influxdb.pem"
  # https 私钥
  https-private-key = ""
  # 查询返回的最大行数,默认值 0 允许无限制
  max-row-limit = 0
  # 最大连接数,超过限制的新连接将被丢弃,默认值 0 禁用限制
  max-connection-limit = 0
  # 客户端请求 body 的最大大小(以字节为单位),设置为 0 则禁用限制
  max-body-size = 25000000
  # 访问日志路径,若设置并当 log-enabled 启用时,请求日志将写入到该文件
  # 默认则写入 stderr,与 influxdb 日志混合在一起
  access-log-path = ""
  # 请求记录状态过滤,例如 ["4xx", "5xx"],默认 [] 表示无过滤,所有请求被记录打印
  access-log-status-filters = []
  # 最大并发处理的写入数,设置为 0 则禁用限制
  max-concurrent-write-limit = 0
  # 最大排队等待处理的写入数,设置为 0 则禁用限制
  max-enqueued-write-limit = 0
  # 写入在待处理队列中等待的最大持续时间
  # 设置为 0 或将 max-concurrent-write-limit 设置为 0 则禁用限制
  enqueued-write-timeout = "30s"

[logging]
  # 日志等级,error、warn、info(默认)、debug
  level = "info"

重点配置:

# 禁用报告,默认为 false
reporting-disabled = true

[meta]
  # 元数据存储目录
  dir = "/var/lib/influxdb/meta"

[data]
  # 数据目录
  dir = "/var/lib/influxdb/data"
  # 预写日志目录(write ahead log)
  wal-dir = "/var/lib/influxdb/wal"
  # fsync 调用之前的写等待时间,默认为 0s,SSD 设置为 0s,非 SSD 推荐设置为 0ms-100ms
  # 若要降低磁盘 io,则适当调大
  wal-fsync-delay = "20ms"
  # inmem 内存索引(需要大量内存),tsi1 基于磁盘的时序索引,默认为 inmem
  index-version = "tsi1"
  # 查询日志开关,可视情况关闭
  query-log-enabled = true
  # 分片缓存在拒绝 /write 请求前能写入的最大内存大小,默认为 1g
  # 若服务器内存较小,则适当调小;若要降低磁盘 io,则适当调大
  cache-max-memory-size = "1g"
  # tsm 引擎将快照缓存并将其写入 tsm 文件的缓存大小,完成后释放内存,默认为 25m
  # 若服务器内存较小,则适当调小;若要降低磁盘 io,则适当调大
  cache-snapshot-memory-size = "25m"
  # 持续一段时间后,如果分片没有收到写入或删除,tsm 引擎将对缓存快照并写入新的 TSM 文件,默认为 10m
  # 若要降低 cpu 压缩计算和磁盘 io,则适当调大,但避免时间过长一直占用内存
  cache-snapshot-write-cold-duration = "10m"
  # 持续一段时间后,如果 tsm 引擎未收到写入或删除,tsm 引擎将压缩分片中的所有 TSM 文件,默认为 4h
  # 若要降低 cpu 压缩计算和磁盘 io,则适当调大
  compact-full-write-cold-duration = "4h"
  # tsm 压缩每秒写入磁盘的最大数据量,默认为 48m
  # 若要降低磁盘 io,则适当调小,但避免过小导致压缩周期变长
  compact-throughput = "48m"
  # tsm 压缩在短暂突发期间每秒写入磁盘的最大数据量,默认为 48m
  # 若要降低磁盘 io,则适当调小,但避免过小导致压缩周期变长
  compact-throughput-burst = "48m"
  # 最大并发压缩数,默认值 0 会将 50% 的 CPU 核心数用于压缩
  # 若要降低 cpu 压缩计算和磁盘 io,则适当调小,但避免过小导致压缩周期变长
  max-concurrent-compactions = 0
  # tsi1 设置项:预写日志 wal 文件将压缩为索引文件时的阈值大小
  # 较小的阈值将导致日志文件更快地压缩,并导致较低的堆内存使用量,但会以写入吞吐量为代价
  # 更大的阈值将不会频繁地压缩,在内存中存储更多的 series,并提供更高的写入吞吐量
  # 若要降低 cpu 压缩计算和磁盘 io,则适当调大,但避免过大导致一直占用内存
  # 若服务器内存较小,则适当调小或保持不变
  max-index-log-file-size = "1m"
  # tsi1 设置项:tsi 索引中用于存储先前计算的 series 结果的内部缓存大小
  # 缓存结果将从缓存中快速返回,而不需要对匹配 tag 键值的后续查询进行重新计算
  # 将此值设置为 0 将禁用缓存,这可能会导致查询性能问题
  # 若服务器内存较小,则适当调小
  series-id-set-cache-size = 100

[coordinator]
  # 写入请求超时时间,默认为 10s
  write-timeout = "20s"

[monitor]
  # 内部记录统计信息开关,生产环境中若数据量较大,会影响内存及cpu,建议关闭
  store-enabled = true
  # 记录统计信息的时间间隔,生产环境中若数据量较大,但需要开启监控,则调大间隔
  store-interval = "10s"

[http]
  # 认证开关
  auth-enabled = true
  # http 请求日志,可视情况关闭
  log-enabled = true

[logging]
  # 日志等级,error、warn、info(默认)、debug,可视情况调整等级
  level = "info"

3. 启动

nohup ./influxd -config conf/influxdb.conf &

在客户端工具窗口执行

./influx -port 8086
# 创建管理员权限的用户
CREATE USER root WITH PASSWORD '123456' WITH ALL PRIVILEGES

4. 开启代理

https://github.com/chengshiwen/influx-proxy/releases/download/v2.5.10/influx-proxy-2.5.10-linux-amd64.tar.gz

解压后,编辑proxy.json

{
    "circles": [
        {
            "name": "circle-1",
            "backends": [
                {
                    "name": "influxdb-1-1",
                    "url": "http://127.0.0.1:8086",
                    "username": "root",
                    "password": "123456",
                    "auth_encrypt": false,
                    "write_only": false
                },
                {
                    "name": "influxdb-1-2",
                    "url": "http://127.0.0.1:8087",
                    "username": "root",
                    "password": "123456",
                    "auth_encrypt": false,
                    "write_only": false
                }
            ]
        },
        {
            "name": "circle-2",
            "backends": [
                {
                    "name": "influxdb-2-1",
                    "url": "http://127.0.0.1:8088",
                    "username": "root",
                    "password": "123456",
                    "auth_encrypt": false,
                    "write_only": false
                },
                {
                    "name": "influxdb-2-2",
                    "url": "http://127.0.0.1:8089",
                    "username": "root",
                    "password": "123456",
                    "auth_encrypt": false,
                    "write_only": false
                }
            ]
        }
    ],
    "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": "root",
    "password": "123456",
    "auth_encrypt": false,
    "write_tracing": false,
    "query_tracing": false,
    "pprof_enabled": false,
    "https_enabled": false,
    "https_cert": "",
    "https_key": ""
}

启动代理:

./influx-proxy -config proxy.json

5. Nginx负载

参考文章:

InfluxDB1.1.0和1.8.0版本安装并开启web界面

InfluxDB安装及使用

Influx Proxy 说明文档 v2.5.10

你可能感兴趣的:(数据库,InfluxDB)