InfluxDB Cluster 官网

GitHub:chengshiwen/influxdb-cluster
Wiki 文档:chengshiwen/influxdb-cluster/wiki
下载地址:chengshiwen/influxdb-cluster/releases

网络架构图

端口说明
Meta 节点通过 TCP 协议和 Raft 共识协议相互通信,默认都使用端口 8089,此端口必须在 Meta 节点之间是可访问的。默认 Meta 节点还将公开绑定到端口 8091 的 HTTP API,influxd-ctl 命令使用该 API。

Data 节点通过绑定到端口 8088 的 TCP 协议相互通信。Data 节点通过绑定到 8091 的 HTTP API 与 Meta 节点通信。这些端口必须在 Meta 节点和 Data 节点之间是可访问的。

在集群内,所有 Meta 节点都必须与所有其它 Meta 节点通信。所有 Data 节点必须与所有其它 Data 节点和所有 Meta 节点通信。

服务器说明

IP 角色
172.16.16.119 influxdb-meta-01
172.16.16.120 influxdb-meta-02, influxdb-data-01
172.16.16.121 influxdb-meta-03, influxdb-data-02

1.Meta 节点要求
InfluxDB Cluster 需要 至少三个 Meta 节点 和 奇数个 Meta 节点 以实现高可用和冗余。不建议超过三个 Meta 节点,除非您的服务器之间的通信存在长期可靠性问题。

2.Data 节点要求
InfluxDB Cluster 需要 至少两个 Data 节点 才能实现高可用性和冗余。您需要配置自己的负载均衡器以将客户端流量发送到端口 8086(HTTP API 的默认端口)。

部署前准备

# 3台服务器都需要做如下准备 
1. 安装 docker 
2. 安装 docker-compose
3. 同步时间
4. 关闭防火墙
5. 关闭 selinux
6. 添加 hosts 解析 (重要)
cat >> /etc/hosts << EOF
172.16.16.119 influxdb-meta-01
172.16.16.120 influxdb-meta-02 influxdb-data-01
172.16.16.121 influxdb-meta-03 influxdb-data-02
EOF

部署 Meta 节点

# 在 172.16.16.119 上 部署 influxdb-meta-01
mkdir -p /data/docker-compose/influxdb-meta-01
cd /data/docker-compose/influxdb-meta-01

cat >> docker-compose.yml << EOF 
version: "3.5"
services:
  influxdb-meta-01:
    image: chengshiwen/influxdb:1.8.10-c1.1.1-meta
    container_name: influxdb-meta-01
    hostname: influxdb-meta-01
    restart: unless-stopped
    deploy:
      resources:
        limits:
          cpus: '2'
          memory: 3G
    network_mode: "host"
    volumes:
      - ./data:/var/lib/influxdb
EOF

docker-compose up -d

# 在 172.16.16.120 上 部署 influxdb-meta-02
mkdir -p /data/docker-compose/influxdb-meta-02
cd /data/docker-compose/influxdb-meta-02

cat >> docker-compose.yml << EOF 
version: "3.5"
services:
  influxdb-meta-02:
    image: chengshiwen/influxdb:1.8.10-c1.1.1-meta
    container_name: influxdb-meta-02
    hostname: influxdb-meta-02
    restart: unless-stopped
    deploy:
      resources:
        limits:
          cpus: '2'
          memory: 3G
    network_mode: "host"
    volumes:
      - ./data:/var/lib/influxdb
EOF

docker-compose up -d

# 在 172.16.16.121 上 部署 influxdb-meta-03
mkdir -p /data/docker-compose/influxdb-meta-03
cd /data/docker-compose/influxdb-meta-03

cat >> docker-compose.yml << EOF 
version: "3.5"
services:
  influxdb-meta-03:
    image: chengshiwen/influxdb:1.8.10-c1.1.1-meta
    container_name: influxdb-meta-03
    hostname: influxdb-meta-03
    restart: unless-stopped
    deploy:
      resources:
        limits:
          cpus: '2'
          memory: 3G
    network_mode: "host"
    volumes:
      - ./data:/var/lib/influxdb
EOF

docker-compose up -d

部署 Data 节点

# 在 172.16.16.120 上 部署 influxdb-data-01
mkdir /data/docker-compose/influxdb-data-01
cd /data/docker-compose/influxdb-data-01

cat >> docker-compose.yml << EOF 
version: "3.5"
services:
  influxdb-data-01:
    image: chengshiwen/influxdb:1.8.10-c1.1.1-data
    container_name: influxdb-data-01
    hostname: influxdb-data-01
    restart: unless-stopped
    deploy:
      resources:
        limits:
          cpus: '2'
          memory: 3G
    network_mode: "host"
    volumes:
      - ./data:/var/lib/influxdb
EOF 

docker-compose up -d

# 在 172.16.16.121 上 部署 influxdb-data-02
mkdir /data/docker-compose/influxdb-data-02
cd /data/docker-compose/influxdb-data-02

cat >> docker-compose.yml << EOF 
version: "3.5"
services:
  influxdb-data-02:
    image: chengshiwen/influxdb:1.8.10-c1.1.1-data
    container_name: influxdb-data-02
    hostname: influxdb-data-02
    restart: unless-stopped
    deploy:
      resources:
        limits:
          cpus: '2'
          memory: 3G
    network_mode: "host"
    volumes:
      - ./data:/var/lib/influxdb
EOF 

docker-compose up -d

启动集群

# 在 172.16.16.119 上操作
docker exec -it influxdb-meta-01 bash
influxd-ctl add-meta influxdb-meta-01:8091
influxd-ctl add-meta influxdb-meta-02:8091
influxd-ctl add-meta influxdb-meta-03:8091
influxd-ctl add-data influxdb-data-01:8088
influxd-ctl add-data influxdb-data-02:8088
influxd-ctl show

测试

# 在 172.16.16.119 上操作
# 创建数据库
curl -XPOST "http://influxdb-data-01:8086/query" --data-urlencode "q=CREATE DATABASE mydb WITH REPLICATION 2"

# 写入数据
curl -XPOST "http://influxdb-data-01:8086/write?db=mydb" \
-d 'cpu,host=server01,region=uswest load=42 1434055562000000000'

curl -XPOST "http://influxdb-data-02:8086/write?db=mydb&consistency=all" \
-d 'cpu,host=server02,region=uswest load=78 1434055562000000000'

curl -XPOST "http://influxdb-data-02:8086/write?db=mydb&consistency=quorum" \
-d 'cpu,host=server03,region=useast load=15.4 1434055562000000000'

# 查询数据
curl -G "http://influxdb-data-02:8086/query?pretty=true" --data-urlencode "db=mydb" \
--data-urlencode "q=SELECT * FROM cpu WHERE host='server01' AND time < now() - 1d"

# 分析数据
curl -G "http://influxdb-data-02:8086/query?pretty=true" --data-urlencode "db=mydb" \
--data-urlencode "q=SELECT mean(load) FROM cpu WHERE region='uswest'"

原文地址:http://www.cnblogs.com/klvchen/p/16870596.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性