Java服务部署规范(内部使用)
1. 目的
Java服务在灰度环境和生产环境需要参照此文档进行部署.
2. 环境准备
2.1. 安装Java Cryptography Extension (JCE)
需要在JVM中安装JCE来进行加解密.
- 从http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html 下载JCE.
- 使用压缩包内的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个文件:
- 应用jar包, 例如financial-manager-core-1.0-SNAPSHOT.jar
- 服务安装文件, 例如financial-manager.service
- 服务安装脚本install
- 项目配置文件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
注意这个文件里的路径必须都为绝对路径. 需要修改的内容:
/usr/local/java/jdk/bin/java
: 这是java命令的执行路径, 环境和机器不一样可能导致命令的执行路径不同.-Xms1024m -Xmx1024m
: Java堆内存大小的配置, 最大内存和最小内存应该一样, 具体配置多少根据业务确定.-Xloggc:/data/logs/financial_manager_gc.log
: gc日志文件路径/usr/local/software/financial-manager/financial-manager-core-1.0-SNAPSHOT.jar
: jar包路径./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
需要修改的内容:
server.port
: 修改启动端口spring.cloud.config.profile
: prev为灰度环境, prod为生产环境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.encrypt.keyStore.*
: 需要修改为生产环境的密钥配置.
4. 安装服务
运行install脚本即可完成安装
5. 如何运行, 停止, 以及查询服务的运行状态
systemctl start user-service
systemctl stop user-service
systemctl status user-service
6. 示例文件
示例文件可见附件