[]
        
在线Demo 免费试用
(Showing Draft Content)

在K8S集群环境中部署

1. 概述

1.1 功能概述

本节为您讲解K8S集群环境部署Wyn。

2. 操作步骤

2.1 前提条件

  1. 本文假设您已经将 K8S(kubernetes) 集群环境搭建好了,如需查看如何搭建 K8S 集群,请参阅文档https://kubernetes.io/docs/home/

  2. 另外,在部署时还需要一个数据库(SqlServer、Mysql、Postgres 或 Oracle)。

2.2 部署产品

  1. 单击如下链接下载zip文件并解压。

    wyn-k8s-8.0.01158.1.zip

    1)解压后为三个文件:

    image2022-2-22_16-28-2.png

  2. 在每个worker节点中创建“conf”文件夹(服务可以自动创建monetdb5-data和logs文件夹),然后更新 pv/pv.yaml 文件中的“hostPath”。

    image2022-2-22_16-31-5.png

    image2022-2-22_16-31-23.png

    image2022-2-22_16-31-42.png

  3. 更新 conf/Wyn.conf 中的数据库连接字符串,然后将文件复制到您在上一步中创建的“conf”文件夹中。

    image2022-2-22_16-33-6.png

  4. 获取主机名。执行以下命令获取主机名。

    kubectl get nodes

    image2022-2-22_16-43-54.png

  5. 用上一步获取的主机名更新“services/analysisdb.yaml” 文件中的 nodeSelector。

    image2022-2-22_16-45-37.png

  6. 将“pv”和“services”文件夹复制到主节点。

    1)执行以下命令来创建 volume.

    kubectl apply -f pv

2)执行以下命令来创建服务。

kubectl apply -f services
  1. 至此,Wyn 已经部署在 k8s 集群中。可以使用以下命令获取 pod 状态,等待所有 pod 准备就绪。您可以通过 http://<主节点IP>:30000 访问站点。

    kubectl get pods

    image2022-2-22_16-56-26.png

2.3 部署多个service 实例

目前,推荐将 cot-worker、reporting-worker、dashboard-worker、server 和 scheduler service 部署在多个实例中。

2.3.1 部署多个cot-worker、reporting-worker、dashboard-worker、server

  1. 部署多个 cot-worker、reporting-worker、dashboard-worker、server 实例时仅需修改对应配置文件(“services/cot-worker.yaml”、“services/reporting-worker.yaml”、“services/dashbaord-worker.yaml”、“services/server.yaml”)中 replicas 的值为所需的实例数即可。

    image2022-2-22_17-20-5.png

    image2022-2-22_17-19-42.png

    image2022-2-22_17-20-5.png

    image2022-2-22_17-20-25.png

2.3.2 部署多个scheduler service

建议仅在启用多 Server 时再部署多个 Scheduler Service。

  1. 部署多个 scheduler service 时,除了修改“services/scheduler.yaml.yaml”中 的 replicas 外。

    image

  2. 还需修改主节点上的 Wyn.conf 文件,开启多 Scheduler Service 部署。

  3. 下图为修改前后的对比图示例,左侧为修改前,右侧为修改后。

    image

    type=info

    提示

    1. 启用多个调度服务时,应使用 SchedulerConfig > ServiceDiscovery 而不是 SchedulerConfig > ServerHost。

    2. GlobalSettings > SchedulerConfig > ServiceDiscovery > ConfigString 是 Redis 的连接字符串。它可以使用与 Server > Cache > DistributedMemoryCache > ConfigString 相同的连接字符串。

    3. 建议与 SchedulerService > SchedulerConfig > MultipleConfig > DistributedQuartz 中的 Server >Storage 使用相同的数据库连接字符串(仅 database 不同)。

    4. SchedulerService > SchedulerConfig > MultipleConfig > DistributedMemoryCache > ConfigString 是 Redis 的连接字符串。它可以使用与 Server > Cache > DistributedMemoryCache > ConfigString 相同的连接字符串。

2.4 为Worker指定功能角色

功能角色表示可以分配给 Worker 的任务类型, Cot Worker 和 Report Worker 支持多种功能角色。

  • Cot Worker 支持的功能角色包括:刷新数据集缓存和刷新数据模型缓存。

  • Report Worker 支持的功能角色包括:预览、计划任务、导出和其他。

部署多个 Cot Worker 或 Report Worker 后,就可以根据需要指定 Worker 的功能角色。 而 Dashboard Worker 仅支持一种功能角色,所以无需再进行指定。

比如导报表需求量大,就可以指定一个配置较高的 Report Worker 专门负责导出,而其他任务量小,就分配到其他机器上,从而充分利用资源提高系统性能。分配功能角色时要保证功能全覆盖,不能将所有的 Worker 都分配成同一两种功能角色,而其他功能角色无 Worker 可用。

接下来介绍如何为 Cot Worker 和 Report Worker 指定功能角色。

2.4.1 Cot Worker

默认情况下,Cot Worker 支持所有功能角色,即刷新数据集缓存和刷新数据模型缓存。如果想指定特定的功能角色,请按照下列步骤进行操作。

  1. 单独指定刷新数据集缓存

    1)备份原 cot-worker.yaml 文件。

    cd services
    mv cot-worker.yaml  cot-worker.yaml.origin

    2)创建 cot-worker-cot.yaml。

    cp cot-worker.yaml.origin cot-worker-cot.yaml

    3)修改名称,将刷新数据集缓存功能角色添加到环境变量中。

    vi cot-worker-cot.yaml
    # modify the name from wyn-cot-worker to wyn-cot-worker-cot
    # add the refresh dataset cache functional role to environment variables
    - name: FunctionalRoles
      value: cot

    image

  2. 单独指定刷新模型缓存

    1) 在 services 文件夹中备份原 cot-worker.yaml 文件。

    cd services
    mv cot-worker.yaml cot-worker.yaml.origin

    2) 创建 cot-worker-model.yaml。

    cp cot-worker.yaml.origin cot-worker-model.yaml

    3)修改名称,将刷新模型缓存功能角色添加到环境变量中。

    vi cot-worker-model.yaml
    # modify the name from wyn-cot-worker to wyn-cot-worker-model
    # add the refresh model cache functional role to environment variables
    - name: FunctionalRoles
      value: model

    image

2.4.2 Report Worker

默认情况下,Report Worker 支持所有功能角色,即预览、计划任务、导出和其他。如果想指定特定的功能角色,请按照下列步骤进行操作。

  1. 单独指定预览功能角色

    1)在 services 文件夹中备份原 reporting-worker.yaml 文件。

    cd services
    mv reporting-worker.yaml reporting-worker.yaml.origin

    2) 创建 reporting-worker-preview.yaml。

    cp reporting-worker.yaml.origin reporting-worker-preview.yaml

    3)修改名称,将预览功能角色添加到环境变量中。

    vi reporting-worker-preview.yaml
    # modify the name from wyn-reporting-worker to wyn-reporting-worker-preview
    # add preview functional roles to environment variables
    - name: FunctionalRoles
      value: preview

    image

  2. 单独指定计划任务功能角色

    与单独指定预览功能角色的步骤类似,不再重复介绍。最终文件截图如下。

    image

  3. 单独指定导出功能角色

    与单独指定预览功能角色的步骤类似,不再重复介绍。最终文件截图如下。

    image

  4. 单独指定其他功能角色

    与单独指定预览功能角色的步骤类似,不再重复介绍。最终文件截图如下。

    image

2.5 日志下载

我们支持使用界面或 API 两种方式下载产品日志,不包含 k8s 集群环境的日志。

2.5.1 在管理界面下载

  1. 在后台管理界面中可以一键打包下载系统的日志和配置文件,便于排查问题。

    image

  2. 下载时可勾选日志或配置文件,下载日志时也可以选择具体的服务名称和时间范围。

    image

  3. 选择完成后,单击下载按钮即可下载。下载后是一个压缩包。您可以自行分析也可以联系我们的技术支持帮助您定位问题。

2.5.2 使用API接口下载

GET /api/node/download/logs?&nodeIds=&pattern={date_interval_pattern}&isDownSystemInfo=false&isDownSystemConf={true/false}&modules={modules}

type=info

提示: 请将所有日志都挂载到同一个持久存储的目录中,否则将无法获取到所有日志。

2.6 跨域配置

  1. 由于 K8S 环境部署产品时,后台管理中没有系统配置项,所以没办法在界面中完成跨域配置。那么如需进行跨域配置就要手动修改 Wyn.conf 文件,添加跨域配置。

  2. Server 节点中添加如下内容后重启系统。

    <Cors>
       <AllowedOrigins>
          <sys:string>允许跨域资源共享的地址</sys:string>
       </AllowedOrigins>
       <ExposedHeaders>
          <sys:string>允许返回的响应头1</sys:string>
          <sys:string>允许返回的响应头2</sys:string>
       </ExposedHeaders>
    </Cors>
  3. 例如:

    image

2.7 单点登录配置

  1. 使用k8s部署的Wyn服务,由于其配置文件很可能是存储在一个具有只读权限的外部存储系统中,所以部署完成后在系统的管理页面中无法提供系统配置修改页面,此时如果客户需要配置单点登录,则需要手动修改配置文件(或者修改ConfigMap,根据客户的k8s部署情况而定),完成后再手动重启与Wyn相关的其它服务。具体的配置文件修改方式可以参考配置单点登录