18、云原生微服务部署与监控指南

云原生微服务部署与监控指南

1. 微服务部署策略

在云原生环境中,选择合适的部署策略对于微服务的成功运行至关重要。以下介绍两种常见的部署策略:A/B 测试部署和滚动部署。

1.1 A/B 测试部署

A/B 测试部署是一种用于测试应用程序功能的技术,适用于引入新界面或改变应用外观和感觉的前端应用。由于用户反馈非常重要,直接在生产环境中进行测试是最佳选择。用户的反应可以表明所做的更改是否直观,从而根据反馈调整软件。

从 OpenShift 的角度来看,A/B 测试部署与金丝雀部署类似,只是将两个服务的权重都设置为 50%。如果之前没有设置服务权重,需将其设置为 50%。在 OpenShift 中,由于路由组件的存在,实现这种部署技术非常容易。

1.2 滚动部署

滚动部署是一种逐步将当前应用程序替换为新版本的技术。这种部署技术允许在更新过程中无停机时间,但需要同时运行应用程序的旧版本和新版本,这要求数据模型具有兼容性。

滚动部署的过程如下:
1. 部署新版本应用程序的一个实例。
2. 当新版本应用程序通过就绪和健康检查后,安排销毁一个旧版本实例。
3. 当最后一个预期的新版本实例准备好使用时,销毁最后一个旧版本实例,此时只有新版本可用。

1.3 部署策略总结

部署策略 适用场景 特点
A/B 测试部署 前端应用引入新界面或改变外观 直接在生产环境测试,根据用户反馈调整
滚动部署 逐步更新应用程序 无停机时间,需数据模型兼容

2. 微服务监控平台

监控是任何微服务架构,尤其是基于云的架构的关键。一个好的监控平台可以持续观察系统的性能、可靠性、资源可用性和消耗、安全性和存储等。选择合适的监控平台可能很困难,因为涉及很多组件。以下是正确实施监控解决方案平台的任务:
1. 使用一个平台 :能够发现和掌握运行系统的信息,并使用图表以综合方式汇总结果。
2. 识别指标和事件 :应用程序负责暴露这些指标,平台应只获取最相关的指标。
3. 拆分数据 :将应用程序监控数据与基础设施监控数据分开存储,但集中监控视图。
4. 警报 :当达到限制时,为应用程序和基础设施提供警报。
5. 观察用户体验 :包括响应时间、吞吐量、延迟和错误等。

2.1 Prometheus

Prometheus 是目前最常用的开源监控解决方案,它 100% 开源且由社区驱动,所有组件都在 GitHub 上以 Apache 许可证 2.0 版本提供,也是云原生计算基金会的成员项目。

2.1.1 Prometheus 特点
  • 维度数据 :实现了高度维度的数据模型,时间序列由指标名称和一组键值对标识。
  • 强大查询 :PromQL 允许对收集的时间序列数据进行切片和切块,以生成临时图表、表格和警报。
  • 出色可视化 :具有多种可视化数据的模式,包括内置表达式浏览器、Grafana 集成和控制台模板语言。
  • 高效存储 :以高效的自定义格式将时间序列存储在内存和本地磁盘上,通过功能分片和联合实现扩展。
  • 简单操作 :每个服务器独立可靠,仅依赖本地存储,用 Go 编写,所有二进制文件静态链接,易于部署。
  • 精确警报 :基于 Prometheus 的灵活 PromQL 定义警报,并维护维度信息,警报管理器处理通知和静音。
  • 众多客户端库 :客户端库允许轻松对服务进行检测,支持超过十种语言,自定义库也易于实现。
  • 众多集成 :现有的导出器允许将第三方数据桥接到 Prometheus,例如系统统计信息、Docker、HAProxy、StatsD 和 JMX 指标。
2.1.2 安装 Prometheus

安装 Prometheus 前,需确保 OpenShift 集群已启动并运行,具体步骤如下:
1. 检查 OpenShift 集群状态:

./oc cluster status
  1. 如果集群未运行,启动集群:
./oc cluster up --server-loglevel=9
  1. 以开发者身份登录:
./oc login -u developer -p developer
  1. 创建名为 monitoring 的项目:
./oc new-project monitoring
  1. 部署 Prometheus 平台:
./oc new-app prom/prometheus
  1. 暴露 Prometheus 服务:
./oc expose svc/prometheus
  1. 查看 Prometheus 应用:
./oc expose service prometheus
2.1.3 Prometheus 操作
  • 查看 Prometheus 抓取指标的来源:在状态菜单中选择 Targets。
  • 查看所有可用指标:将 Prometheus 应用的上下文路径设置为 metrics。
  • 执行 PromQL 查询:例如执行 process_cpu_seconds_total 可查看总用户和系统 CPU 时间。

2.2 Node-exporter

Prometheus 提供的指标对于基于容器的云解决方案(如 OpenShift)来说是不够的,还需要关于主机、容器和 Pod 的指标。Node-exporter 是一个用于暴露 Linux 内核服务器相关指标的工具,这些指标包括 CPU 利用率和内存进程等,可以以时间序列的方式导入 Prometheus 进行图形化表示。

2.2.1 安装 Node-exporter

安装 Node-exporter 非常简单,可直接使用其 Docker 镜像,步骤如下:
1. 部署 Node-exporter:

./oc new-app prom/node-exporter
  1. 暴露 Node-exporter 服务:
./oc expose svc/node-exporter
  1. 暴露 Node-exporter 路由:
./oc expose service node-exporter
2.2.2 配置 Prometheus 以抓取 Node-exporter 指标

为了让 Prometheus 抓取 Node-exporter 提供的指标,需要更新 Prometheus 的配置文件。具体步骤如下:
1. 查看 Prometheus 当前配置:

./oc get pods
./oc rsh prometheus-1-qgggp
ls -la
cat prometheus.yml
  1. 创建包含新配置的 prometheus.yaml 文件:
global:
  scrape_interval: 15s
  evaluation_interval: 15s
alerting:
  alertmanagers:
    - static_configs:
      - targets:
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"
scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']
  - job_name: 'node-exporter'
    static_configs:
      - targets: ['node-exporter:9100']
  1. 创建 ConfigMap:
./oc create configmap prometheus-config-map --from-file=prometheus.yaml
  1. 在 Prometheus 部署中设置 ConfigMap:从 Web 控制台选择 Prometheus 部署并编辑 YAML 配置,可参考 此 URL 中的 YAML 文件代码。

2.3 Grafana

Grafana 是 Prometheus 的最佳搭档,它是开源的,提供了一个创建和展示仪表盘的出色界面,主要用于使用图表、饼图、绘图、条形图和仪表可视化时间序列数据。Grafana 支持查询 Prometheus,自 2015 年 10 月 28 日发布的 Grafana 2.5.0 版本起就包含了 Prometheus 数据源。

2.3.1 安装 Grafana

安装 Grafana 也很简单,可直接使用其 Docker 镜像,步骤如下:
1. 部署 Grafana:

./oc new-app grafana/grafana
  1. 暴露 Grafana 服务:
./oc expose svc/grafana
  1. 暴露 Grafana 路由:
./oc expose service grafana
2.3.2 配置 Grafana
  1. 打开浏览器,访问 Web 控制台显示的路由。
  2. 使用管理员用户名和密码登录 Grafana,然后更改默认密码。
  3. 设置数据源:选择 Prometheus 数据源,URL 设置为 Prometheus 服务名称,保存并测试设置。
  4. 导入统计信息:选择 Prometheus 框,然后选择 Dashboards 选项卡,导入所有可用统计信息。

通过以上部署和配置,我们可以为容器化的微服务搭建一个完整的监控平台,使用 Prometheus 收集和存储指标,通过 Node-exporter 扩展指标范围,最后使用 Grafana 以图形化方式展示所有指标。

graph LR
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    A(OpenShift 集群):::process --> B(A/B 测试部署):::process
    A --> C(滚动部署):::process
    A --> D(Prometheus 监控):::process
    D --> E(Node - exporter 扩展):::process
    D --> F(Grafana 可视化):::process

这个流程图展示了在 OpenShift 集群中进行微服务部署和监控的主要步骤,包括 A/B 测试部署、滚动部署、Prometheus 监控、Node-exporter 扩展和 Grafana 可视化。

3. 构建 Spring Boot 微服务

在云原生微服务的开发中,除了前面提到的部署和监控相关内容,使用合适的框架来构建微服务也是关键环节。Spring Boot 就是这样一个优秀的框架,它能帮助开发者轻松构建和运行微服务及云原生应用。

3.1 Spring Boot 概述

Spring Boot 历史上是 Java EE 的首个替代方案,并且通常以生产就绪的方式实现新的架构设计模式。多年来,它不断发展以克服开源社区提出的主要关键问题,比如:
- 需要太多 XML 配置文件来实现。
- 难以管理 Spring 模块之间的相互依赖关系。

3.2 创建 Spring Boot 微服务

可以在 GitHub 仓库中找到创建 Spring Boot 微服务的代码,地址为: https://github.com/PacktPublishing/Hands-On-Cloud-Native-Microservices-with-Jakarta-EE/tree/master/appendix-A 。虽然这里没有详细展开代码内容,但基本步骤可以总结如下:
1. 初始化项目 :可以使用 Spring Initializr( https://start.spring.io/ )来快速创建一个 Spring Boot 项目骨架,选择所需的依赖,如 Web、Data JPA 等。
2. 编写业务逻辑 :在生成的项目基础上,编写控制器、服务层和数据访问层的代码,实现具体的业务功能。
3. 配置应用 :在 application.properties application.yml 文件中配置应用的各种参数,如数据库连接信息、端口号等。
4. 测试和部署 :编写单元测试和集成测试来验证代码的正确性,然后将应用部署到合适的环境中。

3.3 Spring Boot 与其他技术的对比

为了更好地理解 Spring Boot 的优势,下面将 Spring Boot 与其他相关技术进行简单对比:
| 技术 | 优点 | 缺点 |
| ---- | ---- | ---- |
| Spring Boot | 快速开发、自动配置、易于部署 | 可能存在过度依赖 Spring 生态系统的问题 |
| Java EE | 成熟的企业级解决方案、标准规范多 | 配置复杂、开发效率相对较低 |
| MicroProfile.io | 专注于微服务、轻量级 | 生态系统相对较小 |

4. 总结与建议

4.1 部署与监控总结

通过前面的介绍,我们了解了多种微服务部署策略和监控平台的搭建方法。A/B 测试部署适合前端应用功能测试,能根据用户反馈调整软件;滚动部署则可以在无停机时间的情况下逐步更新应用。在监控方面,Prometheus 作为核心监控工具,具有强大的功能和扩展性,Node-exporter 可以扩展其指标收集范围,Grafana 则提供了出色的可视化界面。

4.2 技术选择建议

在实际项目中,选择合适的技术和工具至关重要。以下是一些建议:
- 部署策略选择 :如果需要快速验证新功能的可行性,A/B 测试部署是不错的选择;如果希望在更新应用时不影响用户体验,滚动部署更为合适。
- 监控平台选择 :对于开源且功能强大的监控解决方案,Prometheus + Grafana 是一个很好的组合。如果项目对主机、容器和 Pod 指标有较高要求,还可以集成 Node-exporter。
- 微服务框架选择 :如果追求快速开发和简单配置,Spring Boot 是一个很好的选择;如果项目需要遵循企业级标准和规范,Java EE 可能更合适;而对于专注于微服务的项目,MicroProfile.io 也是一个可考虑的选项。

4.3 未来展望

随着云原生技术的不断发展,微服务的部署和监控技术也将不断演进。未来可能会出现更多自动化、智能化的部署和监控工具,帮助开发者更高效地管理微服务。同时,随着容器技术和 Kubernetes 的广泛应用,与这些技术的集成也将变得更加紧密。

graph LR
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    G(选择技术):::process --> H(Spring Boot 构建微服务):::process
    G --> I(选择部署策略):::process
    I --> J(A/B 测试部署):::process
    I --> K(滚动部署):::process
    G --> L(选择监控平台):::process
    L --> M(Prometheus 监控):::process
    M --> N(Node - exporter 扩展):::process
    M --> O(Grafana 可视化):::process

这个流程图展示了在构建微服务过程中,从选择技术开始,到构建微服务、选择部署策略和监控平台的整个流程。通过合理选择和组合这些技术和工具,可以构建出高效、稳定的云原生微服务系统。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值