时序数据库DolphinDB基于Docker的集群部署教程

Docker是一个开源的引擎,可以轻松地为任何应用创建一个轻量级的、可移植的、自给自足的容器。DolphinDB database 提供了基于docker的分布式集群部署包,可以让用户方便快捷的部署DolphinDB分布式集群。

本教程的目标是通过4个centos容器搭建一个5节点的多机集群,最终搭建好的集群情况如下:

时序数据库DolphinDB基于Docker的集群部署教程_第1张图片

部署分布式集群时,需要分别配置控制器节点(controller)、代理节点(agent)和数据节点(datanode)的网络IP和端口。本教程提供的部署包,通过docker容器间构建虚拟子网,为4个容器分别指定了从10.5.0.2到10.5.0.5 四个固定IP地址。包含这些信息的配置文件已经内置到部署包中,用户无需再手工一一指定。内置的网络IP及端口分配情况如下:

controller.cfg:

localSite=10.5.0.5:8888:master

agent1.cfg:

mode=agent
localSite=10.5.0.2:8710:P1-agent,agent
controllerSite=10.5.0.5:8888:master

cluster.nodes:

localSite,mode
10.5.0.2:8710:P1-agent,agent
10.5.0.2:8711:P1-node1,datanode
10.5.0.2:8712:P1-node2,datanode
10.5.0.3:8810:P2-agent,agent
10.5.0.3:8811:P2-node1,datanode
10.5.0.3:8812:P2-node2,datanode
10.5.0.4:8910:P3-agent,agent
10.5.0.4:8911:P3-node1,datanode

由于在docker虚拟网络环境下UDP协议无法正常运作,所以需要在agent.cfg和cluster.cfg中加上配置项lanCluster=0,此配置项在部署包中的配置文件中已默认添加。

在部署集群前,需要先搭建好docker环境,具体可以参考docker安装教程、docker-compose安装教程。

1.下载并编译DolphinDB docker集群部署包

从https://github.com/dolphindb/Tutorials_CN/blob/master/docker/DolphinDB-Docker-Compose.zip下载DolphinDB docker部署包。

通过以下步骤得到一个包含最新版本DolphinDB server的镜像文件:

cd ./DolphinDB-Docker-Compose/Dockerbuild
docker build -t ddb:latest ./

编译完成后,使用docker images查看:

$ docker images
REPOSITORY  TAG IMAGE ID  CREATED SIZE
ddb latest  4268ac618977  5 seconds ago 420MB

2.替换部署包中的license文件

社区版中的license文件无法支持部署5个数据节点和1个控制节点,因此需要申请支持6个以上节点的企业版license,并将企业版license文件dolphindb.lic放到./cfg文件目录下。

3.创建controller和agent所需容器,并启动容器

容器中的默认启动脚本会自动启动控制节点和代理节点。

cd ./DolphinDB-Docker-Compose
docker-compose up -d

执行后输出的结果如下:

$ docker-compose up -d
Creating network "20190121-dolphindb-docker-compose_dbnet" with driver "bridge"
Creating ddbcontroller ... done
Creating ddbagent2     ... done
Creating ddbagent3     ... done
Creating ddbagent1     ... done

4.查看集群

通过上述步骤,已经完成了分布式集群的创建、启动和初始化工作。访问地址http://localhost:8888即可访问集群管理的web页面。在Web中启动所有数据节点,最终界面如下:

时序数据库DolphinDB基于Docker的集群部署教程_第2张图片

你可能感兴趣的:(时序数据库使用教程,docker,dolphindb,数据库,分布式,hadoop)