当前位置: 首页 > news >正文

衡石分析平台使用手册-部署前准备

部署前准备​

1.根据版本获取 k8s 部署配置文件。

安装版本部署文件组件依赖
3.xk8s-yamlmetadb、engine、hengshi zookeeper
4.0.xk8s-yamlmetadb、engine、hengshi、minio、zookeeper
4.1.xk8s-yamlmetadb、engine、hengshi、minio、redis、flink、zookeeper
4.2.xk8s-yamlmetadb、engine、hengshi、minio、redis、flink、zookeeper
4.3.xk8s-yamlmetadb、engine、hengshi、minio、redis、flink、zookeeper
4.4.xk8s-yamlmetadb、engine、hengshi、minio、redis、flink、zookeeper
4.5.0 ~ 4.5.6k8s-yamlmetadb、engine、hengshi、minio、redis、flink
4.5.7 ~ 4.5.x(x>7)k8s-yamlmetadb、engine、hengshi、minio、redis、flink、apm-server
5.0.xk8s-yamlmetadb、engine、hengshi、minio、redis、flink、apm-server
5.1.xk8s-yamlmetadb、engine、hengshi、minio、redis、flink(已被移除 无需运行)、apm-server

2.导入离线镜像 修改 image 地址

shell

wget https://download.hengshi.com/releases/hengshi-sense-xxx.tar.gz
docker load -i hengshi-sense-xxx.tar.gz

1
2

提示

除 gpdb 的镜像地址不同,其余组件均替换为导入的离线镜像 tag eg. image: hengshi-sense:5.0-20231103-dp-427c5f image: gpdb:x.x.x k8s/helm 环境需要将镜像推送到集群所使用的镜像仓库,如 registry、harbor、阿里云镜像仓库、腾讯云镜像仓库

3.替换 gpdb.yaml 中的$(POD_NAMESPACE) 变量为当前 namespace, 比如 hengshi

shell

sed -i 's/$(POD_NAMESPACE)/hengshi/'

1

4.修改 pvc

  • 修改 storageClassName: xxx, 为当前集群的 storageclass
  • 修改 storage: xxx 为各个服务的存储大小
  • doris 引擎请修改 doris.yaml

shell

metadb.yaml
gpdb.yaml
redis.yaml
minio.yaml

5.指定 namespace, 比如 hengshi

shell

kubectl create namespace hengshi

engine​

部署 engine​

如需修改 gpdb 的密码, 需要在两处修改:

  • gpdb.yaml

shell

  GREENPLUM_PWD: hengshi202020GREENPLUM_QUERY_PWD: query202020GREENPLUM_ETL_PWD: etl202020

1
2
3

  • configmap.yaml

shell

  HS_ENGINE_PWD: hengshi202020ENGINE_QUERY_PASSWORD: query202020ENGINE_ETL_PASSWORD: etl202020

初始化,并启动 engine。

shell

kubectl -n hengshi apply -f gpdb.yaml
kubectl -n hengshi exec -it master-0 -- /entrypoint.sh -m initsystem
kubectl -n hengshi exec -it master-0 -- /entrypoint.sh -m startsystem

提示

doris 引擎 yaml: doris.yaml 无需 initsystem 和 startsystem 操作

部署其余组件​

参考下列部署清单 YAML 文件。

shell

kubectl -n hengshi apply -f configmap.yaml
kubectl -n hengshi apply -f service.yaml
kubectl -n hengshi apply -f metadb.yaml
kubectl -n hengshi apply -f minio.yaml
kubectl -n hengshi apply -f redis.yaml
kubectl -n hengshi apply -f hengshi.yaml
kubectl -n hengshi apply -f ingress.yaml

提示

configmap.yaml hengshi 配置文件 service.yaml 集群内部通信以及对外暴露的 service 文件 ingress.yaml 根据需要决定是否部署 ingress

对外暴露 hengshi 服务​

hengshi 提供对外访问的示例配置,可根据需要选择其中之一即可。

nodePort​

通过 nodePort 方式暴露 hengshi 服务 ( 默认,如果没有配置 ingress,则可使用 service 对外暴露的 nodePort 端口对外提供服务 ) 。

例如以下示例中的8080所对应集群的 nodePort 映射端口。

shell

apiVersion: v1
kind: Service
metadata:name: hengshi
spec:selector:hsapp: hengshi-sensehsrole: hengshiports:- protocol: TCPname: "8080"port: 8080targetPort: 8080- protocol: TCPname: "5005"port: 5005targetPort: 5005type: NodePort

ingress​

通过 ingress 方式对外暴露 hengshi 服务 ( 可选 )。

shell

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: hengshi-sensenamespace: hengshi-senseannotations:ingress.kubernetes.io/force-ssl-redirect: "false"nginx.ingress.kubernetes.io/proxy-connect-timeout: "90"nginx.ingress.kubernetes.io/proxy-send-timeout: "90"nginx.ingress.kubernetes.io/proxy-read-timeout: "90"
spec:ingressClassName: nginxrules:- host: xxxx.hengshi.comhttp:paths:- path: /pathType: Prefixbackend:service:name: hengshi-senseport:number: 8080

提示

ingressClassName: 请修改当前集群的 ingressClass host: 公网域名

基本运维操作​

安全停止数据库服务​

参考以下命令停止 metadb 和 engine。

shell

kubectl -n hengshi exec -it metadb-0 -- /docker-entrypoint.sh stop metadb single

shell

kubectl -n hengshi exec -it master-0 -- /entrypoint.sh -m stopsystem

重启 engine​

参考以下命令重启 engine。

shell

kubectl -n hengshi exec -it master-0 -- /entrypoint.sh gpstop -r

1

清理日志​

运行过程中,HENGSHI SENSE 会产生运行日志,这些日志需要定时清理释放存储空间。下面示例是清理内部数据库的滚动日志的命令。

shell

kubectl -n hengshi exec -it master-0 -- /bin/bash
crontab -e # 将下面定时语句写入进去后保存退出
0 0 * * * /opt/hengshi/bin/clean_engine.sh -t -r -c -g -p
*/5 * * * * /opt/hengshi/bin/clean_engine.sh -l

扩容 engine​

1.修改 StatefulSet/segment

shell

kubectl -n hengshi edit StatefulSet/segment

  • SEGMENTS 字段填写扩容后所有 segment 的 appname (比如2个扩容到4个)
  • StatefulSet/segment 的 replicas: 改到扩容后所有 segment 数

shell

apiVersion: v1
kind: ConfigMap
metadata:name: greenplum
data:MASTER: "master-0"SEGMENTS: |  #4个 segment 的列表segment-0segment-1segment-2segment-3
...
apiVersion: apps/v1
kind: StatefulSet
metadata:name: segment
spec:replicas: 4 #例如扩容后为4个 segment

  • 然后 kubectl -n hengshi apply -f gpdb.yaml
  • 然后等待所有新增和旧有 segement pod 的状态都变成 running

2.写 new_host_file (新增 segment 列表, 比如原有2个 segment(0,1), 现扩容到4个 segment(0,1,2,3))

shell

kubectl -n hengshi exec -it master-0 /bin/bash
cd /opt/hsdata/ && mkdir expand && cd expand
cat <<EOF > new_host_file
segment-2
segment-3
EOF

3.执行扩容操作

shell

kubectl -n hengshi exec -it master-0 /bin/bash
cd /opt/hsdata/expand
psql postgres -c "create database expand"
gpexpand -f new_host_file  -D expand>y>0 #然后会生成 gpexpand_inputfile_yyyymmdd_xxxxxx 文件
gpexpand -i gpexpand_inputfile_yyyymmdd_xxxxxx -D expand

如果扩容失败,可参考以下命令回滚 engine。

shell

kubectl -n hengshi exec -it master-0 /bin/bash
cd /opt/hsdata/expand
gpstart -aR
gpexpand -r -D expand

engine 数据迁移​

1.旧 engine 数据导出

shell

 # dump db data
kubectl exec -it $old-gp /bin/bash
source $HS_HOME/engine-cluster
pg_dumpall > /opt/hsdata/engine.back.sql
exit

2.copy 数据到新机器

shell

 # cp db data
kubectl cp $old-gp:/opt/hsdata/engine.back.sql engine.back.sql
kubectl cp engine.back.sql $master-0:/opt/hsdata/engine.back.sql

3.导入数据到新环境

shell

 # load db data
kubectl exec -it $master-0 /bin/bash
source $HS_HOME/engine-cluster
psql postgres < /opt/hsdata/engine.back.sql
rm /opt/hsdata/engine.back.sql

部署单机版 (POC)​

1.修改配置文件为单机配置

执行前确保 configmap.yaml, hengshi.yaml 等配置文件与 config_to_single.sh 在同一个目录下。

shell

./config_to_single.sh

2.部署引擎

参考 引擎部署

3.部署其余组件

参考下列部署清单 YAML 文件。

shell

kubectl -n hengshi apply -f configmap.yaml
kubectl -n hengshi apply -f service.yaml
kubectl -n hengshi apply -f metadb.yaml
kubectl -n hengshi apply -f minio.yaml
kubectl -n hengshi apply -f redis.yaml
kubectl -n hengshi apply -f hengshi.yaml

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 如何快速撰写毕业论文任务书
  • 遍历有向网络链路实现
  • 初学者如何掌握python
  • nlohmann::json中有中文时调用dump转string抛出异常的问题
  • 瑞吉外卖—读写分离
  • 机器学习:opencv图像识别--模版匹配
  • 华为OD机试真题E卷-计算网络信号(含题目描述+解题思路+代码解析)
  • 前端打包装包——设置镜像
  • 机试算法模拟题 服务中心选址
  • 利用命令模式构建高效的手游后端架构
  • Reflection反射——Class类
  • 大模型训练数据库Common Crawl
  • Python判断两张图片的相似度
  • 汽车免拆诊断案例 | 2013款捷豹XF车偶尔无法起动
  • Jupyter Notebook 修改默认路径
  • [译]前端离线指南(上)
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • Android单元测试 - 几个重要问题
  • Android开源项目规范总结
  • ERLANG 网工修炼笔记 ---- UDP
  • es6--symbol
  • exports和module.exports
  • iOS 颜色设置看我就够了
  • JavaScript DOM 10 - 滚动
  • JavaScript 奇技淫巧
  • leetcode讲解--894. All Possible Full Binary Trees
  • miaov-React 最佳入门
  • Python进阶细节
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 使用putty远程连接linux
  • 思否第一天
  • 一份游戏开发学习路线
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • Java数据解析之JSON
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • ​水经微图Web1.5.0版即将上线
  • #mysql 8.0 踩坑日记
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • $.ajax()参数及用法
  • (12)目标检测_SSD基于pytorch搭建代码
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (创新)基于VMD-CNN-BiLSTM的电力负荷预测—代码+数据
  • (二)Eureka服务搭建,服务注册,服务发现
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (转)JAVA中的堆栈
  • (转)Oracle存储过程编写经验和优化措施