keepalived + nginx + springboot搭建主从分发和负载均衡服务集群
1 背景
1.1 实现目标
硬件运维团队提供了一个vip(虚拟ip),需要使用keepalived实现基于这个vip的两台分发器(nginx)的主备切换,以实现高可用。通过nginx实现后端服务的负载均衡,分摊压力。
1.2 服务器
ip | 说明 |
---|---|
10.50.1.300 | 后端服务(springboot)服务器 |
10.50.1.301 | 后端服务(springboot)服务器 |
10.50.1.302 | nginx & 前端(H5)服务器 |
10.50.1.303 | nginx & 前端(H5)服务器 |
2 开始搭建
2.1 配置后端(springboot)服务器
2.1.1 使用maven打包项目
虽然springboot提供了一个默认的maven打包工具,但默认的工具会将资源文件、引用jar包都打到同一个jar包中,为了分开打包,使用了apache的打包工具。
具体maven构建部分配置如下:
<build>
<plugins>
<!-- 打包jar -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<!-- 不打包资源文件 -->
<excludes>
<exclude>*.**</exclude>
<exclude>*/*.xml</exclude>
</excludes>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<!-- MANIFEST.MF 中 Class-Path 加入前缀 -->
<classpathPrefix>lib/</classpathPrefix>
<!-- jar包不包含唯一版本标识 -->
<useUniqueVersions>false</useUniqueVersions>
<!-- 指定入口类 -->
<mainClass>com.xincheng.bma.BmaApplication</mainClass>
</manifest>
<manifestEntries>
<!-- MANIFEST.MF 中 Class-Path 加入资源文件目录 -->
<Class-Path>./resources/</Class-Path>
</manifestEntries>
</archive>
<outputDirectory>${project.build.directory}</outputDirectory>
</configuration>