DolphinDB单机、多机(virtualbox+centos)搭建及遇到的bug
参考资料 :https://gitee.com/dolphindb/Tutorials_CN/tree/master#/dolphindb/Tutorials_CN/blob/master/multi_machine_cluster_deploy.md
dolphindb下载地址:https://dolphindb.com/alone/alone.php?id=75
单机单节点
windows
解压后直接运行dolphindb.bat即可运行。
通过查看dolphindb.cfg可以看到默认的localSite是localhost:8848,运行模式是mode=single所以已经单机启动。
通过浏览器输入:localhost:8848即可访问web界面,右上角登录(admin 123456)后即可使用web页面。
Linux
解压后
cd ./dolphindb/server
./dolphindb.sh
访问web界面方法与windows相同
测试
在datanode执行代码
db=database("dfs://db1",VALUE,1 2 3)
timestamp = [09:34:07,09:36:42,09:36:51,09:36:59,09:32:47,09:35:26,09:34:16,09:34:26,09:38:12]
sym = `C`MS`MS`MS`IBM`IBM`C`C`C
price= 49.6 29.46 29.52 30.02 174.97 175.23 50.76 50.32 51.29
qty = 2200 1900 2100 3200 6800 5400 1300 2500 8800
t = table(timestamp, sym, qty, price)
dt=db.createTable(t,`dt).append!(t)
select * from dt;
通过DFS Explorer可以查看保存的数据
单机多节点
在dolphindb/server/clusterDemo中已经有了单机多节点的配置样例。
通过查看配置文件可以得到这个单机多节点的结构。
运行startAgent.bat 和 startController.bat即可启动服务。
利用GUI连接datanode
注意,选择节点必须是datanode
点击test即可查看连接情况
执行上方的测试语句
多机多节点
虚拟机群搭建
网络配置
该部分采用windows作为宿主机,virtualbox+centos三台虚拟机构建集群,虚拟机与主机之间通过两张网卡(网卡1:连接方式为网络地址转换NAT来实现虚拟机可以访问外部网络,网卡2:连接方式为仅主机(Host-Only)网络)
在windows网络适配器中对virtualbox虚拟网卡进行ip设置
安装centos
该部分略过,参考资料:https://blog.csdn.net/weixin_45115705/article/details/100538773
配置centos网卡,实现静态ip,实现宿主机与虚拟机,虚拟机与虚拟机之间可以ping通
通过ifconfig命令可以看到enp0s8网卡是我们设置好的用于主机Host-Only的网卡,因此对该网卡进行设置。
cd /etc/sysconfig/network-scripts/
cp ifcfg-enp0s3 ifcfg-enp0s8 # 如果没有ifcfg-enp0s8则拷贝ifcfg-enp0s3网卡配置
sudo vi ifcfg-enp0s8
将如下内容进行修改,注意UUID必须与ifcfg-enp0s3不同,随意改一个数就可以。
systemctl restart network # 重新启动network服务
ping 192.168.56.1 #ping主机ip的网卡地址
主机再ping虚拟机发现也可以ping通。
集群配置
通过对刚才配置好的虚拟机复制两次,得到了三台虚拟机,复制过程需要注意MAC地址设定,然后再依照刚才的方法进行网卡配置,实现三台虚拟机之间,虚拟机宿主机之间可以相互ping通,此时集群准备完毕。集群架构如下图:
Dolphindb三机集群配置
首先将下载的Linux版本的dolphindb下载至三台linux中。
集群配置如下图:
controller配置
为了方便起见,再server目录下创建data、config、log目录,controller再config目录中需要配置
controller.cfg
cluster.nodes
cluster.cfg
controller.cfg内容:
localSite=192.168.56.101:8990:master
localExecutors=3
maxConnections=512
maxMemSize=16
webWorkerNum=4
workerNum=4
dfsReplicationFactor=1
dfsReplicaReliabilityLevel=0
dataSync=1
cluster.cfg内容:
maxConnections=512
maxMemSize=32
workerNum=8
localExecutors=7
webWorkerNum=2
newValuePartitionPolicy=add
chunkCacheEngineMemSize=1
lanCluster=0
cluster.nodes内容:
localSite,mode
192.168.56.102:8960:P1-agent,agent
192.168.56.102:8961:P1-NODE1,datanode
192.168.56.103:8960:P2-agent,agent
192.168.56.103:8961:P2-NODE1,datanode
agent配置
为了方便起见,再server目录下创建data、config、log目录,controller再config目录中需要配置
agent.cfg
workerNum=3
localExecutors=2
maxMemSize=4
localSite=192.168.56.102:8960:P1-agent
controllerSite=192.168.56.101:8990:master
lanCluster=0
遇到的问题:
- 在按照官方教程进行搭建的时候并没有要求lanCluster参数,导致controller的web服务无法启动,报错
<ERROR> :Shut down the subscription daemon.
<ERROR> :The socket server ended.
通过配置参数详情可以知道:lanCluster=1集群是否建立在 LAN(local area network) 上。若为 true,心跳采用 UDP 协议;若为 false,心跳采用 TCP 协议。默认值为 true。对部署在云上的集群,应当设为 false。
解决问题后就可正常访问了