使用 Istio 管理微服务流量  

使用 Istio 为您的微服务提供高级流量管理和请求跟踪功能

| By Anthony Amanse, Animesh Singh

Description

开发人员正在摆脱大型单体应用的束缚,转而采用小巧而专一的微服务来加速实施并加强系统弹性。为了满足这个新生态系统的需求,开发人员需要为已部署的微服务创建一个具备负载均衡、高级流量管理、请求跟踪和连接功能的服务网络。

概览

如果您最近花时间开发过应用程序,那么有件事情您肯定明白:单体应用正在成为过去式。如今的应用程序离不开服务发现、注册、路由和连接。这给微服务架构的开发和运维人员提出了一些全新的挑战。

如果您的服务网格的规模和复杂性都在不断增长,那么您可能知道理解和管理服务网格有多困难。我们也遇到过同样的问题:如何让这些越来越多的微服务能够彼此连接、执行负载均衡,并提供基于角色的路由?如何在这些微服务上启用传出流量,并测试金丝雀部署?仅仅创建一个独立的应用程序是不够的,那么我们该如何管理微服务领域的复杂性呢?

Istio 是 IBM、Google 和 Lyft 合作创建的项目,旨在帮助您应对这些挑战。Istio 是一项开放技术,它为开发人员提供一种途径来无缝连接、管理和保护不同微服务组成的网络——无论是什么平台、来源或供应商。在此次开者之旅中,您将了解 Istio 如何通过基于容器的 sidecar 架构来提供复杂的流量管理控制,它既可用于微服务之间的相互通信,也可以用于传入和传出的流量。您还将了解如何监控和收集请求跟踪信息,以便更好地了解应用流量。此次开发者之旅适合所有新一代微服务应用的开发人员。

  1. 用户在 Kubernetes 上部署其配置好的应用程序。应用程序 “BookInfo” 由 4 个微服务组成,分别由不同的语言编写:Python、Java、Ruby 和 Node.js。Reviews 微服务使用 Java 编写,有 3 个不同的版本。
  2. 为了使应用程序能够使用 Istio 的功能,用户需要注入 Istio Envoy。Envoy 作为 sidecar 部署在每个微服务上。将 Envoy 注入微服务中,意味着 Envoy sidecar 将负责管理该服务的传入和传出调用。然后,用户访问运行在 Istio 上的应用程序。
  3. 现在已经部署了应用程序,用户可以为示例应用程序配置 Istio 的高级功能。要启用流量管理,用户需要基于权重和 HTTP 标头来修改应用的服务路由。在此阶段,Review 微服务的 v1 和 v3 版本分别获得 50% 的流量;v2 版本仅对特定用户启用。
  4. 用户配置服务的访问控制。为了拒绝来自 Review v3 版本的流量访问 Ratings 微服务,用户需要创建一个 Mixer 规则。
  5. 完成应用程序的部署和配置后,用户可以启用遥测和日志收集功能。为了收集监控指标和日志,用户需要配置 Istio Mixer 并安装所需的 Istio 加载项 Prometheus 和 Grafana。要收集 trace span,用户需要安装和配置 Zipkin 加载项。
  6. 用户为 Bookinfo 创建一个外部数据源;例如,IBM Cloud 中的 Compose for MySQL 数据库。
  7. 原始示例 BookInfo 应用程序中的 3 个微服务 Details、Ratings 和 Reviews 已修改,以便使用 MySQL 数据库。为了连接到 MySQL 数据库,需要在 Details 微服务中添加一个 MySQL Ruby gem;向 Ratings Node 微服务中添加一个 MySQL 模块。向 Reviews 微服务的 v1、v2 和 v3 版本中添加一个 mysql-connector-java 依赖项。
  8. 用户部署应用程序并启用具有传出流量的 Envoy 代理。Envoy 代理作为 sidecar 与每个微服务部署在一起。这意味着 Envoy sidecar 将会管理服务的传入和传出调用。在本例中,因为 Envoy 仅支持 http/https 协议,所以通过为 MySQL 部署提供 IP 地址范围,可以将该代理配置为不拦截传出 MySQL 连接的流量。在应用程序启动并运行后,用户可以使用 IP 和 Node 端口访问它。

Instructions

可以在 README 中找到本 Code Pattern 的详细步骤。这些步骤将展示如何:
  1. 部署示例 BookInfo 应用程序并将其注入 Istio sidecar。
  2. 配置流量。
  3. 配置访问控制。
  4. 收集监控指标、日志和 trace span。
  5. 为应用程序创建一个外部数据源。
  6. 修改样本应用程序以使用外部数据源。
  7. 部署启用了传出流量的应用程序微服务和 Istio Envoy。

相关博客

全新 Watson Machine Learning Accelerator 助力机器学习训练,速度超越竞争对手 46 倍

一款全新的 Watson Machine Learning(WML)产品,旨在帮助企业训练和部署内置于 IBM Watson Studio 中的机器学习模型,并采用 IBM Watson OpenScale 进行监测。

继续阅读 全新 Watson Machine Learning Accelerator 助力机器学习训练,速度超越竞争对手 46 倍

通过无服务器计算实现更多功能:将 Cloud Functions 与无服务器 SQL 结合使用

可以通过 SQL Query,以无服务器方式对 Cloud Object Storage 数据运行 SQL 语句。不必担心对服务器大小的调整。只需编写语句并将它们提交到云上运行。

继续阅读 通过无服务器计算实现更多功能:将 Cloud Functions 与无服务器 SQL 结合使用

相关链接

英文原文

本 Code Pattern 翻译自 Manage microservices traffic using Istio(2017-07-27)。