基于云服务器的SpringCloud微服务部署

一、基础环境配置

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. 数据库连接池

yaml
spring:
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

最佳实践建议

  1. 部署策略
  • 采用蓝绿部署
  • 实现优雅停机
  • 配置健康检查
  • 监控服务状态
  1. 高可用配置
  • 服务多实例部署
  • 配置负载均衡
  • 实现熔断降级
  • 部署服务网关
  1. 运维管理
  • 统一配置管理
  • 集中日志收集
  • 监控告警设置
  • 定期备份数据

本指南为您提供了在云服务器上部署SpringCloud微服务的完整解决方案。记住,微服务架构的部署是一个系统工程,需要考虑多个方面的因素。建议在正式部署前进行充分的测试和演练。

同时,要注意保持各个组件的版本兼容性,关注安全补丁更新,及时处理潜在的安全隐患。对于生产环境的微服务系统,建议建立完善的监控和告警机制,确保系统的稳定运行。

实操指南知识库

云服务器WAF配置与防护

2024-12-13 17:34:46

实操指南知识库

云服务器ClickHouse实时数据分析平台搭建

2024-12-16 15:36:16

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧