戴志强1
Published on 2026-10-19 / 12 Visits
0
0

docker方式部署华为mbm后端

docker方式部署华为mbm后端

1. 背景

估计虚拟机所在的物理机对特定的数据包进行拦截,华为mbm的某些接口经常出现Connect reset的问题,多试一次又正常,访问链路: gateway->msm/mdm->mysql 全部被拦截,将华为mbm服务使用docker方式部署,network 使用docker原生的docker0 网桥可以避免该问题。

部署方式:

k8s部署: imom系统, 华为的前端

docker部署: 华为的后端(gateway, mdm, msm)

2. docker-compose版本

docker-compose需要以下的版本之上,支持"-, . "的环境变量

docker-compose -v
Docker Compose version v2.20.3

3. 部署华为相关的mysql

cat my.cnf

# ==========================================
# 1. 基础环境与路径配置 (来自 Bitnami 配置)
# ==========================================
default_authentication_plugin=caching_sha2_password
skip-name-resolve
explicit_defaults_for_timestamp
basedir=/opt/bitnami/mysql
plugin_dir=/opt/bitnami/mysql/lib/plugin
port=3306
socket=/opt/bitnami/mysql/tmp/mysql.sock
datadir=/bitnami/mysql/data
tmpdir=/opt/bitnami/mysql/tmp
pid-file=/opt/bitnami/mysql/tmp/mysqld.pid
log-error=/opt/bitnami/mysql/logs/mysqld.log
bind-address=*

# ==========================================
# 2. 性能与字符集配置 (合并)
# ==========================================
# 字符集采用 Bitnami 默认 (注意:UTF8 在 MySQL 中通常指 utf8mb3)
character-set-server=UTF8
collation-server=utf8_general_ci
max_allowed_packet=16M

# ==========================================
# 3. 内存限制核心配置 (来自上一轮 16GB 限制方案)
# ==========================================
# 核心缓存设为 14G,预留空间给系统和连接缓冲
innodb_buffer_pool_size = 14G
innodb_buffer_pool_instances = 14

# 线程级缓冲区 (调低以防止高并发下内存溢出)
sort_buffer_size = 256K
join_buffer_size = 256K
read_buffer_size = 128K
read_rnd_buffer_size = 256K

# 临时表限制
max_heap_table_size = 64M
tmp_table_size = 64M

# ==========================================
# 4. 连接与超时配置 (合并)
# ==========================================
# 连接数采用 Bitnami 配置 (1000),配合上述调低的缓冲区使用
max_connections=1000
interactive_timeout=28800
wait_timeout=28800

# ==========================================
# 5. 业务兼容性与日志配置 (合并)
# ==========================================
# 表名大小写与 SQL 模式采用 Bitnami 配置
lower_case_table_names=1
sql_mode=IGNORE_SPACE,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

# 日志配置
slow_query_log=1
long_query_time=3.0
innodb_log_buffer_size = 64M

# 安全与性能微调
log_bin_trust_function_creators = 1
innodb_flush_log_at_trx_commit = 2
sync_binlog = 1000
innodb_io_capacity = 200
innodb_io_capacity_max = 400
innodb_flush_neighbors = 1

[client]
port=3306
socket=/opt/bitnami/mysql/tmp/mysql.sock
default-character-set=UTF8
plugin_dir=/opt/bitnami/mysql/lib/plugin

[manager]
port=3306
socket=/opt/bitnami/mysql/tmp/mysql.sock
pid-file=/opt/bitnami/mysql/tmp/mysqld.pid

docker-compose 启动配置:

version: '3.8'

services:
  mysql:
    image: 192.168.168.207:30002/bitnami/mysql:8.0.36-debian-11-r0
    container_name: mysql-prod
    restart: always
    user: "1001:0"
    ports:
      - "3306:3306"
    environment:
      - BITNAMI_DEBUG=false
      - MYSQL_ROOT_PASSWORD=nhdTaVMSAC
      - MYSQL_DATABASE=my_database
    volumes:
      - /var/mysql_prod_data:/bitnami/mysql
      - ./my.cnf:/opt/bitnami/mysql/conf/my.cnf:ro
    healthcheck:
      test: ["CMD", "/bin/bash", "-ec", "password_aux=\"${MYSQL_ROOT_PASSWORD:-}\"; if [[ -f \"${MYSQL_ROOT_PASSWORD_FILE:-}\" ]]; then password_aux=$(cat \"$MYSQL_ROOT_PASSWORD_FILE\"); fi; mysqladmin status -uroot -p\"${password_aux}\""]
      interval: 10s
      timeout: 3s
      retries: 30
      start_period: 15s
    deploy:
      resources:
        limits:
          memory: 8G
        reservations:
          memory: 1G
    security_opt:
      - no-new-privileges:true


使用以下的命令启动数据库:

docker-compose up -d

4. 部署华为mbm

转换k8s的ConfigMap为docker-compose 的环境变量如下:

cat mbm-api-gateway-config.env:

ISC_JVM_ARGS="-XX:MaxMetaspaceSize=192M -XX:MaxDirectMemorySize=384M -XX:MetaspaceSize=128M -Xms896M -Xss512K -XX:MaxGCPauseMillis=200 -XX:InitiatingHeapOccupancyPercent=45 -XX:MaxTenuringThreshold=15 -XX:+ExplicitGCInvokesConcurrent -XX:+AlwaysPreTouch -XX:AutoBoxCacheMax=20000 -XX:+PrintFlagsFinal -XX:+PrintClassHistogram -Djdk.tls.rejectClientInitiatedRenegotiation=true -Djdk.tls.ephemeralDHKeySize=4096 -Dolc.config.path=/opt/cloud/config/olc"
aom.config.eventSwitch=false
jwt.ignore-perm="/imes/msmService/v1/tenant,/imes/msmService/v1/file/upload,/mes/labelservice/saveFiles,.*?/testVip/.*?,.*?/websocket.*,.*?/services/etenantminiapp/.*?,.*?/servlet/edm/.*?,/imes/mdmService/.*,/**/dme-entity-extend/**/,/services/etenantminiapp/**,**/imes/mdmService/**"
jwt.ignore-token="/imes/msmService/v1/i18n/list,.*?/testVipFull/.*?,/**/services/etenantminiapp/**,/imes/msmService/v1/tenant"
jwt.ignore-token-exist=/imes/msmService/v1/auth/logout
mbm.gw.openapi-auth.enabled=false
mbm_console-iam-white-list=
mbm_web_env="VUE_APP_WEB_TITLE,VUE_APP_SSO_URL,VUE_APP_SSO_LOGOUT_URL,VUE_APP_CATALOG_OPENTYPE,VUE_APP_TENANT_ID"
olc.sdk.control.switch=off
request_api_url-msm-host=http://mbm-msm-service:9091

cat mbm-mdm-service-config.env:

ISC_JVM_ARGS="-XX:MaxMetaspaceSize=768M -XX:MaxDirectMemorySize=750M -XX:MetaspaceSize=400M -Xms3346M -Xss512K -XX:MaxGCPauseMillis=200 -XX:InitiatingHeapOccupancyPercent=45 -XX:MaxTenuringThreshold=15 -XX:+ExplicitGCInvokesConcurrent -XX:+AlwaysPreTouch -XX:AutoBoxCacheMax=20000 -XX:+PrintFlagsFinal -XX:+PrintClassHistogram -Djdk.tls.rejectClientInitiatedRenegotiation=true -Djdk.tls.ephemeralDHKeySize=4096"
ISC_MAX_HEAP_SIZE=3346
devspore_datasource_sources_centerMdm_driverClassName=org.mariadb.jdbc.Driver
devspore_datasource_sources_centerMdm_jdbcUrl="jdbc:mariadb://192.168.181.88:3306/mbm_prod_mdm?allowMultiQueries=true&useSSL=false&verifyServerCertificate=false&allowPublicKeyRetrieval=true"
#devspore_datasource_sources_centerMdm_jdbcUrl="jdbc:mariadb://192.168.181.88:32741/mbm_prod_mdm?allowMultiQueries=true&useSSL=false&verifyServerCertificate=false&allowPublicKeyRetrieval=true"
devspore_datasource_sources_centerMdm_password=nhdTaVMSAC
devspore_datasource_sources_centerMdm_username=root
spring.profiles.active=dme-atomic-api

cat mbm-redis-config.env:

REDIS_HOST=192.168.181.153
REDIS_PASSWORD=
REDIS_PORT=63794
isc.redismq.password=
spring.data.redis.host=192.168.181.153
spring.data.redis.password=
spring.data.redis.port=63794
spring.redis.host=192.168.181.153
spring.redis.password=
spring.redis.port=63794
spring_redis_password=

cat mbm-scc-config.env:

ISC_CONFIG_FILE_scc.conf=
ISC_SCC_PRIMARY_KS=
ISC_SCC_STANDBY_KS=
NEED_DECRYPT_FLAG=
devspore.security.provider.scc.tools-dir=

cat mbm-common-config.env:

SERVER_SSL_ENABLED=false
TENANT_ID=067cfa58c8404a908780bda7e934e1b1
aom.config.eventSwitch=true
config_iam_endpoint=https://iam.cn-north4.huaweicloud.com
config_iam_login=https://auth.cn-north4.huaweicloud.com
devspore_security_logging_desensitize-mode=OFF
kafka.bootstrapServers=
mbm_endpoint_aom=https://aom.cn-north4.huaweicloud.com
mbm_endpoint_iam=https://iam.cn-north4.huaweicloud.com
mbm_endpoint_obs=https://obc.cn-north4.huaweicloud.com
mbm_endpoint_vpc=https://vpc.cn-north4.huaweicloud.com
mbm_endpoint_vpcep=https://vpcep.cn-north4.huaweicloud.com
runningState.secondLevelCache=false
spring.cloud.nacos.config.enabled=false
spring.cloud.nacos.discovery.enabled=false
spring.cloud.servicecomb.config.enabled=false
spring.cloud.servicecomb.discovery.enabled=false
token_expire_time=12000
token_refresh_time=24
token_salt_gateway=aaWDCfduna826D23xd
token_salt_open-api=quera8Escahcmda
token_salt_password=E27hadhckae
token_salt_prefix=EEedac283y
token_user_time=250

cat mbm-msm-service-config.env:

ISC_JVM_ARGS="-XX:MaxMetaspaceSize=384M -XX:MaxDirectMemorySize=384M -XX:MetaspaceSize=128M -Xms896M -Xss512K -XX:MaxGCPauseMillis=200 -XX:InitiatingHeapOccupancyPercent=45 -XX:MaxTenuringThreshold=15 -XX:+ExplicitGCInvokesConcurrent -XX:+AlwaysPreTouch -XX:AutoBoxCacheMax=20000 -XX:+PrintFlagsFinal -XX:+PrintClassHistogram -Djdk.tls.rejectClientInitiatedRenegotiation=true -Djdk.tls.ephemeralDHKeySize=4096"
ISC_MAX_HEAP_SIZE=896
VUE_APP_SSO_LOGOUT_URL=
VUE_APP_SSO_URL=
VUE_APP_TENANT_ID=067cfa58c8404a908780bda7e934e1b1
VUE_APP_WEB_TITLE=MBM PROD(正式)环境
devspore_datasource_sources_centerMsm_driverClassName=org.mariadb.jdbc.Driver
devspore_datasource_sources_centerMsm_jdbcUrl="jdbc:mariadb://192.168.181.88:3306/mbm_prod_msm?allowMultiQueries=true&useSSL=false&verifyServerCertificate=false&allowPublicKeyRetrieval=true"
#devspore_datasource_sources_centerMsm_jdbcUrl="jdbc:mariadb://192.168.181.88:32741/mbm_prod_msm?allowMultiQueries=true&useSSL=false&verifyServerCertificate=false&allowPublicKeyRetrieval=true"
devspore_datasource_sources_centerMsm_password=nhdTaVMSAC
devspore_datasource_sources_centerMsm_username=root
file_handle_type=SFS
file_sfs_base-path=/sfs/public
logging.level.root=ERROR
mbm.msm.catalog-max-size=10000
mbm.msm.dict-max-size=10000
mbm.msm.user.phone-email.key=MTIzNDU2Nzg5MDEyMzQ1Ng==
mbm_login-mode=local
mbm_web_env="VUE_APP_WEB_TITLE,VUE_APP_SSO_URL,VUE_APP_SSO_LOGOUT_URL,VUE_APP_CATALOG_OPENTYPE,VUE_APP_TENANT_ID"


cat mbm-routes-config.env:

center-designer-service=http://mbm-designer-service:9099
center-ems-service=http://mbm-em-service:9197
center-label-service=http://mbm-label-service:8003
center-les-service=http://mbm-les-service:9095
center-mdm-service=http://mbm-mdm-service:9092
center-msm-service=http://mbm-msm-service:9091
center-qms-service=http://mbm-qm-service:9199
center-sfc-service=http://mbm-wom-service:9093
center_ems_feign=http://mbm-em-service:9197
center_label_feign=http://mbm-label-service:8003
center_les_feign=http://mbm-les-service:9095
center_mdm_feign=http://mbm-mdm-service:9092
center_msm_feign=http://mbm-msm-service:9091
center_qms_feign=http://mbm-qm-service:9199
center_sfc_feign=http://mbm-wom-service:9093
site-sfc-service=http://mbm-sfc-service:7095
site_sfc_feign=http://mbm-sfc-service:7095

docker-compose 启动配置:

version: '3.8'

services:
  mbm-api-gateway:
    image: swr.cn-south-1.myhuaweicloud.com/mbm/api-gateway-service:1e995ca_2026.0313.1739.32_dev-x86_64
    ports:
      - "9090:9090"
    env_file:
      - mbm-routes-config.env
      - mbm-redis-config.env
      - mbm-common-config.env
      - mbm-scc-config.env
      - mbm-api-gateway-config.env
    environment:
      ISC_JVM_ARGS: "-XX:MaxMetaspaceSize=256M -XX:MaxDirectMemorySize=384M -XX:MetaspaceSize=128M -Xms896M -Xss512K -XX:MaxGCPauseMillis=200 -XX:ZCollectionInterval=200 -XX:+ExplicitGCInvokesConcurrent -XX:+AlwaysPreTouch -XX:AutoBoxCacheMax=20000 -XX:+PrintFlagsFinal -XX:+PrintClassHistogram -Djdk.tls.rejectClientInitiatedRenegotiation=true -Djdk.tls.ephemeralDHKeySize=4096 -Dolc.config.path=/opt/cloud/config/olc"
      ISC_MAX_HEAP_SIZE: "896"
    deploy:
      resources:
        limits:
          cpus: '0.5'
          memory: 2G
        reservations:
          cpus: '0.1'
          memory: 2G
    restart: always

  mbm-msm-service:
    image: swr.cn-south-1.myhuaweicloud.com/mbm/msm-service:de78db5_2026.0422.1021.56_dev-bugfix-x86_64
    ports:
      - "9091:9091"
    env_file:
      - mbm-routes-config.env
      - mbm-redis-config.env
      - mbm-common-config.env
      - mbm-scc-config.env
      - mbm-msm-service-config.env
    deploy:
      resources:
        limits:
          memory: 2248M
    restart: always

  mbm-mdm-service:
    image: swr.cn-south-1.myhuaweicloud.com/mbm/mdm-service:d8d8859_2026.0420.1422.30_dev-x86_64
    ports:
      - "9092:9092"
    env_file:
      - mbm-routes-config.env
      - mbm-redis-config.env
      - mbm-common-config.env
      - mbm-scc-config.env
      - mbm-mdm-service-config.env
    deploy:
      resources:
        limits:
          memory: 6G
    restart: always

使用以下的命令启动华为mbm后端服务:

docker-compose up -d

5. 配置更改

当使用docker的方式部署华为的mbm服务时,有以下的相关配置需要更改:

在华为orche-web-nginx-config 的nginx 配置上:

更改imes的后端网关地址:

image-xKYE.png

之后重启orche-web 的工作负载

分别修改imom biz-conf下的common.yml, imom-server.yml 中的华为后端配置:

image-MogA.png

image-Nwoi.png

之后分别重启imom-server, imom-kernel, imom-flow, imom-spc 的工作负载


Comment