java 部署springweb项目到两台服务器上,防止其中一台服务器挂了,另一台服务器顶上。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 部署springweb项目到两台服务器上,防止其中一台服务器挂了,另一台服务器顶上。相关的知识,希望对你有一定的参考价值。

小弟在此问各位大神,我知道分布式注册中心,还有其他方法么,谢谢

参考技术A 楼主的这种情况,需要用到服务器集群、负载均衡相关技术。实现集群有两种方式,一是一台机器里面安装两个服务器软件,同时开启软件实现集群;二是多台机器安装同一款服务器软件或者不同的服务器软件实现集群。不同的服务器和不同的操作系统有不同的集群配置,这些干货CSDN上非常多,你上去搜。 参考技术B 1. 消息队列 ,各种MQ 2. 负载分流,LVS、Haproxy、nginx 参考技术C Nginx的负载均衡配置最简单 参考技术D 找个运维

Jenkins使用FTP进行一键部署及回滚2(Windows)(项目实践)

Jenkins使用FTP进行一键部署及回滚2(Windows)(项目实践)

前提:

这一篇是继上一篇http://www.cnblogs.com/EasonJim/p/6092938.html的真实项目实践。

思路和大致实现步骤请参照上一篇文章。

注意:这篇文章涉及到两台服务器:1为测试服务器。2为正式服务器。且,两台服务器都必须安装了jenkins。

注意2:这里所说的一键部署是指从测试服务器到正式服务器的发布功能。

提示:如果出现CLI调用的权限或者错误问题,参考:http://www.cnblogs.com/EasonJim/p/6086018.html

具体操作:

一、配置正式服务器的工程

选择构建项目时,选择【构建一个自由风格的软件项目】

1、解压工程:

命令行:

echo [INFO] 备份压缩操作
call C:\\"Program Files"\\WinRAR\\Rar.exe a -x*\\Upload* -x*\\ueditor* -x*\\UploadFolder* %FilePath%.bak.rar %UnzipPath%
echo [INFO] 解压操作
call c:\\"Program Files"\\winrar\\rar.exe x -ep2 -o+- %FilePath% %UnzipPath%

说明:

先备份再解压,也就是说每一次操作之前都要备份。

1)部署时,比如上传的文件名为1.rar,那么备份文件为1.rar.bak.rar。

2、还原工程:

命令行:

复制代码
echo [INFO] 备份压缩操作
call C:\\"Program Files"\\WinRAR\\Rar.exe  a -k -r -s -m1 -x*\\Upload* -x*\\ueditor* -x*\\UploadFolder* -x*\\Web.config -x*\\DownloadFile* -x*\\ErrorLog* -x*\\LogFiles* %FilePath%-%BUILD_ID%.restorebak.rar %UnzipPath%
echo [INFO] 解压操作
set "url=%UnzipPath%"
call c:\\"Program Files"\\winrar\\rar.exe x -ep2 -o+- %FilePath% %url:~0,3%
复制代码

说明:

先备份再解压,也就是说每一次操作之前都要备份。

0)压缩时我加入了buildid作为参数,避免还原同一个时会重复的问题。

1)回滚时,比如上传备份的文件名为1.rar.bak.rar,那么回滚操作备份文件为1.rar.bak.rar.restorebak.rar。

2)这里由于上面备份的压缩包是全路径的,所以我用字符串切割提取到盘符直接解压。

二、配置测试服务器的工程

1、一键部署工程:

选择构建项目时,选择【构建一个自由风格的软件项目】

1)配置工程信息:

 

2)配置批处理进行压缩:

说明:这里采用规则的命名方式,且最后会拷贝到workspace中,因为ftp上传软件只支持当前工作空间的目录。

批处理如下:

复制代码
echo [INFO] 压缩要上传的文件,这里已经排除了一些文件
cd D:\\wwwroot\\nhq\\wwwroot\\
call C:\\"Program Files"\\WinRAR\\Rar.exe a -k -r -s -m1 -x*\\Upload* -x*\\ueditor* -x*\\UploadFolder* -x*\\Web.config -x*\\DownloadFile* -x*\\ErrorLog* -x*\\LogFiles* -ag{%BUILD_ID%.push} D:\\wwwroot\\nhq\\wwwroot\\
move %BUILD_ID%.push.rar %workspace%
复制代码

3)配置FTP上传:

 

在【Name】上选择的server是需要手动进行配置的,如下:

安装插件【Publish Over FTP

在【系统管理】->【系统设置】->【Publish over FTP】->点击【增加】按钮,增加一个要连接的FTP:

注意:

【Source files】表示的不是绝对路径,而是jenkins的workpase的路径,相当于相对路径,如果要上传整个目录包括子目录的,最后加上【\\**】;

【Remove prefix】表示去除目录前缀,如果不去除,将会按照上面的目录依次创建。

【Remote directory】为ftp的存放目录,如果上面没有这个目录将会自动创建。

【Exclude files】为要排除的文件和文件夹,上面为参考。

4)配置CLI的调用服务:

注意:这里是直接调用正式服务器的cli服务。

批处理如下:

echo [INFO] 通过CLI调用公网Jenkins进行解包
java -jar "C:\\Program Files (x86)\\Jenkins\\war\\WEB-INF\\jenkins-cli.jar" -s http://192.168.199.1:8080/ build Unzip -p FilePath=E:\\wwwroot\\inetpub\\bak\\%BUILD_ID%.push.rar -p UnzipPath=E:\\wwwroot\\inetpub\\wwwroot\\TestBank --username administrator --password administrator

参数说明参考上面的说明。

5)配置邮件发送:

 

触发点为无论结果如何都发送。

2、一键回滚工程:

选择构建项目时,选择【构建一个自由风格的软件项目】

1)配置工程信息:

2)配置构建选择参数:

提示:这里的Project就是上面配置的一键部署的工程,能自动识别到构建ID。

3)调用CLI进行生成环境的回滚:

批处理如下:

复制代码
echo [INFO] 通过CLI调用公网Jenkins进行解包
Setlocal enabledelayedexpansion
set url="%ProjectName%"
set "buildID="
set url=%url::=/%
set url=%url:///=/%
set url=%url://=/%
for /f "tokens=1,2,3,4,5,6* delims=/" %%a in (%url%) do (
 set "buildID=%%f"
)
java -jar "C:\\Program Files (x86)\\Jenkins\\war\\WEB-INF\\jenkins-cli.jar" -s http://192.169.199.1:8080/ build Restore -p FilePath=E:\\wwwroot\\inetpub\\bak\\%buildID%.push.rar.bak.rar -p UnzipPath=E:\\wwwroot\\inetpub\\wwwroot\\TestBank --username administrator --password administrator
复制代码

提示:这里上面采用的批处理切割获取buildid,用于指定要回滚哪个版本。

4)配置邮件通知:

触发点:

 

 到此,配置全部搞定。

以上是关于java 部署springweb项目到两台服务器上,防止其中一台服务器挂了,另一台服务器顶上。的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins使用FTP进行一键部署及回滚2(Windows)(项目实践)

linux自动部署--docket部署spring web和springboot项目

linux自动部署--docket部署spring web和springboot项目

虚拟机分区

两台服务器手动部署大数据平台

Linux两台服务器mysql数据库同步