Envoy 1.14.1配置入门

Envoy架构图。

Envoy 1.14.1配置入门_第1张图片

Envoy中的一些术语。

  • Host:能够进行网络通信的实体(如服务器上的应用程序)。

  • Downstream:下游主机连接到Envoy,发送请求并接收响应。

  • Upstream:上游主机接收来自Envoy连接和请求并返回响应。

  • Listener:可以被下游客户端连接的命名网络(如端口、unix套接字)。

  • Cluster:Envoy连接到的一组逻辑上相似的上游主机。

  • Mesh:以提供一致的网络拓扑的一组主机。

  • Runtime configuration:与Envoy一起部署的外置实时配置系统。

官方没有提供二进制安装包,但提供了Envoy的Docker镜像。

docker pull envoyproxy/envoy:v1.14.1

Envoy的启动配置文件分为两种方式:静态配置和动态配置。

  • 静态配置是将所有信息都放在配置文件中,启动的时候直接加载。

  • 动态配置需要提供一个Envoy的服务端,用于动态生成Envoy需要的服务发现接口,这里叫XDS,通过发现服务来动态的调整配置信息,Istio就是实现了v2的API。

本文以静态配置为例,配置流量代理到百度。

vi envoy.yaml
static_resources:
  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
          route_config:
            name: local_route
            virtual_hosts:
            - name: local_service
              domains: ["*"]
              routes:
              - match: { prefix: "/" }
                route: { host_rewrite: www.baidu.com, cluster: service_baidu }
          http_filters:
          - name: envoy.router
  clusters:
  - name: service_baidu
    connect_timeout: 0.25s
    type: LOGICAL_DNS
    dns_lookup_family: V4_ONLY
    lb_policy: ROUND_ROBIN
    hosts: [{ socket_address: { address: www.baidu.com, port_value: 443 }}]
    tls_context: { sni: baidu.com }
admin:
  access_log_path: /tmp/admin_access.log
  address:
    socket_address: { address: 0.0.0.0, port_value: 9901 }

监听器(listeners)

监听器监听下游传入的流量,监听地址为 0.0.0.0,端口为 10000。

过滤器(filters)

通过 listeners 监听传入的流量,过滤器定义如何处理这些请求。每个过滤器的目的是找到传入请求的匹配项,以使其与目标地址进行匹配。以上配置将所有流量代理到 baidu.com。

之所有增加host_rewrite: www.baidu.com配置是因为百度要求必须域名访问,如果不加该配置,在后面访问百度时需要添加主机头,curl -H "Host: www.baidu.com" 127.0.0.1

集群(clusters)

当请求与过滤器匹配时,该请求将会传递到集群。Envoy将一组逻辑上相似的上游主机定义为集群。上面定义了地址为 www.baidu.com, 端口为 443的主机。

注意过滤器中的cluster值和集群中的name值需要匹配。

启动容器,将配置文件映射到容器中。

docker run --name=envoy-with-admin -d \
  -p 9901:9901 \
  -p 80:10000 \
  -v /root/envoy.yaml:/etc/envoy/envoy.yaml \
  envoyproxy/envoy:v1.14.1

docker exec -it envoy-with-admin sh
cat /etc/envoy/envoy.yaml

可以在宿主机访问Envoy,发现已经被代理到百度。

curl 127.0.0.1

 百度一下,你就知道  

关于百度 About Baidu

©2017 Baidu 使用百度前必读  意见反馈 京ICP证030173号 

可以访问管理视图。

curl 127.0.0.1:9901

  Envoy Admin
  
  


  
Command Description
certsprint certs on machine
clustersupstream cluster status
config_dumpdump current Envoy configs (experimental)
contentiondump current Envoy mutex contention stats (if enabled)
enable/disable the CPU profiler
drain listeners
cause the server to fail health checks
cause the server to pass health checks
enable/disable the heap profiler
helpprint out list of admin commands
hot_restart_versionprint the hot restart compatibility version
listenersprint listener info
query/change logging levels
memoryprint current allocation/heap usage
exit the server
readyprint server state, return 200 if LIVE, otherwise return 503
reopen access logs
reset all counters to zero
runtimeprint runtime values
modify runtime values
server_infoprint server version/status information
statsprint server stats
stats/prometheusprint server stats in prometheus format
stats/recentlookupsShow recent stat-name lookups
clear list of stat-name lookups and counter
disable recording of reset stat-name lookup names
enable recording of reset stat-name lookup names

也可以通过宿主机之外的浏览器访问,http://192.168.1.56。

Envoy 1.14.1配置入门_第2张图片

管理视图,http://192.168.1.56:9901。

Envoy 1.14.1配置入门_第3张图片

你可能感兴趣的:(Envoy,envoy,1.14.1,网关)