HAP 微服务
下载镜像
在 Kubernetes 集群环境中,需要在各微服务节点所在的服务器上分别执行此操作
- 服务器支持访问互联网
- 服务器不支持访问互联网
crictl pull registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-hap:7.2.4
crictl pull registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-doc:2.0.0
crictl pull registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-command:node1018-python36
离线镜像文件下载链接,下载完成后上传到部署服务器
https://pdpublic.mingdao.com/private-deployment/offline/mingdaoyun-hap-linux-amd64-7.2.4.tar.gz
https://pdpublic.mingdao.com/private-deployment/offline/mingdaoyun-doc-linux-amd64-2.0.0.tar.gz
https://pdpublic.mingdao.com/private-deployment/offline/mingdaoyun-command-linux-amd64-node1018-python36.tar.gz
在服务器上解压离线镜像
gunzip -d mingdaoyun-hap-linux-amd64-7.2.4.tar.gz
gunzip -d mingdaoyun-doc-linux-amd64-2.0.0.tar.gz
gunzip -d mingdaoyun-command-linux-amd64-node1018-python36.tar.gz
导入解压后的离线镜像
ctr -n k8s.io image import mingdaoyun-hap-linux-amd64-7.2.4.tar
ctr -n k8s.io image import mingdaoyun-doc-linux-amd64-2.0.0.tar
ctr -n k8s.io image import mingdaoyun-command-linux-amd64-node1018-python36.tar
部署管理器
默认仅在 Kubernetes Master 第一台服务器上操作
-
下载管理器
- 服务器支持访问互联网
- 服务器不支持访问互联网
wget https://pdpublic.mingdao.com/private-deployment/7.2.4/mingdaoyun_private_deployment_captain_linux_amd64.tar.gz# 管理器下载链接,下载完成后上传到部署服务器https://pdpublic.mingdao.com/private-deployment/7.2.4/mingdaoyun_private_deployment_captain_linux_amd64.tar.gz -
创建目录,并解压管理器到新创建的目录下
mkdir /usr/local/MDPrivateDeployment/tar -zxvf mingdaoyun_private_deployment_captain_linux_amd64.tar.gz -C /usr/local/MDPrivateDeployment/ -
写入 HAP 管理器服务所依赖的管理器的 systemd 单元文件
cat > /etc/systemd/system/hap-manager.service <<'EOF'[Unit]Description=HAP ManagerAfter=network-online.targetWants=network-online.target[Service]Type=oneshotWorkingDirectory=/usr/local/MDPrivateDeploymentExecStart=/usr/bin/bash ./service.sh startRemainAfterExit=yes[Install]WantedBy=multi-user.targetEOF -
注释掉管理器脚本中
docker相关的检查项sed -ri '/^function check\(\)/,/^}/{s/^([[:space:]]*)(checkExecList|checkDockerRuntime|checkDockerVersion)/\1# \2/}' /usr/local/MDPrivateDeployment/service.sh -
执行管理器启动检查
bash /usr/local/MDPrivateDeployment/service.sh check -
启动管理器服务
systemctl daemon-reloadsystemctl start hap-managersystemctl enable hap-manager
部署微服务
默认仅在 Kubernetes Master 第一台服务器上操作
-
生成初始配置文件
cd /usr/local/MDPrivateDeployment/bash ./service.sh install https://hap.domain.comecho -n 'StageStart' > installer.stage -
配置
config.yaml文件中 ConfigMap 信息config.yaml默认在/data/mingdao/script/kubernetes路径下
执行
vim config.yaml编辑文件,将下面的变量值修改为实际部署环境的信息apiVersion: v1kind: ConfigMapmetadata:name: env-listnamespace: defaultdata:ENV_APP_VERSION: "7.2.4"ENV_MYSQL_HOST: "192.168.10.2"ENV_MYSQL_PORT: "3306"ENV_MYSQL_USERNAME: "root"ENV_MYSQL_PASSWORD: "123456"ENV_MONGODB_URI: "mongodb://hap:123456@192.168.10.4:27017,192.168.10.5:27017,192.168.10.6:27017"ENV_MONGODB_OPTIONS: "?maxIdleTimeMS=600000&maxLifeTimeMS=1800000"ENV_REDIS_HOST: "192.168.10.13"ENV_REDIS_PORT: "6379"ENV_REDIS_PASSWORD: "123456"ENV_KAFKA_ENDPOINTS: "192.168.10.7:9092,192.168.10.8:9092,192.168.10.9:9092"ENV_ELASTICSEARCH_ENDPOINTS: "http://192.168.10.10:9200,http://192.168.10.11:9200,http://192.168.10.12:9200"ENV_ELASTICSEARCH_PASSWORD: "elastic:123456"ENV_FILE_ENDPOINTS: "192.168.10.16:9001,192.168.10.17:9002,192.168.10.18:9003,192.168.10.19:9004"ENV_FILE_ACCESSKEY: "storage"ENV_FILE_SECRETKEY: "123456"ENV_MINGDAO_INTRANET_ENDPOINT: "www:8880"ENV_ADDRESS_MAIN: "https://hap.domain.com"ENV_ADDRESS_ALLOWLIST: ""ENV_CAPTAIN_ENDPOINT: "http://192.168.10.20:38880"ENV_HEALTHCHECK: "off"ENV_API_TOKEN: "4PrArcXYquO1sHlV9evsDqFKUUJ1kWVAg7v6oGcTKRNG9fUY"ENV_TIME_ZONE: "Asia/Shanghai"以上示例中 MySQL 与 Redis 均按单节点或主从模式配置,若您的环境采用 MySQL MGR 或 Redis 哨兵模式,点击展开查看配置调整方法
MySQL MGR 模式
如果 MySQL 采用 MGR(Group Replication)+ Router 架构,需将示例中的
ENV_MYSQL_HOST修改为任意一台 Router 的地址,ENV_MYSQL_PORT修改为 Router 读写端口6446,并额外追加以下变量:ENV_RDB_TYPE: "10"ENV_RDB_URI_MDPROJECT: "Server=192.168.15.204,192.168.15.205,192.168.15.206;Port=6446;Database=MDProject;uid=root;password=实际密码;"ENV_RDB_URI_MDLOG: "Server=192.168.15.204,192.168.15.205,192.168.15.206;Port=6446;Database=MDLog;uid=root;password=实际密码;"ENV_RDB_URI_MDSTRUCTURE: "Server=192.168.15.204,192.168.15.205,192.168.15.206;Port=6446;Database=MDStructure;uid=root;password=实际密码;"ENV_RDB_URI_MDCALENDAR: "Server=192.168.15.204,192.168.15.205,192.168.15.206;Port=6446;Database=MDCalendar;uid=root;password=实际密码;"ENV_RDB_URI_MDAPPLICATION: "Server=192.168.15.204,192.168.15.205,192.168.15.206;Port=6446;Database=MDApplication;uid=root;password=实际密码;"追加变量说明:
-
ENV_RDB_TYPE:固定填写10,启用 MGR 多节点连接模式 -
ENV_RDB_URI_*连接串各字段:-
Server:填写所有 Router 节点的 IP,多个地址以英文逗号分隔 -
Port:默认为6446(Router 读写端口) -
Database:数据库名称固定,请勿修改 -
uid:填写连接 MySQL 的用户名 -
password:填写uid对应的登录密码,替换示例中的占位值
-
Redis 哨兵模式
如果 Redis 采用哨兵(Sentinel)架构,需将示例中的
ENV_REDIS_HOST、ENV_REDIS_PORT、ENV_REDIS_PASSWORD删除,替换为以下三个哨兵变量(两组变量不可同时存在):ENV_REDIS_SENTINEL_ENDPOINTS: "192.168.10.21:26379,192.168.10.22:26379,192.168.10.23:26379"ENV_REDIS_SENTINEL_MASTER: "mymaster"ENV_REDIS_SENTINEL_PASSWORD: "123456"变量说明:
-
ENV_REDIS_SENTINEL_ENDPOINTS:填写所有哨兵节点的地址,格式为IP:端口,多个节点以英文逗号分隔,哨兵默认端口为26379 -
ENV_REDIS_SENTINEL_MASTER:填写 Redis 哨兵的 master 名称,默认通常为mymaster -
ENV_REDIS_SENTINEL_PASSWORD:填写 Redis 的认证密码,替换示例中的占位值
初次部署需修改的环境变量说明:
变量名 说明 ENV_MYSQL_HOST【MySQL 单机或主从】填写 MySQL 主节点地址;若使用 MGR + Router 架构,填写任意一台 Router 的地址。 ENV_MYSQL_PORT【MySQL 单机或主从】填写 MySQL 服务端口;若使用 MGR + Router 架构,填写 Router 读写端口 6446。ENV_MYSQL_USERNAME填写 MySQL 数据库登录用户名。 ENV_MYSQL_PASSWORD填写 MySQL 数据库登录密码。 ENV_RDB_TYPE【MySQL MGR 模式】固定填写 10,启用 MGR 多节点连接模式。ENV_RDB_URI_MDPROJECT【MySQL MGR 模式】MDProject 库的连接串,格式参见上方 MGR 配置说明。 ENV_RDB_URI_MDLOG【MySQL MGR 模式】MDLog 库的连接串,格式参见上方 MGR 配置说明。 ENV_RDB_URI_MDSTRUCTURE【MySQL MGR 模式】MDStructure 库的连接串,格式参见上方 MGR 配置说明。 ENV_RDB_URI_MDCALENDAR【MySQL MGR 模式】MDCalendar 库的连接串,格式参见上方 MGR 配置说明。 ENV_RDB_URI_MDAPPLICATION【MySQL MGR 模式】MDApplication 库的连接串,格式参见上方 MGR 配置说明。 ENV_MONGODB_URI填写 MongoDB 的连接地址,可为单节点、副本集或分片集群格式。 ENV_REDIS_HOST【Redis 主从或单机模式】填写 Redis 服务的主机地址。 ENV_REDIS_PORT【Redis 主从或单机模式】填写 Redis 服务端口。 ENV_REDIS_PASSWORD【Redis 主从或单机模式】填写 Redis 服务访问密码。 ENV_REDIS_SENTINEL_ENDPOINTS【Redis 哨兵模式】填写哨兵节点地址,多个地址以英文逗号分隔(例如: 192.168.10.21:26379,192.168.10.22:26379,192.168.10.23:26379)。ENV_REDIS_SENTINEL_MASTER【Redis 哨兵模式】填写 Redis 哨兵的 master 名称。 ENV_REDIS_SENTINEL_PASSWORD【Redis 哨兵模式】填写 Redis 的认证密码。 ENV_KAFKA_ENDPOINTS填写 Kafka 集群节点地址,多个节点以逗号分隔(例如: 192.168.10.7:9092,192.168.10.8:9092)。ENV_ELASTICSEARCH_ENDPOINTS填写 Elasticsearch 节点访问地址,集群模式下多个节点以逗号分隔,地址前需包含 http://协议(例如:http://192.168.10.10:9200,http://192.168.10.11:9200)。ENV_ELASTICSEARCH_PASSWORD填写 Elasticsearch 访问凭证,格式为 用户名:密码。ENV_FILE_ENDPOINTS填写 HAP 文件服务节点地址,多个节点用逗号分隔(例如: 192.168.10.16:9001,192.168.10.17:9002)。ENV_FILE_ACCESSKEY填写 HAP 文件服务访问密钥 AccessKey。 ENV_FILE_SECRETKEY填写 HAP 文件服务访问密钥 SecretKey。 ENV_ADDRESS_MAIN填写 HAP 系统实际访问地址(例如: https://hap.domain.com)。ENV_ADDRESS_ALLOWLIST可选,填写 HAP 系统的扩展访问地址白名单,多个地址用逗号分隔。 ENV_CAPTAIN_ENDPOINT填写实际部署的管理器服务器地址(例如: http://192.168.10.20:38880)。 -
修改完成后保存退出,确保所有配置符合当前部署环境,再继续执行后续步骤
-
启动 HAP 微服务
cd /data/mingdao/script/kubernetes/bash start.sh在
/data/mingdao/script/kubernetes/目录下:start.sh用于启动 HAP 微服务stop.sh用于停止 HAP 微服务
-
检查 HAP 微服务状态
kubectl get pod -o wide-
正常情况下 Pod 状态均为 2/2 且 Running
-
若发现某个 Pod 启动失败或状态异常,可使用以下命令查看其重启或错误日志
kubectl logs -p <pod-name>
-
-
待 Nginx 做好访问地址的代理后,即可通过配置的地址访问HAP系统