AWS Markeplace 上的 DolphinDB MGR 快速上手

news2024/11/24 1:06:29

1. AWS 上的 DolphinDB MGR 简介

DolphinDB MGR 是部署于 Kubernetes 上的 DolphinDB 集群自动运维系统,提供包括部署、升级、扩缩容、配置变更的 DolphinDB 全生命周期管理。通过 DolphinDB MGR,DolphinDB 可以无缝运行在公有云或私有部署的 Kubernetes 集群上。目前,DolphinDB MGR 已正式登陆亚马逊云科技(AWS)的 Marketplace。亚马逊云科技全球用户能够通过其 Marketplace 搜索、发现和订阅 DolphinDB MGR 服务。

目前,AWS 上的 DolphinDB MGR 支持运行在 Amazon Elastic Kubernetes Service (Amazon EKS) 搭建的集群上:

Amazon EKS 是一项托管服务,可让用户在 AWS 上轻松运行 Kubernetes,而无需自己维护 Kubernetes 控制平台。用户可以轻松地将任何 DolphinDB MGR 服务迁移到 Amazon EKS。

本教程将介绍如何快速在 AWS 上部署 DolphinDB MGR ,并成功启动一个社区版单机模式的 DolphinDB 服务。请注意,社区版单节点 DolphinDB 服务器的CPU核数上限为2,内存上限为8G。

2. 环境准备

部署前,先准备一台能够连接到 AWS 控制台的主机,主机的环境如下:

  • 能进行外网通信
  • 安装 helm3 ,用于安装DolphinDB MGR
  • 安装 K8s 命令行工具 kubectl
  • 安装 AWS 的命令行工具 awscli
  • 按照 AWS 文档,配置 AWS Command Line Interface (AWS CLI):
    配置时 default output format 不需要配置,直接输入 Enter 即可。
    要验证 AWS CLI 的配置是否正确,请运行 aws configure list 命令。如果输出显示了 access_key 和 secret_key 的值,则说明配置正确。否则,需要重新配置 AWS CLI。
  • 安装创建 EKS 集群的命令行工具 eksctl
  • 从此处下载并解压 DolphinDB 社区版 License 证书,得到 dolphindb.lic。
注意:
1. 本文档所涉及的操作需要AWS Access Key 至少具有 eksctl所需最少权限。
2. Helm 版本需3.7.0及以上,本文使用的 Helm 版本为3.9.2.

3. 用 eksctl 创建 Amazon EKS 集群

3.1 选择机型

AWS EC2 由机型决定相应的资源配置,如 CPU、内存等。本教程中 DolphinDB 使用的是社区版证书,最多能使用2个 CPU 核, 8G 内存。实际使用时,要求实例的核数和内存略高于于社区版证书的要求,所以我们选择 m5.xlarge 实例。

3.2 创建 EKS 集群和节点池

3.2.1 生成配置文件

执行以下命令:

eksctl create cluster --region $region_code --name $cluster_name --dry-run > eks-test.yaml

主要参数值的说明如下:

  • region_code: 指定 K8s 集群所在的 region
  • cluster_name: 生成的 EKS 集群的名称,本文配置为 ddbawstest

3.2.2 修改配置文件

修改如下配置以建立 EKS 集群:

  • availabilityZones:设为 us-east-1a 和 us-east-1b
  • desiredCapacity:设为1
  • maxSize:设为1
  • minSize:设为1
  • instanceType:设为 m5.xlarge
  • volumeSize:磁盘大小,根据需求设置

用以下步骤给集群中的虚拟机配置 SSH 访问(适用于 Linux 系统的主机):

  1. 在自己的 AWS 账户生成 .pem 文件(本例中为k8s-tester.pem),下载到本地
  2. 把文件的 permission 改成400
  3. ssh-keygen -y -f 生成 public key, 放入一个 ".pub 文件"(本例中为k8s-tester.pub), 置于 eks-test.yaml 同一目录下:
 ssh-keygen -y -f k8s-tester.pem > k8s-tester.pub 

4. 配置文件中配置 ssh,allow 设为 true,publicKeyPath 为 public key 所在的路径

3.2.3 创建 EKS 集群

执行以下命令,创建集群:

eksctl create cluster -f eks-test.yaml

期待输出:

...
[✓]  EKS cluster "ddbawstest" in "us-east-1" region is ready

需要等待以下过程均完成(总耗时约 5~20 分钟),才会显示结果:

  • EKS 集群创建完成;
  • 节点组创建完成;
  • 节点组加入 EKS 集群。

集群创建完成后,可在AWS CloudFormation 控制台 中查看名为 eksctl-cluster_name-cluster 的 AWS CloudFormation 堆栈,查看创建的所有资源。

3.3 配置集群安全组

由于 eksctl 对自动配置集群安全组的支持有限,我们需要手动配置安全组,具体步骤如下

  • 进入 AWS console
  • 打开EC2

  • 点击实例
  • 点击安全
  • 点击安全组

  • 点击“编辑入站规则”

  • 添加规则

  • 选择“所有流量”和“我的IP”并保存。完成配置后,这个安全组里的所有实例会接收来自本IP的访问。也可以选择Custom,然后设置一个 CIDR 范围,范围内的IP都可以访问安全组里的所有实例。

3.4 配置 StorageClass

本小节介绍如何为本地存储配置 StorageClass。

Local Path Povisioner 可以在 Kubernetes 环境中作为本机路径的 CSI,使用节点的本机路径来动态分配持久化存储。本节将介绍具体实现方法。

注意:"Local path provisioner"只是提供了 storageclass ,用于创建 pvc ,如果用户使用其他类型的 sci ,则不需要部署,可以作为没有 sci 的用户的参考项

从 github 上下载 local-path-provisioner 安装文件:

wget https://raw.githubusercontent.com/rancher/local-path-provisioner/master/deploy/local-path-storage.yaml

期望输出:

--2022-08-07 10:36:07--  https://raw.githubusercontent.com/rancher/local-path-provisioner/master/deploy/local-path-storage.yaml
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.109.133, 185.199.110.133, 185.199.111.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.109.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2939 (2.9K) [text/plain]
Saving to: ‘local-path-storage.yaml’

100%[======================================>] 2,939       --.-K/s   in 0s

2022-08-07 10:36:07 (56.9 MB/s) - ‘local-path-storage.yaml’ saved [2939/2939]
  • 修改配置:


配置该路径目的是持久化存储容器中的数据(详细介绍参考 local-path-provisioner配置 )

注意: 修改分配 PV 的本机路径:找到名为 "local-path-config" 的 ConfigMap 资源,其 data 字段下的 "config.json" 里包含的属性 "paths" 即为分配的 K8s 集群中的节点路径。如果配置了多个节点路径,将随机选取其中一个作为 PV。

  • 在 Kubernetes 环境中部署:
kubectl apply -f  local-path-storage.yaml

期望输出:

namespace/local-path-storage created
serviceaccount/local-path-provisioner-service-account created
clusterrole.rbac.authorization.k8s.io/local-path-provisioner-role created
clusterrolebinding.rbac.authorization.k8s.io/local-path-provisioner-bind created
deployment.apps/local-path-provisioner created
storageclass.storage.k8s.io/local-path created
configmap/local-path-config created

4 安装及部署 DolphinDB MGR

4.1 创建 namespace

执行以下命令,创建 DolphinDB 集群部署的 namespace

kubectl create namespace dolphindb

期望输出:

namespace/dolphindb created

4.2 部署 DolphinDB MGR

  • 配置环境变量
export HELM_EXPERIMENTAL_OCI=1
aws ecr get-login-password \
    --region us-east-1 | helm registry login \
    --username AWS \
    --password-stdin 709825985650.dkr.ecr.us-east-1.amazonaws.com

期望输出:

Login succeeded
  • 执行以下命令,下载 AWS 上的 Helm chart 包。命令中 $DolphinDB_MGR_version 为你想下载的版本号,例如:v1.0.3
mkdir awsmp-chart && cd awsmp-chart
helm pull oci://709825985650.dkr.ecr.us-east-1.amazonaws.com/dolphindb/dolphindb-mgr-byol --version $DolphinDB_MGR_version

期望输出:

Pulled: 709825985650.dkr.ecr.us-east-1.amazonaws.com/dolphindb/dolphindb-mgr-byol:v1.0.3
Digest: sha256:b99a4df2c5f1b4c95e26d620616be4f88bdfd5061d6f3352c2c222a926e56fab
  • 解压缩 Helm chart 并安装
tar xf $(pwd)/* && find $(pwd) -maxdepth 1 -type f -delete
helm install dolphindb-mgr dolphindb-mgr-byol --set global.version=$version --set global.serviceType=NodePort --set global.storageClass=local-path --set-file license.content=../dolphindb.lic -ndolphindb --create-namespace

上面代码中 global.version 为当前的 DolphinDB MGR 版本(如"v1.0.3")。
DolphinDB 必须校验过 License 后才能启动,所以安装指令中需配置 license.content 为 License 文件所在的路径。

期望输出:

NAME: dolphindb-mgr
LAST DEPLOYED: Thu Aug  4 05:55:49 2022
NAMESPACE: dolphindb
STATUS: deployed
REVISION: 1
TEST SUITE: None
  • 检查部署是否成功
kubectl -n dolphindb get po

期望输出:

NAME                                              READY   STATUS    RESTARTS   AGE
dolphindb-mgr-alertmanager-0                      1/1     Running   0          52s
dolphindb-mgr-grafana-84bcc6c495-ql5v4            1/1     Running   0          52s
dolphindb-mgr-loki-0                              1/1     Running   0          52s
dolphindb-mgr-node-exporter-pgvg6                 1/1     Running   0          52s
dolphindb-mgr-prometheus-server-c4cf8fdff-kpnxc   1/1     Running   0          52s
dolphindb-operator-0                              1/1     Running   0          52s
dolphindb-operator-1                              0/1     Pending   0          44s
dolphindb-webserver-68d6bd6cc9-mkh55              1/1     Running   0          52s
dolphindb-webserver-68d6bd6cc9-v8szd              1/1     Running   0          52s

因为 EKS 只部署了一个实例,所以只有一个 operator 在运作,并不会影响 DolphinDB MGR 的正常使用。

5. 部署 DolphinDB

5.1 可视化界面

DolphinDB MGR 提供的可视化界面默认使用 NodePort 的 ServiceType 进行服务暴露。在完成 DolphinDB MGR 部署之后,可在 Kubernetes 环境中查看可视化界面对应的 Service:

kubectl -ndolphindb get svc | grep dolphindb-webserver

输出结果

dolphindb-webserver               NodePort    10.100.47.141    <none>        8080:31268/TCP   24m

通过浏览器访问 DolphinDB MGR 的可视化界面:

http://$nodeIP:$NodePort/dolphindb-cloud
$nodeIP:Kubernetes 环境中任意 node 的 IP。
$NodePort:终端显示信息中 DolphinDB MGR 的可视化界面对应的 NodePort(输出结果中的"31268")。

本教程访问地址为 http://3.227.20.112:31268/dolphindb-cloud/

5.2 部署 DolphinDB

  1. 点击新建集群

2. 选择配置

  • 名称:集群名称,可以自行配置
  • 储存类:选择 "local-path"
  • 模式:选择“单机节点”
  • 版本:DolphinDB 服务器版本,可以自选
  • 日志模式:分别为标准输出和输出到文件。输出到文件性能更佳(推荐)。
  • CPU:pod 的 CPU 数量。因为社区版限制 CPU 个数上限为2,这里选择 2
  • 内存:pod 的 内存 大小。为避免操作系统 OOM killer 杀死 DolphinDB 进程,建议设置值大于8G。本教程设置为12G

3. 成功部署DolphinDB

  • 状态变成 Available,表示 DolphinDB 创建成功,可以正常提供服务。

4. 连接 DolphinDB

如图所示,DolphinDB 的端口为30403。 你可以通过浏览器访问此节点:

$IP:30403

也可以通过 DolphinDB GUI 来访问此节点。DolphinDB GUI 的安装及使用请参阅 GUI 简介以及 GUI 用户手册

5. 运行命令 连接节点成功之后,输入语句测试节点是否可用:

version()

期待输出如下图:

关于如何在 K8s 上部署 DolphinDB 的更多介绍,请参见 基于K8s的DolphinDB 部署教程

6. 清理环境

6.1 销毁 DolphinDB

有两种方式可以销毁 DolphinDB

  1. 通过 web 管理器中的删除按钮销毁

2. 通过命令行进行销毁

kubectl delete ddb $ddbName -n dolphindb

其中,$ddbName 是之前设置的 DolphinDB 名称

6.2 卸载 DolphinDB MGR

通过以下命令可以卸载 DolphinDB MGR

helm uninstall dolphindb-mgr -n dolphindb

6.3 删除 EKS 集群

通过以下命令可以删除 EKS 集群

eksctl delete cluster --name=$cluster_name

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/154549.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

openEuler RISC-V 的 Firefox 性能大升级,最高 40 倍性能提升

RISC-V SIG 择日即将发布 openEuler RISC-V 22.03 V2 版本镜像。本次发版会提供带有 SpiderMonkey JIT 编译支持的 Firefox 最新版本和带有 LLVMpipe 优化的 Mesa 最新版本安装源供使用者选装测试&#xff0c;预期图形界面使用性能会获得可观优化。 新版本的 Firefox 开启 JIT…

5.3、UDP 和 TCP 的对比

在使用 TCP/IP 体系结构的网络通信中&#xff0c;这两个协议的使用频率仅次于网际层的 IP 协议 TCP/IP 体系结构应用层中的某些协议需要使用运输层的 TCP 提供的服务 而另一些协议需要使用运输层的 UDP 提供的服务 1、UCP(无连接) & TCP(面向连接) 1.1、UDP 如下所示&am…

小程序:会议OA项目-其它页面

目录 一、tabs组件及会议管理布局 自定义tabs组件 跟着官网来感受一下 会议管理的布局 二、个人中心布局 一、tabs组件及会议管理布局 自定义tabs组件 文档参考:自定义组件 | 微信开放文档 跟着官网来感受一下 先建一个文件夹名为components&#xff0c;里面再建一个tabs的…

【C语言进阶(NEW)】六、文件操作(一)|文件|文件的打开和关闭|文件的顺序读写|文件读取结束的判定

目录 一、文件 1.1 什么是文件 1.1.1 程序文件 1.1.2 数据文件 1.2 为什么使用文件 1.3 文件名 二、文件的打开和关闭 2.1 文件指针 2.2 文件的打开和关闭 三、文件的顺序读写 3.1 fgetc 和 fputc&#xff08;字符输入输出函数&#xff09; 3.2 fgets 和 fputs&am…

20行原生JS代码手写ElementUI表格组件

又是许久没有写博客了&#xff0c;这几年的疫情&#xff0c;总是居家&#xff0c;时间久了&#xff0c;慢慢的总会想很多。现在越发觉得想做的事情一定要尽早去做&#xff0c;不然总说等下一次&#xff0c;很多时候&#xff0c;就没有下一次了。 今天给大家分享一下如何用原生…

从0到1完成一个Vue后台管理项目(十七、使用Echarts:柱状图、折线图)

往期 从0到1完成一个Vue后台管理项目&#xff08;一、创建项目&#xff09; 从0到1完成一个Vue后台管理项目&#xff08;二、使用element-ui&#xff09; 从0到1完成一个Vue后台管理项目&#xff08;三、使用SCSS/LESS&#xff0c;安装图标库&#xff09; 从0到1完成一个Vu…

DB性能跟不上,加缓存就够了?

服务端软件开发时&#xff0c;通常会把数据存储在DB。而服务端系统遇到的第一个性能瓶颈&#xff0c;往往发生在访问DB时。 这时大部分开发会拿出“缓存”&#xff0c;通过使用Redis在DB前提供一层缓存数据&#xff0c;缓解DB压力&#xff0c;提升服务端性能。 在数据库前添加…

nohup后台运行,进程查看与终止(ubuntu)

1.nohup用途&#xff1a;不挂断地运行命令。语法&#xff1a;nohup Command [ Arg … ] [ & ]无论是否将 nohup 命令的输出重定向到终端&#xff0c;输出都将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写&#xff0c;输出重定向到 $HOME/nohu…

threejs 学习一

前提 threejs官网&#xff1a;https://threejs.org/ 由于官网访问慢&#xff0c;可以github下载压缩包解压后本地启动 github地址&#xff1a;https://github.com/mrdoob/three.js/ 下载好后解压 安装依赖 npm install 启动&#xff1a;npm start 目录介绍&#xff1a; …

语音识别技术简叙述

语音识别技术简述 语音识别的概念 语音识别技术都是让智能设备能够听懂人类语言&#xff0c;其实一门涉及数学信号处理、人工智能、语言学、数理统计学、声学、情感学及心理学等多学科交叉的学科。这项技术可以提供比如自动客服、自动语音翻译、命令控制&#xff0c;语音验证…

【vue】关于vue2和vue3响应式原理的区别

我们都知道&#xff0c;在Vue2中的数据响应式原理存在许多缺陷。 例如无法对新增和直接删除的数据做到响应式&#xff0c;无法直接操作数组进行响应式处理等等。 而在Vue3中&#xff0c;作者很好的解决了这些缺陷&#xff0c;让我们来对比一下Vue2与Vue3对数据响应式处理的具体…

前端如何保证设置的font-family成功生效?

背景 最近开发的一个新页面&#xff0c;在产品验收的时候跟我反馈说页面里的字体跟设计稿中的字体不一样&#xff1b; 问题的关键是我明明记得我有单独设置过 font-family属性&#xff0c;于是我通过Chorme浏览器的调试工具查看了一下DOM的生效样式&#xff1b; 明明是已经设…

IDEA、TortoiseSVN,TortoiseGit提交忽略文件或文件夹

使用IDEA 的SVN插件提交文件是总是会提交一些不需要提交的文件; 我们可以通过一些简单设置忽略这些文件&#xff1a; 1、IDEA 1、idea设置<<--File Types<<--ignore files and folders 原有的过滤条件&#xff1a;*.hprof;*.pyc;*.pyo;*.rbc;*.yarb;*~;.DS_Store…

yolov3-tiny的darknet权重转onnx

前言 之前一直鸽了yolov3-tiny的onnx模型修复&#xff0c;今天终于把最后一个bug解决了&#xff0c;如果想直接享受成果的&#xff0c;直接点我的github仓库下载&#xff0c;使用说明都写了&#xff0c;这篇文章呢主要是给大家分享一下思路和过程&#xff0c;希望能够启发更多…

初识Linux

文章目录初识Linux操作系统概述硬件和软件操作系统常见操作系统总结初识LinuxLinux的诞生Linux内核Linux发行版总结虚拟机介绍虚拟机总结远程连接Linux系统图形化、命令行使用命令行学习Linux系统远程连接工具总结初识Linux 操作系统概述 硬件和软件 我们所熟知的计算机是由…

领域驱动设计:微服务设计为什么要选择DDD?

我们知道&#xff0c;微服务设计过程中往往会面临边界如何划定的问题&#xff0c;我经常看到项目团队为微服务到底应该拆多小而争得面红耳赤。不同的人会根据自己对微服务的理解而拆分出不同的微服务&#xff0c;于是大家各执一词&#xff0c;谁也说服不了谁&#xff0c;都觉得…

Day855.生产者-消费者模式 -Java 并发编程实战

生产者-消费者模式 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于生产者-消费者模式的内容。 Worker Thread 模式类比的是工厂里车间工人的工作模式。 但其实在现实世界&#xff0c;工厂里还有一种流水线的工作模式&#xff0c;类比到编程领域&#xff0c;就是生…

RoboMaster EP 实用功能开发(三): 基于树莓派的ROS2机器人系统搭建

功能&#xff1a;在树莓派4b上安装ros2系统&#xff0c;引入robomaster sdk&#xff0c;搭建一个基于ROS2的机器人系统&#xff0c;用于ROS系统的学习、开发和实践。 硬件&#xff1a;RobotMaster EP、树莓派4b 系统平台&#xff1a;Ubuntu 20.04、ROS2&#xff08;Foxy&…

Selenium【Selenium环境搭建与Junit5】

Selenium【Selenium环境搭建与Junit5】&#x1f34e;一. 自行下载谷歌浏览器或者火狐浏览器&#x1f352;1.1 安装好之后需要去掉谷歌(火狐)浏览器自动更新(建议)&#x1f352;1.2下载谷歌(火狐)驱动&#x1f34e;二.Selenium下载与配置&#x1f352;2.1Selenium下载&#x1f3…

服务案例|SQL Server数据库监控反复重启问题

监控平台对主流数据库的监控&#xff0c;能够及时发现异常&#xff0c;快速响应&#xff0c;保障业务系统的稳定。平台通过对SQL Server数据库监控&#xff0c;帮助用户在数据库出现异常时事件处理。 SQL Server数据库监控内容如下 1 、数据库服务器基本性能监控。包括&#…