ITPub博客

首页 > 数据库 > 数据库开发技术 > Envoy Gateway - 下一代云原生网关快速入门

Envoy Gateway - 下一代云原生网关快速入门

原创 数据库开发技术 作者:云原生运维技术 时间:2023-05-28 19:57:00 0 删除 编辑

当今互联网技术日新月异,利用现代应用程序开发出高质量的应用成为了现代技术团队不可或缺的一部分。

而在应用程序的开发过程中,Envoy Gateway 是一个不可或缺的组件,它可以帮助开发者快速、安全地构建和扩展应用程序。

下面,我将为您详细介绍如何快速入门 Envoy Gateway,并且通过实际例子来帮助您深入了解它的强大功能。

首先,让我们简单介绍一下 Envoy Gateway,它是一个使用 C++ 编写的开源代理服务器,主要用于构建微服务架构(Microservice)下的网关和负载均衡器。

Envoy 既可作为独立的网关,也可作为 Istio 中的数据面组件中的一部分。(没有背景的同学可以了解一下istio,它是一种支持创建完整微服务的服务网格平台)

Envoy Gateway 相对于其他网关,最重要的优势就是它具有高度的可扩展性和可配置性(这也是我比较认同的一地点,毕竟未来云原生场景下,声明式配置和扩展是大趋势)。

同时,由于其设计的重点在于安全性和稳定性,因此使用 Envoy 可以为您的应用程序提供扩展性和保证稳定性。


下面,让我们结合一个实际例子来演示如何使用 Envoy Gateway。

假设我们有一个 web 服务,并需要将其扩展到多个区域中,以实现全球范围内的用户访问。

这时,我们可以使用 Envoy Gateway 来实现高可用性负载均衡和全球范围的部署。

假设我们已经为该 web 服务创建了三个区域的服务器。

接下来我们将在每个区域中部署一个 Envoy 实例,并在全球范围内部署一个DNS。

这个 DNS 的目的是指向区域的 Envoy 实例,并为前端应用收集在负载均衡环境中找到正确服务的所有信息。

为此,我们需要创建一个配置文件,将全球范围内的 DNS、Envoy Gateway 以及每个区域的服务器整合在一起。

下面是一个示例配置文件:

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

static_resources:
  clusters:
  - name: cluster_example
    connect_timeout: 0.25s
    type: strict_dns
    lb_policy: round_robin
    http2_protocol_options: {}
    load_assignment:
      cluster_name: example
      endpoints:
      - lb_endpoints:
        - endpoint:
            address:
              socket_address:
                address: 192.168.99.135
                port_value: 8080
  listeners:
  - name: listener_0
    address:
      socket_address:
        address: 0.0.0.0
        port_value: 10000
    filter_chains:
    - filters:
      - name: envoy.http_connection_manager
        config:
          codec_type: auto
          stat_prefix: ingress_http
          access_log:
          - name: envoy.file_access_log
            config:
              path: /dev/stdout
          route_config:
            virtual_hosts:
            - name: example
              domains: ["*"]
              routes:
              - match:
                  prefix: "/api/hello"
                route:
                  cluster: cluster_example
                  timeout: 0.5s
              - match:
                  prefix: "/"
                route:
                  cluster: cluster_example
                  timeout: 0.5s

其中,

  • static_resource 定义了 Envoy 使用的 集群和监听器。

  • cluster_example 定义了使用的集群,即均匀负载到所有服务器。它还包括一个名为“ connect_timeout”的字段,该字段规定了Envoy在尝试管理连接时的超时时间。

  • listener_0 定义了 Envoy 将用来监听传入的请求的端口。

接着,我们只需要使用以下的命令来启动Envoy:

# 10000 为envoy 监听的地址,9901 为管理地址
docker run --rm -p 10000:10000 -p 9901:9901 -v $(pwd)/envoy.yaml:/etc/envoy/envoy.yaml envoyproxy/envoy:v1.9.0

随着Envoy实例的启动,我们现在可以使用全球范围内的DNS,轻松地将服务提供给全球范围内的用户。该DNS将负责将用户流量路由到最近的服务端点,以实现最快的响应和最佳的性能。

备注:启动后即可使用 EnvoyEndpoint:10000/api/hello 来访问 cluster_example 提供的服务。

访问管理地址,可以查看到简单的管理页面。

总的来说,Envoy Gateway 是一个非常强大、灵活和可靠的网关和负载均衡器,它可以为开发者在微服务架构中提供各种可扩展的特性。

在此文章中,我们使用实际例子演示了如何通过 Envoy 快速部署我们的应用程序,并实现全球范围的部署,以实现更快的速度和最佳的性能。



原文作者:云原生运维技术;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2017-01-18

  • 博文量
    53
  • 访问量
    20336