文档首页/ 工业数字模型驱动引擎/ 最佳实践/ 将应用运行态SDK部署至本地通用服务器/ 方式1:在本地通用服务器中部署应用运行态SDK
更新时间:2024-07-31 GMT+08:00
分享

方式1:在本地通用服务器中部署应用运行态SDK

当您希望将iDME应用以微服务的形式部署到本地通用服务器,可以更好地控制和管理自己的应用数据、减少数据传输的延迟时,可以选择此实施方式进行应用运行态SDK独立部署。后续,您还可以基于应用运行态灵活扩展,为上层应用提供使用HTTP协议进行通信的API调用能力。

准备事项

请在部署应用运行态SDK之前,提前获取SDK包和License文件。

关于如何获取SDK包请参见应用发布

检查SDK包(可选)

为防止应用运行态SDK包在存储、下载、传输过程中被篡改,建议在部署前检查SDK包是否完整。

您可以使用如下校验函数进行校验,当生成的文件签名与您获取的SDK包文件签名一致时,表示SDK包完整。

 public static String getSHA256(File file) {
        FileInputStream fileInputStream = null;
        try {
            MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
            fileInputStream = new FileInputStream(file);
            byte[] buffer = new byte[8192];
            int length;
            while ((length = fileInputStream.read(buffer)) != -1) {
                messageDigest.update(buffer, 0, length);
            }
            return new String(HexUtil.encodeHex(messageDigest.digest()));
        } catch (Exception ex) {
            log.error("getSHA256 error.", ex);
            return null;
        } finally {
            try {
                if (fileInputStream != null) {
                    fileInputStream.close();
                }
            } catch (IOException ex) {
                log.error("getSHA256 error when close inputStream.", ex);
            }
        }
}

其中,“MessageDigest”“java.security”组件,“HexUtil”“hutool”组件。

操作步骤

如下操作以CentOS 7.6 64位操作系统的ECS为例。

  1. 登录Linux弹性云服务器
  2. 将已获取的SDK包和License文件上传至弹性云服务器,具体操作请参见上传文件到云服务器方式概览
  3. 执行如下命令,将SDK包解压缩到部署服务器的工作目录。

    tar -xvf {SDK包的名称} -C {部署服务器的工作目录}

    例如,将SDK包“TestApp-sdk-default”解压缩到“/root/deploytest”路径下。

    tar -xvf TestApp-sdk-default -C /root/deploytest

  4. 执行如下命令,进入部署服务器的工作目录,例如“/root/deploytest”

    cd /root/deploytest

  5. 执行如下命令,打开“application.properties”文件。

    vim application.properties

  6. i切换至编辑模式,并根据实际的资源规划,参考资源配置说明,按需添加对应资源的配置信息。

    如下内容以通用配置和部分自定义配置为例。
    # 数据库配置
    RDS_IP=127.0.0.1
    RDS_PORT=5432
    RDS_PASSWORD=admin
    RDS_TYPE=postgresql
    RDS_NAME=root
    RDS_DATABASE=test
    spring.datasource.url=jdbc:postgresql://${RDS_IP}:${RDS_PORT}/${RDS_DATABASE}?sslmode=require&stringtype=unspecified
    rdm.hibernate.dialect=com.huawei.it.rdm.configuration.XdmPostgresqlDialect
    spring.datasource.driverClassName=org.postgresql.Driver
    rdm.dbType=postgresql
    
    # Redis配置
    REDIS_HOST=127.0.0.1
    REDIS_PASSWORD=admin
    REDIS_PORT=6379
    REDIS_TYPE=SINGLE
    
    # 公共信息配置
    TENANT_DOMAIN_ID=domainid
    TENANT_ID=application_id
    APP_NAME=TestApp
    APP_IDENTIFIER=application_id
    PAAS_APP_NAME=testapp
    PROJECT_ID=projectid
    RES_AK=testak
    RES_SK=testsk
    server.ssl.enabled=false
    olc.config.path=/root/deploytest/olc
    xdm.delegate.bean.inject=false
    server.servlet.context-path=/rdm_testapp_app/services/
    java.compile.lib.path=/root/deploytest/lib
    
    # MongoDB配置
    mongodb.init=true
    MONGODB_URI=mongodb://rwuser:admin@127.0.0.1:8635/sitautotest?authSource=admin
    MONGODB_DATABASE=test
    
    # Kafka配置
    kafka.init=true
    KAFKA_BOOTSTAP_SERVERS=127.0.0.1:9094, 127.0.0.2:9094
    
    # OBS配置
    OBS_END_POINT=https://obs.cn-north-4.myhuaweicloud.com
    BUCKET_NAME=test
    
    # IAM配置
    ssf.sysmgr.sessionfilter.loginUrl=https://auth.huaweicloud.com/authui/login.action?service=http://127.0.0.1:8003/rdm_testapp_app/services/v1/cas/login
    ssf.login.loginSuccessRedirectUrl=http://127.0.0.1:8003/rdm_testapp_app/services/index.html
    ssf.login.cas.serviceUrl=http://127.0.0.1:8003/rdm_sitautotest_app/services/v1/cas/login
    ssf.login.logoutUri=https://auth.huaweicloud.com/authui/logout
    ssf.login.cas.validateUrl=https://auth.huaweicloud.com/authui/serviceValidate
    IAM_END_POINT=https://iam.cn-north-4.myhuaweicloud.com
    IAM_LOGIN_ENDPOINT=https://auth.huaweicloud.com
    
    # Elasticsearch配置
    ES_USERNAME=admin
    ES_URL=127.0.01:9200
    ES_PASSWORD=admin
    ES_PORT=9200
    ES_SCHEMA=http
    ES_SYNC_ENABLE=true
    
    # DEW(KMS)配置
    KMS_END_POINT=https://kms.cn-north-4.myhuaweicloud.com
    KMS_KEY_ID=keyid
    
    # AOM配置
    AOM_END_POINT=https://aom.cn-north-4.myhuaweicloud.com
    AOM_CLUSTER_ID=clusterid
    
    # License配置
    xdm.license.licenseFile=/root/deploytest/test.dat
    xdm.license.keyFile=/root/deploytest/testKeyFile.txt

    其中,“License配置”的License文件路径需与2的存放路径保持一致。

  7. Esc,输入:wq,保存文件并返回。
  8. 执行如下命令,新建“startxdm.bash”脚本文件。

    vi startxdm.bash

  9. i切换至编辑模式,输入以下内容,设置启动应用运行态SDK脚本。

    # 指定启动类
    START_CLASS=com.huawei.microservice.rdm.RdmApplication
    
    # 指定启动类所在路径,为lib目录下
    LOAD_CLASSPATH=./lib/*:./
    BIND_ADDRESS=`hostname -I`
    
    # 从部署包中解压出olc配置文件
    jar xvf ./lib/microserviceTemplate.app-1.0.0-SNAPSHOT-small.jar olc
    
    # 执行java命令,以配置文件application.properties启动服务,并把日志输入到当前目录下的xdm.log中
    sh -c "java -Xms8g -Xmx8g -Dconfig.file=/root/deploytest/application.properties -classpath $LOAD_CLASSPATH $START_CLASS --server.address=${BIND_ADDRESS} -Diit.test=true >xdm.log 2>&1 &"

  10. Esc,输入:wq,保存文件并返回。
  11. 执行如下命令,设置“startxdm.bash”脚本文件权限。

    chmod +x startxdm.bash

  12. 执行如下命令,启动“startxdm.bash”脚本文件。

    ./startxdm.bash

  13. 完成部署后,xDM-F支持如下几种验证方式。您可以根据实际情况选择验证。

    • 方式一:查看服务日志
      执行如下命令,查看服务日志。
      tail -f xdm.log

      显示结果为类似如下信息,则说明启动成功。

      Started RdmApplication in xxx.xxx seconds (JVM running for xxx.xxx)
    • 方式二:调用指定接口

      启动“startxdm.bash”脚本文件后,约等待2分钟,调用如下健康检查接口,查询服务是否正常启动。

      http://{部署服务器的IP地址}:{部署服务器的端口号}/rdm_{应用的唯一标识}_app/services/v1/health

      例如:

      http://127.0.0.1:8003/rdm_123456_app/services/v1/health

      显示结果为如下信息,则说明启动成功。

      {"result":"SUCCESS","data":["success"],"errors":[]}
    • 方式三:访问可视化页面

      如果您已在资源规划中规划了单点登录的相关资源/云服务,并在部署时配置了单点登录信息,可以选择此方式进行验证。

      在浏览器中访问如下地址,查看服务是否启动成功。

      http://{部署服务器的IP地址}:{部署服务器的端口号}/rdm_{应用的唯一标识}_app/services/index.html

      例如:

      http://127.0.0.1:8003/rdm_123456_app/services/index.html

      转入应用运行态登录页面,输入登录账号和登录密码,成功登录并进入应用运行态页面,即表示启动成功,

相关文档