先介绍一下我们微服务项目的部署情况:
之前使用的是内置的Tomcat容器部署方式,运行项目使用的
java -jar 项目文件
方式,然后使用k8s+docker容器化部署。
还没了解TongWeb部署的同学们,可以看看我前面写的几个关于TongWeb本地部署的文章。
本地TongWeb7部署web(SpringCloud)项目(Windows)
TongWeb7本地部署(Windows)
TongWeb7有很多版本
上面的版本,我都试过了,对于容器化部署很不友好,一个容器应用需要消耗2G左右的内容。
容器化部署企业版
容器化部署企业版+项目应用
问了客服
中间还让商务要了,微服务版本的(是把一些容器化的操作继承进去,比如构建docker镜像,这些操作我们都是预先做好的,用不到这些功能,启动的内存消耗和企业版相差不多,也不符合我们的情况)
加上自身应用内存,一个简单的微服务就需要消耗2G左右的内存(PS:我们原来部署方式一个简单的微服务应用,只需要分配cpu: 300m, memory: 1Gi),如果按照这种部署方式,我们的服务成本直接翻倍了,而且也不符合我们微服务中微的概念。
后面了解到,还有一个版本,内嵌版,最后我们采用的也是这个版本。
启动的内存消耗和CPU占用,和我们原来的部署方式差不多。
判断是嵌入式启动的tongweb启动
部署起来也很简单,替换tomcat内置的相关jar即可。
还有一个需要注意的,授权文件的配置
我们这边直接采用,通过挂载的方式,配置环境参数。
env:
- name: server.tongweb.license.path
value: '/opt/saas/license/license.dat'
附上我们的yaml文件提供给大家参考下(我删减掉一些关于我们项目的内容)
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: xxx
labels:
app: xxx-tongweb-server
name: xxx-tongweb-server
annotations:
kubesphere.io/description: tongweb内嵌式测试启动副本
kubesphere.io/alias-name: tongweb
spec:
replicas: 1
selector:
matchLabels:
app: xxx-tongweb-server
template:
metadata:
labels:
app: xxx-tongweb-server
spec:
volumes:
- name: source
emptyDir: {}
- name: log4j2
configMap:
name: saas-env
items:
- key: log4j2-spring.xml
path: log4j2-spring.xml
- name: license
configMap:
name: saas-env
items:
- key: license.dat
path: license.dat
initContainers:
- name: container-xxx-server-init-artifact
image: 'xxx.xx.xxx.xxx:xxxx/xxx-server'
command:
- sh
args:
- '-c'
- cp /opt/xxxx-server.war /source/
resources: {}
volumeMounts:
- name: source
mountPath: /source/
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
imagePullPolicy: Always
containers:
- name: container-xxx-server
image: 'xxx.xx.xxx.xx:7005/xxx/tongweb:7-xxxxx-test'
command:
- sh
args:
- '-c'
- >-
rm -rf /opt/saas/lib/spring-boot-starter-tomcat-2.2.5.RELEASE.jar &&
rm -rf /opt/saas/lib/tomcat-embed-core-9.0.31.jar &&
rm -rf /opt/saas/lib/tomcat-embed-el-9.0.31.jar &&
rm -rf /opt/saas/lib/tomcat-embed-websocket-9.0.31.jar &&
cp -r /opt/tongweb/* /opt/saas/lib/ &&
cd /opt/saas && tini -- java -cp xxx-server.war
-Dloader.path=xxx-server.war!/WEB-INF/classes/,xxx-server.war!/WEB-INF/,lib/
-Dserver.port=8080 -Ddebug=false -Dfile.encoding=utf-8
ports:
- name: http-8080
containerPort: 8080
protocol: TCP
env:
- name: server.tongweb.license.path
value: '/opt/saas/license/license.dat'
- name: LOG4J_CONFIGURATION_FILE
value: /opt/saas/log/log4j2-spring.xml
resources:
limits:
cpu: 300m
memory: 1Gi
requests:
cpu: 200m
memory: 512Mi
volumeMounts:
- name: source
mountPath: /opt/saas/
- name: log4j2
mountPath: /opt/saas/log/
- name: license
mountPath: /opt/saas/license/
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
imagePullPolicy: IfNotPresent
restartPolicy: Always
terminationGracePeriodSeconds: 30
dnsPolicy: ClusterFirst
serviceAccountName: default
serviceAccount: default
securityContext: {}
imagePullSecrets:
- name: nontax3-docker-host
schedulerName: default-scheduler
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 25%
maxSurge: 25%
博主新推出的gitee免费开源项目(商城+APP+小程序+H5),有兴趣的小伙伴可以了解一下。
生鲜商城kxmall-小程序 + App + 公众号H5: kxmall-生鲜商城+APP+小程序+H5。同时支持微信小程序、H5、安卓App、苹果App。支持集群部署,单机部署。可用于B2C商城,O2O外卖,社区超市,生鲜【带配套骑手端配送系统】。kxmall使用uniapp编码。使用Java开发,SpringBoot 2.1.x框架,MyBatis-plus持久层框架、Redis作为缓存、MySql作为数据库。前端vuejs作为开发语言。https://gitee.com/zhengkaixing/kxmall
- 阿里云服务器折扣场:点我进入
- 腾讯云服务器秒杀场:点我进入
- 淘宝优惠券专场:====点我进入====