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

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

部署前准备​

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: hengshi202020
  GREENPLUM_QUERY_PWD: query202020
  GREENPLUM_ETL_PWD: etl202020

1
2
3

  • configmap.yaml

shell

  HS_ENGINE_PWD: hengshi202020
  ENGINE_QUERY_PASSWORD: query202020
  ENGINE_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-sense
    hsrole: hengshi
  ports:
  - protocol: TCP
    name: "8080"
    port: 8080
    targetPort: 8080
  - protocol: TCP
    name: "5005"
    port: 5005
    targetPort: 5005
  type: NodePort

ingress​

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

shell

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: hengshi-sense
  namespace: hengshi-sense
  annotations:
    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: nginx
  rules:
    - host: xxxx.hengshi.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: hengshi-sense
                port:
                  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-0
    segment-1
    segment-2
    segment-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.kler.cn/a/301473.html

相关文章:

  • Redis知识分享(三)
  • 使用 Python 和 Py2Neo 构建 Neo4j 管理脚本
  • 记录配置ubuntu18.04下运行ORBSLAM3的ros接口的过程及执行单目imu模式遇到的问题(详细说明防止忘记)
  • ARM 汇编指令
  • uniapp 实现tabbar分类导航及滚动联动效果
  • windows C#-异步编程概述(二)
  • flink中disableChaining() 的详解
  • Redis面对数据量庞大处理方法
  • Jmeter_循环获取请求接口的字段,并写入文件
  • 如何实现视频数据的PES打包和传输?
  • 【JavaSE】基础学习以及简单的计算器应用程序GUI实现
  • 【Kubernetes】常见面试题汇总(十)
  • ffmpeg编译连接报错 undefined reference to `uncompress‘
  • leetcode练习 单词搜索
  • 【区块链 + 人才服务】基于区块链技术助力人才证书数字化 | FISCO BCOS应用案例
  • wordpress建立数据库连接失败 数据库删除恢复
  • 【Linux】信号的产生、保存与处理
  • 网页时装购物系统:Spring Boot技术的实际应用
  • 【双指针】N数之和
  • [SWPUCTF 2021 新生赛]web方向(一到六题) 解题思路,实操解析,解题软件使用,解题方法教程
  • 猫咪掉毛怎么处理?希喂、米家、范罗士宠物空气净化器用哪款?
  • Linux 删除 当前下的 mysql-8.0.31 空文件夹
  • ChatGPT的底层逻辑
  • 物联网的设计
  • ubuntu 安装 jdk
  • 【游戏杂谈】关于靠谱及不靠谱的游戏立项方式探讨