真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何掌握Envoy

本篇內(nèi)容介紹了“如何掌握Envoy”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

成都創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括蓋州網(wǎng)站建設(shè)、蓋州網(wǎng)站制作、蓋州網(wǎng)頁(yè)制作以及蓋州網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,蓋州網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到蓋州省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

響應(yīng)了時(shí)代號(hào)召的 Envoy

Envoy 是一個(gè)具有反向代理和負(fù)載均衡功能的單機(jī)軟件,和 Nginx、Haproxy 屬于同一類軟件。與 Nginx 和 Haproxy 相比,Envoy 有一個(gè)的重要特色是:自帶配置 API。

以 Nginx、Haproxy 為代表的負(fù)載均衡軟件,在過(guò)去很多年的實(shí)際應(yīng)用中,很少會(huì)在軟件運(yùn)行的時(shí)候更改配置,即使偶爾要修改配置文件,使用 reload 等命令重新加載就能滿足需要。

以 Kubernetes 為代表的 PaaS 或者容器管理系統(tǒng)出現(xiàn)后,IT 系統(tǒng)沿著“分工專業(yè)化、更少的人做更多同質(zhì)事情”的路線演進(jìn),在當(dāng)前的演進(jìn)過(guò)程中,反向代理與負(fù)載均衡的能力被集中管理、統(tǒng)一提供。

這一演進(jìn)在 Kubernetes 中體現(xiàn)為作為集群出口的 ingress 代理集群內(nèi)所有服務(wù),在以 istio 為代表的 ServiceMesh 中體現(xiàn)為分散在各處的代理軟件在同一個(gè)中心的控制下流轉(zhuǎn)流量。 無(wú)論是作為 Kubernetes 的出口,還是作為 Mesh 中的一個(gè)節(jié)點(diǎn),承擔(dān)流量轉(zhuǎn)發(fā)功能的組件都需要完成一個(gè)挑戰(zhàn): 在運(yùn)行過(guò)程中頻繁的更新配置。

新場(chǎng)景中的更新的頻率是每秒 N 次,遠(yuǎn)遠(yuǎn)超過(guò)以往的場(chǎng)景中以周、月乃至年為周期的更新頻率。這種情形下,熱加載配置文件的方式明顯遲緩笨重,有一些項(xiàng)目通過(guò)開(kāi)發(fā)一個(gè)帶有 API 功能的組件,實(shí)現(xiàn)生成配置文件、觸發(fā)熱加載的功能,以此賦予 Nginx、Haproxy 等傳統(tǒng)負(fù)載均衡軟件高頻更新配置的能力。

但是,如果有一個(gè)軟件原生帶有配置 API,且專注于數(shù)據(jù)平面,它作為可靠的第三方存在,能夠讓控制平面專心于規(guī)則管理,那么它是不是會(huì)很受歡迎呢?

Envoy 就是這樣一款軟件。注意,這里只是在交代背景,不為 envoy 吹票,nginx、haproxy 等都在更新演進(jìn)以適應(yīng)場(chǎng)景的變化。

Cluster、Listener 與 Filter

Envoy 的功能和使用細(xì)節(jié)繁雜,但只要搞清楚了 Cluster、Listener 和 Filter 的用途,就把握住了大方向。

Cluster 就是一組 IP,相當(dāng)于 Nginx 中 upstream,負(fù)載均衡策略在 cluster 中設(shè)置,cluster 中可以是 IP 也可以是域名:

如何掌握Envoy

難啃的配置文件

Envoy 的配置文件是從零開(kāi)始了解 Envoy 時(shí)遇到的最大困難,它的配置比較繁雜,而且缺少系統(tǒng)的介紹。

配置文件在 envoy 啟動(dòng)時(shí),用 -c 指定,內(nèi)容分為以下幾個(gè)部分:

{
  "node": {
    "id": "...",
    "cluster": "...",
    "metadata": "{...}",
    "locality": "{...}",
    "build_version": "..."
  },
  "static_resources": {
    "listeners": [],
    "clusters": [],
    "secrets": []
  },
  "dynamic_resources": {
    "lds_config": "{...}",
    "cds_config": "{...}",
    "ads_config": "{...}"
  },
  "cluster_manager": {
    "local_cluster_name": "...",
    "outlier_detection": "{...}",
    "upstream_bind_config": "{...}",
    "load_stats_config": "{...}"
  },
  "hds_config": {
    "api_type": "...",
    "cluster_names": [],
    "grpc_services": [],
    "refresh_delay": "{...}",
    "request_timeout": "{...}",
    "rate_limit_settings": "{...}"
  },
  "flags_path": "...",
  "stats_sinks": [
    {
      "name": "...",
      "config": "{...}"
    }
  ],
  "stats_config": {
    "stats_tags": [],
    "use_all_default_tags": "{...}",
    "stats_matcher": "{...}"
  },
  "stats_flush_interval": "{...}",
  "watchdog": {
    "miss_timeout": "{...}",
    "megamiss_timeout": "{...}",
    "kill_timeout": "{...}",
    "multikill_timeout": "{...}"
  },
  "tracing": {
    "http": "{...}"
  },
  "rate_limit_service": {
    "grpc_service": "{...}"
  },
  "runtime": {
    "symlink_root": "...",
    "subdirectory": "...",
    "override_subdirectory": "..."
  },
  "admin": {
    "access_log_path": "...",
    "profile_path": "...",
    "address": "{...}"
  },
  "overload_manager": {
    "refresh_interval": "{...}",
    "resource_monitors": [],
    "actions": []
  }
}

查看 envoy 容器中的默認(rèn)配置文件,有助于建立感性認(rèn)識(shí),內(nèi)容如下:

admin:
  access_log_path: /tmp/admin_access.log
  address:
    socket_address:
      protocol: TCP
      address: 127.0.0.1
      port_value: 9901
static_resources:
  listeners:
  - name: listener_0
    address:
      socket_address:
        protocol: TCP
        address: 0.0.0.0
        port_value: 10000
    filter_chains:
    - filters:
      - name: envoy.http_connection_manager
        typed_config:
          "@type": type.googleapis.com/envoy.config.filter.network.http_connection_manager.v2.HttpConnectionManager
          stat_prefix: ingress_http
          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:
  - 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
    load_assignment:
      cluster_name: service_google
      endpoints:
      - lb_endpoints:
        - endpoint:
            address:
              socket_address:
                address: www.google.com
                port_value: 443
    tls_context:
      sni: www.google.com

掌握 envoy 的配置文件,是把握住這款軟件的關(guān)鍵一步,如何才能掌握 envoy 的配置呢?把它所有的配置細(xì)節(jié)記住當(dāng)然算是掌握了,但是大多數(shù)時(shí)候我們并不需要如此,只需要知道實(shí)時(shí)反應(yīng)配置文件全部細(xì)節(jié)的文檔在哪里就足夠了,剩下的交給時(shí)間和好奇心:

如何掌握Envoy

挑大梁的 filter

幾乎可以這樣說(shuō),在實(shí)際應(yīng)用中最常提及的 envoy 功能都是 filter 提供的, filter 是流量在 envoy 內(nèi)流轉(zhuǎn)時(shí)經(jīng)歷的一個(gè)又一個(gè)處理環(huán)節(jié),每個(gè)環(huán)節(jié)都會(huì)解讀一些信息、作出一些判斷,影響下一個(gè)環(huán)節(jié)的處理。

Cluster 和 Listener 中都有 filter 的位置,有的 filter 比較復(fù)雜還實(shí)現(xiàn)了 子 filter,例如專門(mén)處理 http 協(xié)議的 HttpConnectionManager。

如何掌握Envoy

這些 filter 的名稱很好的展示了 envoy 能夠做的事情,http、thrift、dubbo、zookeeper、MySQL、mongo、redis,看起來(lái)是不是挺誘人的?

動(dòng)態(tài)配置到底怎么回事?

envoy 的一大賣(mài)點(diǎn)就是自帶配置 API,但要把它自帶的 API 用起來(lái)還挺周折。envoy 率先提出使用統(tǒng)一的 data-plane-api ,定義了一套 API 標(biāo)準(zhǔn),并期待能夠得到廣泛的認(rèn)同和采納,從新起的 Api 網(wǎng)關(guān)和 ServiceMesh 開(kāi)源項(xiàng)目的選擇來(lái)看,這一策略是有效的。

go-controller-plane 是 envoy 提出的 data-plane-api 的 go 語(yǔ)言實(shí)現(xiàn),可以用它向 envoy 下發(fā)配置,這個(gè)庫(kù)的使用方法三言兩語(yǔ)說(shuō)不清楚,先弄清楚下面三個(gè)項(xiàng)目的關(guān)系: envoy 就是單機(jī)軟件 envoy,data-plane-api 是 API 接口標(biāo)準(zhǔn),go-control-plane 是 API 接口標(biāo)準(zhǔn)的實(shí)現(xiàn)。

如何掌握Envoy

“如何掌握Envoy”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!


當(dāng)前標(biāo)題:如何掌握Envoy
鏈接分享:http://weahome.cn/article/jpicgd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部