Java服务部署规范(内部使用)

1. 目的

Java服务在灰度环境和生产环境需要参照此文档进行部署.

2. 环境准备

2.1. 安装Java Cryptography Extension (JCE)

需要在JVM中安装JCE来进行加解密.

  1. 从http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html 下载JCE.
  2. 使用压缩包内的local_policy.jar和US_export_policy.jar替换掉JRE安装路径下的lib/security下面的文件.

2.2. 准备td-config目录

2.2.1 准备密钥文件tdkeys.jks

将生产环境的tdkeys.jks拷贝到/usr/local/software/td-config目录下

2.2.2. 准备enviroments环境变量文件

在/usr/local/software/td-config目录下创建enviroments文件, 这个文件内容在灰度环境和生产环境不相同.
灰度环境:

SERVICE_LOG_FOLDER=/data/logs
EUREKA_URL="http://192.168.1.14:21111/eureka"

生产环境:

SERVICE_LOG_FOLDER=/data/logs
EUREKA_URL="http://192.168.1.70:21111/eureka,http://192.168.1.71:21111/eureka,http://192.168.1.72:21111/eureka"

2.3. 创建/data/logs目录

如果目录不存在, 需要创建/data/logs目录, 用来存放日志文件

3. 安装包

安装包有4个文件:

  1. 应用jar包, 例如financial-manager-core-1.0-SNAPSHOT.jar
  2. 服务安装文件, 例如financial-manager.service
  3. 服务安装脚本install
  4. 项目配置文件override.properties

3.1. 应用jar包

一般由开发提供, 后期可以从CI环境获取.

3.2. 服务安装文件

以financial-manager项目为例, 文件名为financial-manager.service, 脚本内容如下:

[Unit]
Description=financial-manager service
After=syslog.target

[Service]
EnvironmentFile=/usr/local/software/td-config/enviroments
Type=simple
ExecStart=/usr/local/java/jdk/bin/java -server -Xms1024m -Xmx1024m -XX:+UseG1GC -verbose:gc -Xloggc:/data/logs/financial_manager_gc.log -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/logs -jar /usr/local/software/financial-manager/financial-manager-core-1.0-SNAPSHOT.jar --spring.config.location=/usr/local/software/financial-manager/override.properties
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

注意这个文件里的路径必须都为绝对路径. 需要修改的内容:

  1. /usr/local/java/jdk/bin/java: 这是java命令的执行路径, 环境和机器不一样可能导致命令的执行路径不同.
  2. -Xms1024m -Xmx1024m: Java堆内存大小的配置, 最大内存和最小内存应该一样, 具体配置多少根据业务确定.
  3. -Xloggc:/data/logs/financial_manager_gc.log: gc日志文件路径
  4. /usr/local/software/financial-manager/financial-manager-core-1.0-SNAPSHOT.jar: jar包路径.
  5. /usr/local/software/financial-manager/override.properties: 配置文件override.properties路径.

3.3. 服务安装脚本

以financial-manager项目为例, 脚本名为install, 脚本内容如下:

#bash/bin!
cp financial-manager.service /etc/systemd/system/
systemctl enable financial-manager.service

3.4. 启动参数文件override.properties

server.port=9003 #启动端口

logging.level.root=INFO
logging.level.com.tuandai=INFO
logging.level.cn.tdw=INFO

spring.application.index=0 #实例编号, 具体见下面解释
spring.cloud.config.profile=prev #启动环境, prev为灰度环境, prod为生产环境

# 加解密相关
encrypt.keyStore.location=file:///usr/local/software/td-config/tdkeys.jks
encrypt.keyStore.password=4DpeZbUL^Xy%KdHm #需要替换为生产环境password
encrypt.keyStore.alias=tdkey
encrypt.keyStore.secret=oQ$!3QnXm%&cS%GQ #需要替换为生产环境secret

需要修改的内容:

  1. server.port: 修改启动端口
  2. spring.cloud.config.profile: prev为灰度环境, prod为生产环境
  3. spring.application.index: spring.application.index代表了实例编号, 对于同一个服务, 实例编号需要不同. 假设综合理财需要在192.168.1.70~73部署4个实例, 则spring.application.index需要分别配置为0, 1, 2, 3. 例如192.168.1.70机器上的spring.application.index设置为0, 192.168.1.71机器上的spring.application.index设置为1.
  4. encrypt.keyStore.*: 需要修改为生产环境的密钥配置.

4. 安装服务

运行install脚本即可完成安装

5. 如何运行, 停止, 以及查询服务的运行状态

systemctl start user-service
systemctl stop user-service
systemctl status user-service

6. 示例文件

示例文件可见附件

原文地址:https://www.cnblogs.com/chengjunhao/p/9323221.html