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的后端网关地址:

之后重启orche-web 的工作负载
分别修改imom biz-conf下的common.yml, imom-server.yml 中的华为后端配置:


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