在业务发展初期,资源有限的情况下,为了提高系统的可用性,我们会搭建一个伪高可用环境。伪高可用集群的特点在于其控制节点的元数据文件虽然有多副本,但存在多副本在同一台服务器的情况。与伪高可用集群不同,高可用集群控制节点的元数据文件副本均分布在不同的服务器上,确保在服务器故障或其他问题发生时系统能够保持稳定运行。这种架构设计提供了更强大的容错能力和可靠性,是业务规模扩大后的理想选择。因此,在业务可行并确保资源充足的情况下,我们推荐将伪高可用集群迁移升级为高可用集群,以提升系统的稳定性和可靠性。
接下来,我们将详细介绍如何搭建伪高可用集群,以及如何从伪高可用集群迁移到真正的高可用集群。
DolphinDB 集群的高可用主要体现在数据高可用(多副本机制)、元数据高可用(controller 高可用)、客户端高可用(API 指定多个 data node site,支持断连切换)。
1.2.1 单节点特点
controller、agent、data node、compute node 部署在同一个物理机器上。对于 data node 和 compute node 只有一个。无法保证高可用,该服务器宕机会导致整体服务不可用。单节点模式拥有与集群模式相同的功能,区别在于单节点模式不支持扩展节点和高可用,而集群模式可以方便地扩展到多个服务器节点以及支持高可用。无法保证高可用,该服务器宕机会导致整体服务不可用。
1.2.2 伪分布式集群特点
controller、agent、data node、compute node 部署在同一个物理机器上。在该服务器上面只有一个 controller,无法满足高可用的特性。但是可以部署多个 data node 和 compute node 来充分利用机器的资源。
如果部署节点数超过3个,则需要申请申请企业版试用授权许可,因为社区版限制集群最大可部署节点总数为3。
1.2.3 伪高可用集群特点
伪高可用集群是满足了 controller 有奇数台的需求,但是会有多个 controller 运行在同一台服务器上面。如果拥有单个节点的服务器出现问题,只要满足活跃的 controller 大于半数,那么就仍可以提供服务。如果拥有多个 controller 的服务器出现宕机,那么整体服务将不可用。
1.2.4 高可用集群特点
高可用集群实现了数据高可用,元数据高可用和客户端高可用。每个 controller 运行在不同的服务器上面,这样的话即使 controller 集群宕机了一半,也还可以继续对外提供服务。
单服务器下的高可用为 controller 高可用,需要对不同的 controller 的存储目录写到不同的目录下面来构建单机伪高可用。
step1:下载 DolphinDB 安装包(本次安装以2.00.10.5为例)
step2:在服务器一(172.0.0.1)上执行如下命令解压到指定目录
unzip DolphinDB_Linux64_V2.00.10.5.zip -d /home/dolphindb_1;
step3:更新软件授权许可
社区版的 License 对内存,CPU核数和集群最大可部署节点总数有限制,所以需要申请企业版试用授权许可,替换掉?/home/dolphindb_1/server/dolphindb.lic
。
产品 - DolphinDB?www.dolphindb.cn/product#downloads
step4:在服务器一(172.0.0.1)执行如下命令复制多个安装包来搭建单机伪高可用集群环境
cp -r /home/dolphindb_1 /home/dolphindb_2;
cp -r /home/dolphindb_1 /home/dolphindb_3;
step5:修改服务器一(172.0.0.1)下的三个 dolphindb 安装包下面的配置文件
每个安装包下面都有这四个配置文件,具体内容需要根据实际环境以及配置进行修改。
详细配置文件见附件(单服务器部署伪高可用集群)。
step1:在每个 dolphindb 安装包下面执行如下命令,启动 controller 和 agent 进程
cd dolphindb_1/server/clusterdemo;
sh startController.sh
sh startAgent.sh
cd dolphindb_2/server/clusterdemo;
sh startController.sh
cd dolphindb_3/server/clusterdemo;
sh startController.sh
step2:在浏览器输入 172.0.0.1:9901 进入 Web 集群管理界面,启动该机的 data node
172.0.0.1:9901 不一定是 controller 的 leader 连接信息,登录该节点会显示 leader 节点是哪一个,点击跳转即可。
step3:执行建库建表语句
双服务器下的高可用为 controller 高可用,在一台机器上需要部署两个 controller 进程来模拟高可用。
step1:下载 DolphinDB 安装包(本次安装以2.00.10.5为例)
step2:在服务器一(172.0.0.1)和服务器二(172.0.0.2)上执行如下命令解压到指定目录
# 服务器一上执行
unzip DolphinDB_Linux64_V2.00.10.5.zip -d /home/dolphindb_1;
# 服务器二上执行
unzip DolphinDB_Linux64_V2.00.10.5.zip -d /home/dolphindb_2;
step3:更新软件授权许可
社区版的 License对内存,CPU 核数和集群最大可部署节点总数有限制,所以需要申请企业版试用授权许可,替换掉服务器一(172.0.0.1)上面的/home/dolphindb_1/server/dolphindb.lic
和服务器二(172.0.0.2)上面的/home/dolphindb_2/server/dolphindb.lic
。
产品 - DolphinDB?www.dolphindb.cn/product#downloads
step4:在服务器一(172.0.0.1)执行如下命令复制多个安装包来搭建伪高可用集群环境
cp /home/dolphindb_1 /home/dolphindb_3;
step5:修改服务器一(172.0.0.1)下的 dolphindb_1、dolphindb_3 和服务器二(172.0.0.2)下的dolphindb_2 的配置文件
每个安装包下面都有这四个配置文件,具体内容需要根据实际环境以及配置进行修改。
详细配置文件见附件(双服务器部署伪高可用集群)。
step1:在服务器一(172.0.0.1)下的 dolphindb_1 和 dolphindb_3 安装包下面以及服务器二(172.0.0.2)下的 dolphindb_2 安装包下面执行如下命令,启动 controller 和 agent 进程
# 在服务器一(172.0.0.1)下面执行如下命令
cd dolphindb_1/server/clusterdemo;
sh startController.sh
sh startAgent.sh
cd dolphindb_3/server/clusterdemo;
sh startController.sh
# 在服务器二(172.0.0.2)下面执行如下命令
cd dolphindb_2/server/clusterdemo;
sh startController.sh
sh startAgent.sh
step2:在浏览器输入 172.0.0.1:9901 进入 web 管理界面,把所有的 dataNode 节点启动起来
172.0.0.1:9901 不一定是 controller 的 leader 连接信息,登录该节点会显示 leader 节点是哪一个,点击跳转即可。
step3:登录任一 data node 创建库表信息,验证是否可以正常操作
4.2.1 配置迁移
配置迁移主要是将服务器一(172.0.0.1)下面的 dolphindb_2 和 dolphindb_3 安装包下面的配置迁移到服务器二(172.0.0.2)和服务器三(172.0.0.3)上面。
step1:在服务器一(172.0.0.1)上面执行如下命令关闭所有服务,然后备份现有配置文件
# 在服务器一上面执行如下命令
cd /home/dolphindb_1/server/clusterDemo;
sh stopAllNode.sh;
cp -r ./config ./config.bak
cd /home/dolphindb_2/server/clusterDemo;
sh stopAllNode.sh;
cp -r ./config ./config.bak
cd /home/dolphindb_3/server/clusterDemo;
sh stopAllNode.sh;
cp -r ./config ./config.bak
step2:执行如下命令将服务器一(172.0.0.1)上面的 dolphindb_2 和 dolphindb_3 安装包分别传输到服务器二(172.0.0.2)和服务器三(172.0.0.3)上面
scp /home/dolphindb_2 root@172.0.0.2:/home/dolphindb_2;
scp /home/dolphindb_3 root@172.0.0.3:/home/dolphindb_3;
step3:在服务器一(172.0.0.1)上面的 dolphindb_1 下面的 server/clusterDemo/config 下执行如下命令来修改所有涉及 controller 集群信息的配置文件以及在 cluster.nodes 添加新增的两个 controller
// 修改 controller 集群信息
sed -i.bak -E -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):controller1/172.0.0.1:\2:controller1/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):controller2/172.0.0.2:\2:controller2/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):controller3/172.0.0.3:\2:controller3/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):agent1/172.0.0.1:\2:agent1/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):agent2/172.0.0.2:\2:agent2/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):agent3/172.0.0.3:\2:agent3/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):node1/172.0.0.1:\2:\node1/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):node2/172.0.0.2:\2:node2/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):node3/172.0.0.3:\2:node3/' ./*
// 添加服务器二和服务器三的 agent
echo '172.0.0.2:9905:agent2,agent' >> cluster.nodes
echo '172.0.0.3:9906:agent3,agent' >> cluster.nodes
step4:在服务器二(172.0.0.2)上面的 dolphindb_2 下面的 server/clusterDemo/config 下执行如下命令来修改所有涉及 controller 集群信息的配置文件和修改服务器二的 agent 信息以及在 cluster.nodes 添加新增的两个 controller
// 修改 controller 集群信息和 agent 信息
sed -i.bak -E -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):controller1/172.0.0.1:\2:controller1/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):controller2/172.0.0.2:\2:controller2/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):controller3/172.0.0.3:\2:controller3/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):agent1/172.0.0.1:\2:agent1/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):agent2/172.0.0.2:\2:agent2/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):agent3/172.0.0.3:\2:agent3/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):node1/172.0.0.1:\2:\node1/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):node2/172.0.0.2:\2:node2/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):node3/172.0.0.3:\2:node3/' ./*
// 添加服务器二和服务器三的 agent
echo '172.0.0.2:9905:agent2,agent' >> cluster.nodes
echo '172.0.0.3:9906:agent3,agent' >> cluster.nodes
step5:在服务器三(172.0.0.3)上面的 dolphindb_3 下面的 server/clusterDemo/config 下执行如下命令来修改所有涉及 controller 集群信息的配置文件和修改服务器三的 agent 信息以及在 cluster.nodes 添加新增的两个 controller
// 修改 controller 集群信息和 agent 信息
sed -i.bak -E -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):controller1/172.0.0.1:\2:controller1/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):controller2/172.0.0.2:\2:controller2/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):controller3/172.0.0.3:\2:controller3/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):agent1/172.0.0.1:\2:agent1/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):agent2/172.0.0.2:\2:agent2/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):agent3/172.0.0.3:\2:agent3/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):node1/172.0.0.1:\2:\node1/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):node2/172.0.0.2:\2:node2/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):node3/172.0.0.3:\2:node3/' ./*
// 添加服务器二和服务器三的 agent
echo '172.0.0.2:9905:agent2,agent' >> cluster.nodes
echo '172.0.0.3:9906:agent3,agent' >> cluster.nodes
4.2.2 数据迁移
数据迁移主要是将服务器一(172.0.0.1)下面的 dolphindb_2 和 dolphindb_3 安装包下面的 controller.cfg 配置和 cluster.cfg 配置下面的数据路径迁移到服务器二(172.0.0.2)和服务器三(172.0.0.3)。
执行如下命令,将 dolphindb_2 相关的磁盘数据从服务器一(172.0.0.1)迁移到服务器二(172.0.0.2),将 dolphindb_3 相关的磁盘数据从服务器一(172.0.0.1)迁移到服务器三(172.0.0.3)
scp -r /ssd/ssd1/dolphindb_2 root@172.0.0.2:/ssd/ssd1/;
scp -r /ssd/ssd1/dolphindb_3 root@172.0.0.3:/ssd/ssd1/;
4.2.3 启动集群
step1:在每台服务器的 server/clusterDemo 下面执行如下命令启动 controller 和 agent
sh startController.sh
sh startAgent.sh
step2:在浏览器输入?https://172.0.0.1:9901?进入控制点节点的 web 页面,然后启动所有的 data node 即可
172.0.0.1:9901 不一定是 controller 的 leader 连接信息,登录该节点会显示 leader 节点是哪一个,点击跳转即可。
step3:登录任意一个 data node 查询之前的库表信息并且新建立库表,查看操作是否正常
5.2.1 配置迁移
配置迁移主要是将服务器一(172.0.0.1)下面的 dolphindb_3 安装包下面的配置迁移到服务器三(172.0.0.3)上面。
step1:在服务器一(172.0.0.1)和服务器二(172.0.0.2)上面执行如下命令关闭所有服务,然后备份现有配置文件
# 在服务器一上面执行如下命令
cd /home/dolphindb_1/server/clusterDemo;
sh stopAllNode.sh;
cp -r ./config ./config.bak
cd /home/dolphindb_3/server/clusterDemo;
sh stopAllNode.sh;
cp -r ./config ./config.bak
# 在服务器二上面执行如下命令
cd /home/dolphindb_2/server/clusterDemo;
sh stopAllNode.sh;
cp -r ./config ./config.bak
step2:执行如下命令将服务器一(172.0.0.1)上面的 dolphindb_3 安装包传输到服务器三(172.0.0.3)
scp /home/dolphindb_3 root@172.0.0.3:/home/dolphindb_3;
step3:在服务器一(172.0.0.1)上面的 dolphindb_1 下面的 server/clusterDemo/config 下执行如下命令来修改所有涉及 controller 集群信息的配置文件以及在 cluster.nodes 添加新增的一个 agent
// 修改 controller 集群信息
sed -i.bak -E -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):controller1/172.0.0.1:\2:controller1/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):controller2/172.0.0.2:\2:controller2/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):controller3/172.0.0.3:\2:controller3/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):agent1/172.0.0.1:\2:agent1/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):agent2/172.0.0.2:\2:agent2/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):agent3/172.0.0.3:\2:agent3/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):node1/172.0.0.1:\2:\node1/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):node2/172.0.0.2:\2:node2/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):node3/172.0.0.3:\2:node3/' ./*
// 添加服务器三的 agent
echo '172.0.0.3:9906:agent3,agent' >> cluster.nodes
step4:在服务器二(172.0.0.2)上面的 dolphindb_2 下面的 server/clusterDemo/config 下执行如下命令来修改所有涉及 controller 集群信息的配置文件以及在 cluster.nodes 添加新增的一个 agent
// 修改 controller 集群信息和 agent 信息
sed -i.bak -E -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):controller1/172.0.0.1:\2:controller1/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):controller2/172.0.0.2:\2:controller2/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):controller3/172.0.0.3:\2:controller3/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):agent1/172.0.0.1:\2:agent1/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):agent2/172.0.0.2:\2:agent2/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):agent3/172.0.0.3:\2:agent3/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):node1/172.0.0.1:\2:\node1/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):node2/172.0.0.2:\2:node2/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):node3/172.0.0.3:\2:node3/' ./*
// 添加服务器三的 agent
echo '172.0.0.3:9906:agent3,agent' > cluster.nodes
step5:在服务器三(172.0.0.3)上面的 dolphindb_3 下面的 server/clusterDemo/config 下执行如下命令来修改所有涉及 controller 集群信息的配置文件和修改服务器三的 agent 信息以及在 cluster.nodes 添加新增的一个 agent
// 修改 controller 集群信息和 agent 信息
sed -i.bak -E -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):controller1/172.0.0.1:\2:controller1/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):controller2/172.0.0.2:\2:controller2/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):controller3/172.0.0.3:\2:controller3/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):agent1/172.0.0.1:\2:agent1/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):agent2/172.0.0.2:\2:agent2/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):agent3/172.0.0.3:\2:agent3/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):node1/172.0.0.1:\2:\node1/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):node2/172.0.0.2:\2:node2/' -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):node3/172.0.0.3:\2:node3/' ./*
// 添加服务器三的 agent
echo '172.0.0.3:9906:agent3,agent' > cluster.nodes
5.2.2 数据迁移
数据迁移主要是将服务器一(172.0.0.1)下面的 dolphindb_3 安装包下面的 controller.cfg 配置和 cluster.cfg 配置下面的数据路径迁移到服务器三(172.0.0.3)。
执行如下命令,将 dolphindb_3 相关的磁盘数据从服务器一(172.0.0.1)迁移到服务器三(172.0.0.3)
scp /ssd/ssd1/dolphindb3 root@172.0.0.3:/ssd/ssd1/dolphindb3
5.2.3 启动集群
step1:在每台服务器的 server/clusterDemo 下面执行如下命令启动 controller 和 agent
sh startController.sh
sh startAgent.sh
step2:在浏览器输入?https://172.0.0.1:9901?进入控制点节点的 web 页面,然后启动所有的 data node 即可
172.0.0.1:9901 不一定是 controller 的 leader 连接信息,登录该节点会显示 leader 节点是哪一个,点击跳转即可。
step3:登录任意一个 data node 查询之前的库表信息并且新建立库表,查看操作是否正常
本次升级只涉及到 controller 的升级,如果涉及 data node 和 compute node 的添加,可以参考?集群扩容和?数据再平衡?这两篇文章。
对于本身就是高可用的集群,如要提高 controller 的宕机容忍度,就需要增加 controller 的节点。因为 dolphindb 的分布式协议采用 Raft。所以对于 controller 要求是奇数台。
step1:在服务器一(172.0.0.1)、服务器二(172.0.0.2)和服务器三(172.0.0.3)上面执行如下命令关闭所有服务,然后备份现有配置文件
# 在服务器一上面执行如下命令
cd /home/dolphindb_1/server/clusterDemo;
sh stopAllNode.sh;
cp -r ./config ./config.bak
# 在服务器二上面执行如下命令
cd /home/dolphindb_2/server/clusterDemo;
sh stopAllNode.sh;
cp -r ./config ./config.bak
# 在服务器三上面执行如下命令
cd /home/dolphindb_3/server/clusterDemo;
sh stopAllNode.sh;
cp -r ./config ./config.bak
step2:执行如下命令将服务器一(172.0.0.1)上面的 dolphindb_1 安装包传输到服务器四(172.0.0.4)和服务器五(172.0.0.5)上面
# 在服务器一上面执行如下命令
scp -r /home/dolphindb_1 root@172.0.0.4:/home/dolphindb_4
scp -r /home/dolphindb_1 root@172.0.0.5:/home/dolphindb_5
step3:在服务器一(172.0.0.1)、服务器二(172.0.0.2)和服务器三(172.0.0.3)上面的 server/clusterDemo/config 下面执行如下命令来修改所有涉及 controller 集群信息的配置文件以及在 cluster.nodes 添加新增的两个 controller
sed -i '/^sites/s/$/,172.0.0.4:9912:controller4:controller,172.0.0.5:9913:controller5:controller/' agent.cfg
echo 172.0.0.4:9912:controller4,controller >> cluster.nodes
echo 172.0.0.5:9913:controller5,controller >> cluster.nodes
主要修改 agent.cfg 里面 controller 集群的信息,cluster.nodes 里面添加 controller4 和 controller5 的节点信息。
step4:在服务器四(172.0.0.4)上面的 dolphindb_4 的 server/clusterDemo/config 下面执行如下命令来修改所有涉及 controller 集群信息的配置文件以及在 cluster.nodes 添加新增的两个 controller
sed -i.bak -E -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):controller1/172.0.0.4:9912:controller4/' controller.cfg
sed -i.bak -E -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):agent1/172.0.0.4:9910:agent4/' agent.cfg
sed -i '/^sites/s/$/,172.0.0.4:9912:controller4:controller,172.0.0.5:9913:controller5:controller/' agent.cfg
echo 172.0.0.4:9912:controller4,controller >> cluster.nodes
echo 172.0.0.4:9913:controller5,controller >> cluster.nodes
主要修改 cluster.nodes 里面添加 controller4 和 controller5 的节点信息,controller.cfg 里面当前节点的信息。服务器四和服务器五主要是用来扩展 controller,所以服务器四和服务器五上面的 agent.cfg 可以不修改。
step5:在服务器五(172.0.0.5)上面的 dolphindb_5 的 server/clusterDemo/config 下面执行如下命令来修改所有涉及 controller 集群信息的配置文件以及在 cluster.nodes 添加新增的两个 controller
sed -i.bak -E -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):controller1/172.0.0.5:9913:controller5/' controller.cfg
sed -i.bak -E -e 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+):agent1/172.0.0.5:9911:agent5/' agent.cfg
sed -i '/^sites/s/$/,172.0.0.4:9912:controller4:controller,172.0.0.5:9913:controller5:controller/' agent.cfg
echo 172.0.0.4:9912:controller4,controller >> cluster.nodes
echo 172.0.0.5:9913:controller5,controller >> cluster.nodes
step6:在集群的每台机器的 dolphindb 安装包下面的 server/clusterDemo 下面执行如下命令启动 controller
sh startController.sh
step7:在服务器一(172.0.0.1)、服务器二(172.0.0.2)和服务器三(172.0.0.3)的 dolphindb 安装包下面的 server/clusterDemo 下面执行如下命令启动 agent
sh startAgent.sh
step8:在浏览器输入?https://172.0.0.1:9901?进入控制点节点的 web 页面,然后启动所有的 data node 即可
172.0.0.1:9901 不一定是 controller 的 leader 连接信息,登录该节点会显示 leader 节点是哪一个,点击跳转即可。
step9:登录 data node 查询之前建立的库表信息
集群能够正常对外提供服务。
升级之前的集群是 controller 伪高可用,即有两个或两个以上的 controller 运行在同一台服务器,在这种情况下升级需要迁移相关元数据信息。
高可用集群要求 controller 是奇数,如果服务器数量低于 3 台,那么建议在单台机器运行多个 controller,使 controller 的服务数为奇数。
首先检查集群是否正常启动,在集群内部能否正常访问服务。其次检查防火墙,因为 web 客户端很可能与集群不在同一网络,检查相关端口是否开放。
首先检查 agent.cfg 的配置文件,确保 agent 的配置没有问题。如果任然启动不了,接下来排查 cluster.nodes 里面各个节点的 IP 配置是否正确。
迁移前后的路径应该保持一致,即从根路径到文件的绝对路径保持一致。