帮助文档
专业提供香港服务器、香港云服务器、香港高防服务器租用、香港云主机、台湾服务器、美国服务器、美国云服务器vps租用、韩国高防服务器租用、新加坡服务器、日本服务器租用 一站式全球网络解决方案提供商!专业运营维护IDC数据中心,提供高质量的服务器托管,服务器机房租用,服务器机柜租用,IDC机房机柜租用等服务,稳定、安全、高性能的云端计算服务,实时满足您的多样性业务需求。 香港大带宽稳定可靠,高级工程师提供基于服务器硬件、操作系统、网络、应用环境、安全的免费技术支持。
服务器资讯 / 香港服务器租用 / 香港VPS租用 / 香港云服务器 / 美国服务器租用 / 台湾服务器租用 / 日本服务器租用 / 官方公告 / 帮助文档
Influxdb Cluster集群部署
发布时间:2024-03-06 07:08:10   分类:帮助文档
Influxdb Cluster集群部署




准备工作
确定安装版本
1、此次安装选择的是influxdb-cluster集群部署方案,参考项目开源地址为:https://github.com/chengshiwen/influxdb-cluster/wiki,选择的版本为v1.8.10-c1.2.0。

下载地址
https://github.com/chengshiwen/influxdb-cluster/releases

下载命令
# 注意机器版本
wget https://github.com/chengshiwen/influxdb-cluster/releases/download/v1.8.10-c1.1.2/influxdb-cluster_1.8.10-c1.1.2_linux_amd64.tar.gz

验证端口是否占用
1、influxdb使用的默认端口号为分别为用于meta集群内部服务的8091端口,meta节点通信的8089端口,data集群内部服务的8088端口,以及data节点对外提供http服务的8086端口。
2、通过 lsof -i :端口号 命令检查端口占用情况,如果存在占用需要进行修改
3、如果存在修改端口后发现在添加meta节点进入集群时出现报错并提示出修改前的端口,需要手动删除指定存放meta数据的目录再进行添加。

注意以上端口都为默认端口,可以在配置文件中进行修改
Meta节点说明和要求
1、确定部署机器数量,Meta节点至少需要三个,如果超过三个也必须为奇数个节点(官方不建议超过三个)。如果只有一个Meta节点那需要在启动该单个Meta节点时添加-single-server标志。
2、建议不要在同一服务器上部署多个Meta节点,因为如果该特定服务器无响应,它会产生更大的潜在故障。InfluxDB Cluster建议在占用空间相对较小的服务器上部署Meta节点。
3、Meta节点可以与Data节点部署在同一台物理机上,不过最好的情况是都分开部署

Data节点说明和要求
1、InfluxDB Cluster需要至少两个Data节点才能实现高可用性和冗余。
2、InfluxDB Cluster没有负载均衡功能,所以需要借助Nginx或其他有相同功能的应用进行负载均衡,在负载均衡应配置data节点对外提供http服务的8086端口。

主机配置
修改主机名
1、确定集群机器后,在每一台主机的/etc/hosts文件添加主机ip与主机名的映射(当然如果您希望使用IP地址,可忽略该步骤),示例如下:
172.168.1.176 influxdb-cluster-1
172.168.1.167 influxdb-cluster-15
172.168.1.182 influxdb-cluster-18
172.168.1.171 influxdb-cluster-5

验证主机间连通性
1、使用ping命令进行验证,示例如下:
ping -qc 1 influxdb-cluster-1
ping -qc 1 influxdb-cluster-15
ping -qc 1 influxdb-cluster-18
ping -qc 1 influxdb-cluster-5

目录创建
# 创建influxdb所需目录
mkdir -p influx/{meta,data,wal,hh}

配置Meta节点集群
确定配置机器
influxdb-cluster-1
influxdb-cluster-15
influxdb-cluster-5

配置步骤
注:确定部署Meta节点的每台机器都需做如下配置
1、编辑meta节点配置文件 vim influxdb-cluster-1.8.10-c1.1.2-1/etc/influxdb/influxdb-meta.conf
2、主要修改的项为以下几处:
bind-address = ":8091"
hostname = "influxdb-cluster-1"
[meta]
# Directory where cluster meta data is stored.
dir = "/data/ops/home-influxdb/influx/meta"

# The default address for meta node communication
bind-address = ":8089"

# The default address to bind the API to.
http-bind-address = ":8091"

3、修改完成后启动Meta节点, 启动命令如下:
nohup ./influxdb-cluster-1.8.10-c1.1.2-1/usr/bin/influxd-meta -config influxdb-cluster-1.8.10-c1.1.2-1/etc/influxdb/influxdb-meta.conf > nohup.out 2>&1 &

4、验证各机器上data节点是否正常启动,命令如下:
ps -ef | grep meta

5、启动完成后,在任意一个Meta节点上,加入所有Meta节点,包括它自己。加入的命令如下(下列命令都在hebsjzx-1plusn-86-qt-1执行):
./influxdb-cluster-1.8.10-c1.1.2-1/usr/bin/influxd-ctl add-meta influxdb-cluster-1:8091
./influxdb-cluster-1.8.10-c1.1.2-1/usr/bin/influxd-ctl add-meta influxdb-cluster-15:8091
./influxdb-cluster-1.8.10-c1.1.2-1/usr/bin/influxd-ctl add-meta influxdb-cluster-5:8091

预期的输出为:Added meta node 1 at influxdb-cluster-1:8091
6、验证节点是否正确加入,在任意一台Meta节点机器上使用如下命令:
./influxdb-cluster-1.8.10-c1.1.2-1/usr/bin/influxd-ctl show
预期的输出为:
Data Nodes
==========
ID TCP Address Version

Meta Nodes
==========
ID TCP Address Version
1 influxdb-cluster-1:8091 1.8.10-c1.1.2
2 influxdb-cluster-15:8091 1.8.10-c1.1.2
3 influxdb-cluster-5:8091 1.8.10-c1.1.2
7、至此Meta集群搭建完成

配置Data节点集群
确定配置机器
influxdb-cluster-1
influxdb-cluster-15
influxdb-cluster-18
influxdb-cluster-5

配置步骤
注:确定部署Data节点的每台机器都需做如下配置
1、编辑Data节点配置文件 vim influxdb-cluster-1.8.10-c1.1.2-1/etc/influxdb/influxdb.conf
2、主要修改的项为以下几处:
# The TCP bind address to use for cluster-internal services.
bind-address = ":8088"

# Hostname advertised by this host for remote addresses. This must be resolvable by all
# other nodes in the cluster.
hostname = "influxdb-cluster-1"
[meta]
# Directory where the cluster metadata is stored.
dir = "/data/ops/home-influxdb/influx/meta"

[data]
# The directory where the TSM storage engine stores TSM files.
dir = "/data/ops/home-influxdb/influx/data"

# The directory where the TSM storage engine stores WAL files.
wal-dir = "/data/ops/home-influxdb/influx/wal"
[http]
# The bind address used by the HTTP service.
bind-address = ":8086"

[hinted-handoff]
# The directory where the hinted handoff queues are stored.
dir = "/data/ops/home-influxdb/influx/hh"
3、修改完成后启动Data节点, 启动命令如下:
nohup ./influxdb-cluster-1.8.10-c1.1.2-1/usr/bin/influxd -config influxdb-cluster-1.8.10-c1.1.2-1/etc/influxdb/influxdb.conf > datanode.out 2>&1 &

4、验证各机器上data节点是否正常启动,命令如下:
ps -ef | grep influxd
5、Data 节点在未被加入集群之前,出现 Failed to create storage,failed to store statistics 或 meta service unavailable 日志是正常情况。

6、将Data节点加入集群,在任意一台Data节点,命令如下:
./influxdb-cluster-1.8.10-c1.1.2-1/usr/bin/influxd-ctl add-data influxdb-cluster-1:8088
./influxdb-cluster-1.8.10-c1.1.2-1/usr/bin/influxd-ctl add-data influxdb-cluster-15:8088
./influxdb-cluster-1.8.10-c1.1.2-1/usr/bin/influxd-ctl add-data influxdb-cluster-18:8088
./influxdb-cluster-1.8.10-c1.1.2-1/usr/bin/influxd-ctl add-data influxdb-cluster-5:8088
预期的输出为:Added data node 7 at influxdb-cluster-1:8088

7、验证节点是否正确加入,在任意一台Meta节点机器上使用如下命令:
./influxdb-cluster-1.8.10-c1.1.2-1/usr/bin/influxd-ctl show
预期的输出为:
Data Nodes
==========
ID TCP Address Version
4 influxdb-cluster-1:8088 1.8.10-c1.1.2
5 influxdb-cluster-15:8088 1.8.10-c1.1.2
6 influxdb-cluster-18:8088 1.8.10-c1.1.2
7 influxdb-cluster-5:8088 1.8.10-c1.1.2

Meta Nodes
==========
ID TCP Address Version
1 influxdb-cluster-1:8091 1.8.10-c1.1.2
2 influxdb-cluster-15:8091 1.8.10-c1.1.2
3 influxdb-cluster-5:8091 1.8.10-c1.1.2

8、至此Data集群搭建完成

配置Data节点JWT访问
注意:创建用户后再增加该配置
1、在未设置Jwt访问前启动Data节点并使用./influxdb-cluster-1.8.10-c1.1.2-1/usr/bin/influx 进入并创建用户,创建用户并赋权的语句如下:
# 创建用户并赋予全部权限
create user admin with password 'admin' with all privileges:
# 创建用户只服务写权限,ALL为全部权限,WRITE为写,READ为读权限,多权限以逗号分割
create user pxq with password 'pxq'
GRANT WRITE ON test TO pxq
2、编辑Data节点配置文件 vim influxdb-cluster-1.8.10-c1.1.2-1/etc/influxdb/influxdb.conf
3、主要修改的项为以下几处:
[http]
# Determines whether user authentication is enabled over HTTP/HTTPS.
# 开启
auth-enabled = true
# The JWT auth shared secret to validate requests using JSON web tokens.
# token加密字符串
shared-secret = "XXXX"

4、生成token,网站:https://jwt.io/,生成规则如下:
HEADER:{
"alg": "HS256",
"typ": "JWT"
}
PAYLOAD:{
"username": "pxq", # 用户名
"exp": 1679642512 # 过期时间
}
# 主要为最后那串字符使用influxdb.conf中shared-secret配置的字符串
VERIFY SIGNATURE:
HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload),I don't even know what it is)

5、验证是否成功
curl -XPOST "http://172.168.1.176:8086/query?db=test" --data-urlencode "q=Select * from Test" --header "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.xxxx.5rcJ_-YeJsZ3XjRtxwe7kzH_4e__2btz0pEw_GQ8OJs"
权限不足将提示:{"error":"error authorizing query: pxq not authorized to execute statement 'SELECT * FROM Test', requires READ on test"}
正常将提示展示结果



配置负载均衡
由于InfluxDB Cluster 不能用作负载均衡器,故需要配置
1、nginx配置于/data/ops/nginx/目录
2、具体配置如下:
upstream influxdb {

server influxdb-cluster-1:8086;
server influxdb-cluster-15:8086;
server influxdb-cluster-18:8086;
server influxdb-cluster-5:8086;
}
server {

listen 8888;

server_name localhost;

location /influx/ {
proxy_set_header Host $proxy_host;
proxy_pass http://influxdb/;

}

}
3、对外统一访问地址:http://192.168.1.2:8888/influx
例如访问查询test库Test表全部数据:curl -XPOST "http://192.168.1.2:8888/influx/query?db=test" --data-urlencode "q=Select * from Test" --header "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiZXhwIjoxNjc5NjQyNTEyfQ.7mIPMjB60kFGFQuTSyf7KvYF921MkMmL662_icTfvRQ"





香港云服务器租用推荐
服务器租用资讯
·广东云服务有限公司怎么样
·广东云服务器怎么样
·广东锐讯网络有限公司怎么样
·广东佛山的蜗牛怎么那么大
·广东单位电话主机号怎么填写
·管家婆 花生壳怎么用
·官网域名过期要怎么办
·官网邮箱一般怎么命名
·官网网站被篡改怎么办
服务器租用推荐
·美国服务器租用
·台湾服务器租用
·香港云服务器租用
·香港裸金属服务器
·香港高防服务器租用
·香港服务器租用特价