首页 > 其他分享 >docker-compose 搭建 InfluxDB Cluster

docker-compose 搭建 InfluxDB Cluster

时间:2022-11-08 18:03:46浏览次数:41  
标签:compose 01 influxdb Cluster meta docker data 节点

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'"

标签:compose,01,influxdb,Cluster,meta,docker,data,节点
From: https://www.cnblogs.com/klvchen/p/16870596.html

相关文章

  • docker 镜像仓库之私有云单机仓库Docker Registry
    Docker仓库分为公有云仓库和私有云仓库公有云仓库:由互联网公司对外公开的仓库官方阿里云等第三方仓库私有云仓库:组织内部搭建的仓库,一般只为组织内部使......
  • docker安装LuaJIT WEB应用防火墙
    安装包请见https://www.jianshu.com/p/b81656764613Dockerfile#FROMubuntuFROMcentosMAINTAINERG00G1SCOPYnginx-1.16.0/usr/local/src/nginx-1.16.0COPYLua......
  • Docker 知识汇总
    centos安装docker#!/bin/bashsudoyumremovedocker\docker-client\docker-client-latest\docker-com......
  • Docker笔记
    安装安装yum工具yuminstall-yyum-utils\device-mapper-persistent-data\lvm2--skip-broken更新本地镜像源#设置docker镜像源yum......
  • docker 命令学习
    启动docker-compose:docker-composeup-d列出所有容器:docker-composeps停止容器:docker-composestop停止正在运行的容器,可以通过docker-composestart再次启动查......
  • Springboot +Docker 架构的项目中,怎么修改设置JVM堆内存的大小?
    在项目的dockerfile文件中设定      【参数解析】在Java应用程序启动时,添加如下参数并设置大小:参数说明-Xmx设置JVM最大可用堆内存大小......
  • docker 搭建过程,(公司内部中间件)
    //1安装mq//解压文件[root@localhostjyw]#unziprocketmq-4.5.zipArchive:rocketmq-4.5.zipcreating:rocketmq-4.5/inflating:rocketmq-4.5/docker-compo......
  • docker-compose下的java应用启动顺序两部曲之二:实战
    欢迎访问我的GitHub这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos上篇回顾本文是《docker-compose下的java应用启动顺序两部曲》......
  • docker 安装jenkins
    1.dockerpulljenkins/jenkins 2.创建Jenkins挂载目录并授权权限(我们在服务器上先创建一个jenkins工作目录/var/jenkins_mount,赋予相应权限,稍后我们将jenkins容器目录......
  • docker运行 [4256] INTERNAL ERROR
    现象突然有反馈说线上部分接口加载不出来登上系统查看,确实有几个接口状态码是200,就是没数据,控制台异常的接口报错显示net::ERR_INCOMPLETE_CHUNKED_ENCODING200(OK)......