Envoy 是一个流量转发代理工具,用于在微服务体系结构中管理网络流量。它提供了透明且高效的负载均衡、故障转移和服务发现功能,让你的服务可以无缝地协作工作。在本文中,我们将介绍如何使用 npm 包 envoy 来快速搭建 Envoy 的应用。
安装 Envoy 包
使用 npm 包管理工具,我们可以轻松地安装 envoy 包,具体指令如下:
npm install envoy
编写 Envoy 配置
使用 Envoy 的第一步是编写一个配置文件。它使用 YAML 格式,描述了 Envoy 实例如何管理服务流量。下面是一个简单的配置文件示例:
-- -------------------- ---- ------- ----------------- ---------- - -------- --------------- -------- ------- ----------- ---- -------------- - -------- - ----- ----------------------------- ------- ----------- ---- ------------ ------------ ------------- ----- ----------- -------------- - ----- ------------- -------- - --- ------- - ------ ------- --- ------ -------- ------------- ------------- - ----- ------------ ------- -- --------- - ----- ------------- ---------------- ----- ----- ------ ---------- ----------- ---------------- ------------- ------------- ---------- - ------------- - --------- -------- --------------- -------- --------- ----------- ----
该配置文件将监听端口 8080,将流量路由到负载均衡集群 local_service
。该集群使用 round_robin(轮询)负载均衡策略,它只有一个成员 —— 127.0.0.1:8081,这意味着 Envoy 将流量转发到该地址。
你也可以使用其他负载均衡策略和集群成员。Envoy 提供了很多内置的负载均衡策略,如 static、round_robin、ring_hash、maglev,以及对接 Google Kubernetes Engine 和 Amazon Elastic Container Service 等云平台的外部负载均衡策略。
启动 Envoy
当你完成 Envoy 的配置后,你需要启动它来开始监听流量并将其路由到负载均衡集群。使用以下指令启动 Envoy:
envoy -c /path/to/your/config.yml
其中 /path/to/your/config.yml
是你的配置文件的路径。
创建 Node.js 服务器应用
在这个示例中,我们尝试创建一个简单的 Node.js HTTP 服务器应用,在其 GET / 路径上返回 “Hello, World!”。下面是一个实现该功能的示例代码:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ------ - ----------------------- ---- -- - -------------- - ---- ----------------------------- -------------- --------------- --------- --- ------------------- ------------ -- -- - ------------------- ------- -- ------------------------- ---
验证 Envoy 的负载均衡
现在,我们已经有了一个运行着的 HTTP 服务器,同时 Envoy 也正在监听着。在浏览器中访问 localhost:8080
可以看到下图所示的 “Hello, World!” 消息:
你可能会诧异于这里使我们启动的 HTTP 服务器的地址是 127.0.0.1:8081
,不是标准的 HTTP 80 端口,但是不要担心,Envoy 会将所有流量转发到我们的服务器,所以我们不需要在代码中更改任何端口或 URL。
假设现在我们启动另一个服务器,来模拟另一个后端服务。在这个示例中,我们将此第二个服务器部署在 localhost:8082
地址上。在 Envoy 的配置文件中添加下面代码:
-- -------------------- ---- ------- - ----- ------------- ---------------- ----- ----- ------ ---------- ----------- ---------------- ------------- ------------- ---------- - ------------- - --------- -------- --------------- -------- --------- ----------- ---- - ------------- - --------- -------- --------------- -------- --------- ----------- ----
它添加了另一个服务器地址到集群的成员列表中。现在当我们在浏览器中刷新了几次页面,这些请求应该以循环的方式发送到两个不同的服务器,以演示 Envoy 的负载均衡功能。
结论
在本文中,我们介绍了如何使用 npm 包 envoy 快速搭建 Envoy 应用,了解了 Envoy 的基本配置和工作原理,并且以示例代码演示了它如何转发流量和进行负载均衡。希望这篇文章为你了解 Envoy 提供了基础和指导。你可以通过阅读 Envoy 的详细文档来了解更多关于它的更高级用法和配置。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066e26a563576b7b1ecf73