【项目笔记】SpringCloud+Jenkins+Docker持续部署积木学堂
写在前面
本项目搞了三天两夜。。
好多东西不太理解,网上也搜不到答案,只能一点点的试,而且最开始目的是想压榨到服务器极限,
最后虽然成功部署,可是一段时间就会有微服务被kill掉。所以跟朋友又借了一台,各占一半内存,稳定性还高。
先说下准备工作
A:部署了九个微服务 (需要安装git,java,maven,docker)
B:部署了Mysql,Nacos,Redis,前端项目(需要安装docker,node,nginx)
动机
一开始想把积木学堂部署到阿里云送的那个半年的主机。
本项目一共九个微服务,加上服务器还需要mysql,redis,nacos三个服务。还可能会把前端也部署上去。
小伙伴们都说可能部署不了。所以为了不浪费时间,先测试一下使用内存。
(先看写在前面)
准备工作
首先打开Java自带的性能监测工具jvisualvm
就在java安装目录那个bin里面 jvisualvm.ext
打开之后啥也没干。发现这么一个现象。应该就是传说中jvm自动回收了
(这个是网关微服务,大概还在75M就自动回收了)
再看一下课程微服务edu,毕竟核心功能,发现他是400M才回收
http://localhost:8110/admin/edu/teacher/list
开始搞事情,打开JMeter
设置20线程,每个100条,我发现到了400M回收了,那我改一下。
依然400M回收了。如果大家同时400M 九个微服务,加上mysql之类的,肯定不够。
那我给他设置一个最大内存,看一下,会不会报错!!
-Xms64M -Xmx64M -XX:PermSize=512M -XX:MaxPermSize=1024M
50线程,每个200条共用12s,其实我觉得很顺滑啊。于是乎,我全部改了一下
我重启了这些服务
并没有出现可能的故障,也不确定这种方法是否准确,先继续往下做
正式开始
好 全部关闭!开始部署。应湖总要求。我重装了一下服务器,从头开始
简介
部署有两种方式
1.服务器安装java环境。
然后把打包的jar包扔上去,运行一下。
2.持续集成
持续集成(简称CI)指的是,频繁的(一天多次)将代码集成到主干。
持续部署(CD)
持续集成的目的,就是让产品快速迭代,同时还能保持高质量。
简单来说就是把代码提交到git上面,就自动根据规则部署成服务。
那这里使用第二种进行部署。
Jenkins介绍
Jenkins在这里充当了一个自动构建的角色。无需人工干预。一个配置简单和使用方便的持续集成服务器,或许可以写一个脚本,监控git是否有更新,有的话就下载下来,package一下。但是他最强大的功能是他有很多插件,比如邮件发送
项目部署
安装软件
我的Linux服务器是centon7
1.安装Java
查找java相关的列表
yum -y list java*
安装jdk
http://apache.apooloo.cn/#/down/f1b54d77df533af9d9de55cf3f4e2cea
cd /usr/local 放到此目录
tar -zxvf jdk-8u202-linux-x64.tar.gz
建立软连接
ln -s /usr/local/jdk1.8.0_202/ /usr/local/jdk
完成安装后验证
java -version
配置环境变量
vim /etc/profile
在文件最后加入:
#set java environment
export JAVA_HOME=/usr/local/jdk
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
修改/etc/profile之后让其生效
source /etc/profile
2.安装Maven
yum -y list maven* #查看了一下发现版本都特别低,跟平时用的不太一样,为了安全,还是手动安装吧
官网下载好托到/usr/local
解压
cd /usr/local
tar -zvxf apache-maven-3.6.3-bin.tar.gz
编辑文件
cd apache-maven-3.6.3
vim conf/settings.xml
找到localRepository
<localRepository>/opt/jarstore</localRepository>
找到mirror
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/central</url>
</mirror>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
你还没有jarstore文件夹
cd /opt
mkdir jarstore
配置环境变量
vim /etc/profile
在文件最后加入:
export MAVEN_HOME=/usr/local/apache-maven-3.6.3
export PATH=$MAVEN_HOME/bin:$PATH
修改/etc/profile之后让其生效
source /etc/profile
3.安装Git
yum -y install git
4.安装Docker
安装些必要的工具
yum install -y yum-utils device-mapper-persistent-data lvm2
添加软件源信息
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新并安装Docker-CE
yum makecache fast
yum -y install docker-ce
开启Docker服务
service docker start
这里到另一台服务器B也安装Docker,然后开始安装下面软件
安装Mysql
docker pull mysql #我这里直接装最新版了
然后创建一个外部目录,用来映射数据之类的
mkdir /opt/mysql
运行mysql
docker run -p 3306:3306 --name mymysql -v /opt/mysql/conf:/etc/mysql/conf.d -v /opt/mysql/logs:/logs -v /opt/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql
然后远程连接一下(如果你的服务器安全组规则没有配置,记得去开放下3306)
这时候顺便把本地开发时候的数据库上传上去
代码里面的和数据库有关的信息等会一起改。