Envoy集羣服務總線入門指南

Envoy集羣服務總線入門指南

Envoy是專爲大型現代 SOA(面向服務架構)架構設計的 L7 代理和通訊總線。html

Envoy 目前不提供單獨的預先編譯好的二進制文件,但提供了 Docker 鏡像。這是開始使用 Envoy 的最快方式。若是您但願在 Docker 容器外使用 Envoy,則須要構建它git

這些示例使用 v2 Envoy API,但僅使用 API 的靜態配置功能,這對於簡單的需求很是有用。 更復雜的需求是由動態配置來支持的。github

快速開始運行簡單示例

根據 Envoy 存儲庫中的文件運行這些命令。下面的部分給出了配置文件和執行步驟更詳細的解釋。docker

configs/google_com_proxy.v2.yaml 中提供了一個很是簡單的可用於驗證基於純 HTTP 代理的 Envoy 配置。 這不表示實際的 Envoy 部署:bootstrap

$ docker pull envoyproxy/envoy:latest
$ docker run --rm -d -p 10000:10000 envoyproxy/envoy:latest
$ curl -v localhost:10000

使用的 Docker 鏡像將包含最新版本的 Envoy 和一個基本的 Envoy 配置。此基本配置告訴 Envoy 將入站請求路由到 *.google.com。api

簡單的配置

Envoy 經過 YAML 文件中傳入的參數來進行配置。架構

admin message 是 administration 服務必須的配置。address 鍵指定監聽地址,下面的例子監聽地址是 0.0.0.0:9901。dom

admin:
  access_log_path: /tmp/admin_access.log
  address:
    socket_address: { address: 0.0.0.0, port_value: 9901 }

static_resources 包含 Envoy 啓動時靜態配置的全部內容,而不是 Envoy 在運行時動態配置的資源。v2 API Overview 描述了這一點。curl

static_resources:

listeners 規範socket

listeners:
- name: listener_0
  address:
    socket_address: { address: 0.0.0.0, port_value: 10000 }
  filter_chains:
  - filters:
    - name: envoy.http_connection_manager
      config:
        stat_prefix: ingress_http
        codec_type: AUTO
        route_config:
          name: local_route
          virtual_hosts:
          - name: local_service
            domains: ["*"]
            routes:
            - match: { prefix: "/" }
              route: { host_rewrite: www.google.com, cluster: service_google }
        http_filters:
        - name: envoy.router

clusters 規範

clusters:
- name: service_google
  connect_timeout: 0.25s
  type: LOGICAL_DNS
  # Comment out the following line to test on v6 networks
  dns_lookup_family: V4_ONLY
  lb_policy: ROUND_ROBIN
  hosts: [{ socket_address: { address: google.com, port_value: 443 }}]
  tls_context: { sni: www.google.com }

使用 Envoy Docker 鏡像

建立一個簡單的 Dockerfile 來執行 Envoy,假定 envoy.yaml(如上所述)位於本地目錄中。您能夠參考命令行選項

FROM envoyproxy/envoy:latest
COPY envoy.yaml /etc/envoy/envoy.yaml

使用如下命令構建您配置的 Docker 鏡像:

$ docker build -t envoy:v1

如今您能夠執行它:

$ docker run -d --name envoy -p 9901:9901 -p 10000:10000 envoy:v1

最後測試使用:

$ curl -v localhost:10000

若是您想經過 docker-compose 使用 envoy,則可使用 volume 覆蓋提供的配置文件。

Sandbox

咱們使用 Docker Compose 建立了許多 sandbox ,這些 sandbox 設置了不一樣的環境來測試 Envoy 的功能並顯示示例配置。 當咱們以爲人們更有興趣時,將添加和展現更多不一樣特徵的 sandbox。 如下 sandbox 可用:

其餘用例

除代理自己以外, Envoy 還被幾個特定用例捆綁爲開源發行版的一部分。

相關文章
相關標籤/搜索