当前位置: 首页 > 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

http://www.lryc.cn/news/436321.html

相关文章:

  • AI大模型全栈工程师课程笔记 - RAG 检索增强生成
  • 【时时三省】c语言例题----华为机试题<进制转换>
  • 根据NVeloDocx Word模板引擎生成Word(四)
  • C++笔记---stack和queue
  • springboot Rabbit MQ topic 配置文件绑定队列和交换机
  • Visual Studio 2019密钥
  • 【三元组枚举中点】【树状数组】个人练习-Leetcode-1395. Count Number of Teams
  • Anaconda 中遇到CondaHTTPError: HTTP 404 NOT FOUND for url的问题及解决办法
  • 数据库系统 第51节 数据库事务管理
  • 分解+优化+组合+对比!核心无忧!VMD-SSA-Transformer-LSTM多变量时间序列光伏功率预测
  • 二十三种设计模式之建造者模式(类比汽车制造厂好理解一些)
  • macos 系统文件操作时提示 Read-only file system 解决方法
  • 银行业务架构指导应用架构规划及设计方法
  • 最全面IO流介绍
  • fastadmin 文件上传腾讯云
  • 《机器学习》—— PCA降维
  • 植物三萜皂苷生物合成途径及调控机制研究进展-文献精读48
  • server 2016搭建FTP服务
  • 物理学基础精解【4】
  • 【区块链 + 人才服务】Blockchain Workshop- 区块链编程实践平台 | FISCO BCOS应用案例
  • Java面试篇基础部分-Java中常用的I/O模型
  • 如何使用python运行Flask开发框架并实现无公网IP远程访问
  • 第三届828 B2B企业节开幕,大腾智能携手华为云共谱数字化新篇章
  • Linux网络编程IO管理
  • SpringCloud集成ELK
  • 【卷起来】VUE3.0教程-06-组件详解
  • JS Web
  • 【Linux】传输层协议——UDP
  • 算法学习攻略总结 : 入门至进阶,通关之路指南
  • 《卷积神经网络 CNN 原理探秘》