一、基础环境配置
1. Java环境安装
bash# 安装OpenJDK 11
apt update
apt install -y openjdk-11-jdk
# 配置JAVA_HOME
echo "export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64" >> /etc/profile
echo "export PATH=\$PATH:\$JAVA_HOME/bin" >> /etc/profile
source /etc/profile
2. Maven配置
bash# 安装Maven
apt install -y maven
# 配置阿里云镜像源
mkdir -p /root/.m2
cat > /root/.m2/settings.xml << EOF
<settings>
<mirrors>
<mirror>
<id>aliyun</id>
<url>https://maven.aliyun.com/repository/public</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
</settings>
EOF
二、微服务组件部署
1. Nacos注册中心
yaml# docker-compose.yml
version: '3'
services:
nacos:
image: nacos/nacos-server:2.0.3
environment:
- MODE=standalone
- SPRING_PROFILES_ACTIVE=prod
- NACOS_AUTH_ENABLE=true
volumes:
- ./nacos/logs:/home/nacos/logs
ports:
- "8848:8848"
- "9848:9848"
2. Gateway网关服务
yaml# application.yml
server:
port: 8080
spring:
cloud:
gateway:
routes:
- id: user-service
uri: lb://user-service
predicates:
- Path=/api/user/**
- id: order-service
uri: lb://order-service
predicates:
- Path=/api/order/**
三、服务持续集成
1. Jenkins配置
groovy// Jenkinsfile
pipeline {
agent any
stages {
stage('Build') {
steps {
sh 'mvn clean package -DskipTests'
}
}
stage('Deploy') {
steps {
sh './deploy.sh'
}
}
}
}
2. 自动部署脚本
bash#!/bin/bash
# deploy.sh
APP_NAME="user-service"
JAR_NAME="$APP_NAME.jar"
# 停止旧服务
pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]; then
kill -9 $pid
fi
# 启动新服务
nohup java -jar \
-Xms512m -Xmx512m \
-XX:+UseG1GC \
target/$JAR_NAME \
--spring.profiles.active=prod \
> /dev/null 2>&1 &
四、监控系统搭建
1. Spring Boot Admin配置
java@EnableAdminServer
@SpringBootApplication
public class AdminApplication {
public static void main(String[] args) {
SpringApplication.run(AdminApplication.class, args);
}
}
2. Prometheus监控
yaml# prometheus.yml
scrape_configs:
- job_name: 'spring-boot'
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['localhost:8080']
五、日志系统集成
1. ELK配置
yaml# logback-spring.xml
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>localhost:5000</destination>
<encoder class="net.logstash.logback.encoder.LogstashEncoder" />
</appender>
2. 分布式追踪
yaml# application.yml
spring:
zipkin:
base-url: http://localhost:9411
sleuth:
sampler:
probability: 1.0
六、性能优化配置
1. JVM优化
bash# jvm.options
-Xms2g
-Xmx2g
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/var/log/heap.dump
2. 数据库连接池
yamlspring:
datasource:
type: com.zaxxer.hikari.HikariDataSource
hikari:
minimum-idle: 5
maximum-pool-size: 15
idle-timeout: 30000
pool-name: HikariCP
max-lifetime: 1800000
connection-timeout: 30000
七、安全配置
1. Spring Security配置
java@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/actuator/**").hasRole("ADMIN")
.antMatchers("/api/**").authenticated()
.and()
.csrf().disable()
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS);
}
}
2. 服务间认证
yaml# application.yml
feign:
client:
config:
default:
connectTimeout: 5000
readTimeout: 5000
requestInterceptors:
- com.example.FeignAuthRequestInterceptor
最佳实践建议
- 部署策略
- 采用蓝绿部署
- 实现优雅停机
- 配置健康检查
- 监控服务状态
- 高可用配置
- 服务多实例部署
- 配置负载均衡
- 实现熔断降级
- 部署服务网关
- 运维管理
- 统一配置管理
- 集中日志收集
- 监控告警设置
- 定期备份数据
本指南为您提供了在云服务器上部署SpringCloud微服务的完整解决方案。记住,微服务架构的部署是一个系统工程,需要考虑多个方面的因素。建议在正式部署前进行充分的测试和演练。
同时,要注意保持各个组件的版本兼容性,关注安全补丁更新,及时处理潜在的安全隐患。对于生产环境的微服务系统,建议建立完善的监控和告警机制,确保系统的稳定运行。