TDEngine2.0在Docker集群网络环境中的使用

背景场景

自TDEngine从1.0开始我们就一直试图使TDEngine容器化来适配我们现有的微服务场景。TDEngine容器化之后有诸多好处:①方便部署升级运维不依赖宿主环境情况  ②安全,在容器网络中,不做端口映射外部无法获取数据 ③方便迁移和备份。在1.0版本由于诸多原因没有利用容器化的方式使用TDEngine,这次2.0升级通过我们多方共同努力,最终使TDEngine2.0不仅可以满足于生产集群化部署,也方便本地调试和测试。

Docker集群创建

Docker集群网络这一块,我们使用的是Docker Swarm来作为网络搭建的基础。先创建Docker集群。

docker swarm init

docker swarm join-token manager


集群创建示意

其他Docker节点根据令牌加入Docker集群。

已经创建的集群

这个节点全部加入集群后的效果。我们的方案是在集群网络的3台云主机上部署TDEngine以及配套的服务。

集群网络搭建

预先创建集群网络,使TDEngine各个Docker节点能够跨主机组网。

docker network create -d overlay --attachable --subnet 10.10.68.0/24  tdengine_v2_net


创建后的集群网络

TDEngine数据库集群创建

创建TDEngine数据库集群之前我们需要先做几个准备工作:

① 构造TDEngine版本镜像。(目前官方提供了开源版的镜像,企业版需要自己编译)

② 确定各个节点的网络信息(包括IP分配、主机名称等)。

③ 创建TDEngine各个节点的配置文件信息。

④ 节点docker-compose.yml启动信息。

针对①的镜像构造Dockerfile:

FROM centos:8 as builder

ARG PACKAGE=TDengine-enterprise-server-1.6.5.10-Linux-x64.tar.gz

ARG EXTRACTDIR=TDengine-enterprise-server

ARG CONTENT=taos.tar.gz

WORKDIR /root

COPY ${PACKAGE} .

RUN tar -zxf ${PACKAGE} && \

mv ${EXTRACTDIR}/driver ./lib && \

tar -zxf ${EXTRACTDIR}/${CONTENT}


FROM centos:8

WORKDIR /root

RUN yum install -y glibc-langpack-en dmidecode gdb

COPY --from=builder /root/bin/taosd /usr/bin

COPY --from=builder /root/bin/taos /usr/bin

COPY --from=builder /root/cfg/taos.cfg /etc/taos/

COPY --from=builder /root/lib/libtaos.so.* /usr/lib/libtaos.so.1

ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib"

ENV LC_CTYPE=en_US.UTF-8

ENV LANG=en_US.UTF-8

EXPOSE 6030-6041/tcp 6060/tcp 6030-6039/udp

VOLUME [ "/var/lib/taos", "/var/log/taos", "/etc/taos" ]

CMD [ "taosd" ]

针对②网络信息:

tdengine_v2_node1 -> 10.10.68.10

tdengine_v2_node2 -> 10.10.68.11

tdengine_v2_node3 -> 10.10.68.12

针对③各节点配置信息:

taos1.cfg

firstEp  10.10.68.10:6030

secondEp 10.10.68.11:6030

fqdn     10.10.68.10

balance  0

taos2.cfg

firstEp  10.10.68.10:6030

secondEp 10.10.68.11:6030

fqdn     10.10.68.11

balance  0 

taos3.cfg

firstEp  10.10.68.10:6030

secondEp 10.10.68.11:6030

fqdn     10.10.68.11

balance  0  

针对④的启动信息

version: '3.7'

networks:

  tdengine_v2_net:

    external: true

services: 

  tdengine-node1:

    build:

      context: .

      args:

        - PACKAGE=TDengine-enterprise-server-2.0.3.1-Linux-x64.tar.gz

    image: tdengine_ee

    container_name: tdengine_v2_node1

    hostname: tdengine_v2_node1

    cap_add:

      - ALL

    stdin_open: true

    tty: true

    environment:

      TZ: "Asia/Shanghai"

    command: >

      sh -c "ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && 

      echo $TZ > /etc/timezone &&

      exec my-main-application"

    volumes: 

      # bind data directory

   - type: bind

        source: /mydata/node1/data

        target: /var/lib/taos

      # bind log directory

      - type: bind

        source: /mydata/node1/log

        target: /var/log/taos

      # bind configuration

      - type: bind

        source: /mydata/node1/cfg

        target: /etc/taos

      - type: bind

        source: /root/tdengine

        target: /root/tdengine

    networks:

        tdengine_v2_net:

            ipv4_address: 10.10.68.10

    restart: always

    command: taosd

其他几个节点配置信息和上述节点类似,修改对应的名称即可。

TDEngine集群启动以及动态配置

集群中的每个节点分别启动之后,需要进入主节点中打开taos shell,在里面手动创建集群节点。使用命令

 create dnode “tdengine_v2_node2”; 

create dnode “tdengine_v2_node3”;


创建集群节点


从上图演示实例中可以看出集群已经成功创建并且运行了


业务服务访问TDEngine数据库以及使用

目前TDEngine数据库已经正式支持了JDBC和MyBatis,利用SpringBoot框架可以很轻松的访问。目前服务也都是容器化,需要容器做3出修改就可以访问TDEngine集群:

① 使业务服务和TDEngine处于同一docker网络。就是之前配置的:tdengine_v2_net

② 配置taos.cfg到/etc/taos/taos.cfg(从主节点复制一份即可)

③ 配置与服务端配套的libtaos.so到/usr/lib/libtaos.so(一定得是相同版本,否则会无法访问)


数据库连接状态

通过show connections;客户端已经成功连接!至此本次分享已经都结束了,当然通过这个案例读者还可以将集成程度做的更高,最终思想和流程就是以上分享中所描述的。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335