linkerd官方文档中文版
  • Introduction
  • 官方文档
    • 概况
      • 介绍
      • linkerd是什么?
    • 入门
      • 概况
      • 本地运行
      • 用docker运行
      • 在kubernetes中运行
      • 在DC/OS中运行
      • 用istio运行
      • 在ECS中运行
      • 管理
    • 特性
      • 概况
      • 负载均衡
      • 熔断
      • 服务发现
      • 动态请求路由
      • 重试次数和截止时间
      • TLS
      • HTTP代理集成
      • 透明代理
      • gRPC
      • 分布式跟踪
      • 仪器仪表
    • 配置
      • 概况
      • linkerd
      • namerd
    • 高级
      • 概述
      • 路由
      • namerd
      • dtabs
      • 部署
      • 插件
    • 支持
      • 常见问题
      • 获取帮助
      • 外部资源
      • 联系我们
    • 企业
      • 企业
  • 官方博客
    • 超越轮循:为了延迟的负载均衡
    • LINKERD:用于微服务的TWITTER风格可操作性
  • 全文标签总览
Powered by GitBook
On this page
  • 用linkerd作HTTP代理
  • 使用HTTP代理
  • 备选方案
  1. 官方文档
  2. 特性

HTTP代理集成

PreviousTLSNext透明代理

Last updated 6 years ago

几乎所有 HTTP 客户端都支持通过中间代理进行调用。传统上,这被用于在与外部世界的连接受到限制的防火墙环境中运行。然而,由于 linkerdd 可以作为 HTTP 代理,并且由于使用代理通常可以在没有代码更改的情况下实现,所以这种方法为使用 HTTP 的应用程序提供了一个简单的集成路径。

用linkerd作HTTP代理

linkerd 可以作为 HTTP 代理工作,无需任何额外的配置,提供关键功能,如,和,无需额外的费用。默认情况下,linkerd 会根据作为请求的一部分发送的 HTTP host 路由 HTTP 请求。例如,假设 linkerd 在端口 4140 上本地运行,并且已配置为将请求路由到在其他地方运行的“hello”服务的实例。在这种场景下,可以利用 linkerd 的代理集成,并使用以下方式向“hello”服务发出 curl 请求:

$ http_proxy=localhost:4140 curl http://hello/

通过设置 http_proxy 变量,curl 将直接发送代理请求到 linkerd,而不在 DNS 中实际查找“hello”。linkerd 依次在每个被配置为用于服务发现的后端查找“hello”服务,并且它将相应地路由请求。

Using an HTTP proxy Configuring your application to use an HTTP proxy can often be done without code changes. However, the specifics of this configuration are language-dependent. Here are some examples for common setups:

使用HTTP代理

配置应用程序使用 HTTP 代理通常可以在不修改代码的情况下完成。但是,这种配置的细节是依赖于语言的。以下是常见设置的一些示例:

  • C,Go,Python,Ruby,Perl,PHP,curl,wget,Node.js 的请求包:这些语言和工具支持 http_proxy 环境变量,它在所有请求中设置全局 HTTP 代理。简单地设置这个变量就好了。

  • Java,Scala,Clojure和JVM语言:可以通过设置 http.proxyHost 和 http.proxyPort 环境变量(例如,java -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=4140)将 JVM 配置为使用 HTTP 代理...)。

  • Node.js 对于Node而言,使用全局代理没有方便的无代码修改的方法。选项包括 或 包。

备选方案

原则上,linkerd 可以在请求的任何组件上进行路由, 从进入端口到有效载荷内容。实际上,对于 HTTP 调用,在 host 上路由(使用默认 methodAndHost 标识符)或 URL 路径(使用路径标识符)是最自然的。

如果全局 HTTP 代理方法不可行,那么在连接到 linkerd 时任何允许设置 host 或 URL路径的机制也将起作用。例如,代理设置通常可以根据每个请求直接在 HTTP 客户端中进行配置。或者,直接连接到 linkerd,并将显式的 Host: header设置为请求的一部分将允许 linkerd 在这个 host 上做路由,如同代理方式一样。

如果你在 Kubernetes 上运行, 另一种选择是通过 iptables 规则使用 。

负载均衡
服务发现
动态请求路由
请求
全局隧道
透明代理