如何通过 API 控制 Jelastic Traffic Distributor

How to control Jelastic Traffic Distributor via API

Traffic Distributor (https://docs.jelastic.com/traffic-distributor) 是一项很酷的功能,可以为您的应用添加负载平衡并启用 Blue/Green 部署。 但是,似乎没有 API 来控制流量分配器,因此无法自动发布新版本。

有办法吗?

可以通过 API 创建和控制流量分配器。

让我们解释流程...

首先,您应该登录平台并获取您的会话。 这可以通过下一个 API 请求来完成:

https://app.{platform_domain}/1.0/users/authentication/rest/signin/login={your_email}&password={your_password}

如果您使用的是 Jelastic 平台 v5.1+,您应该以 POST.

的形式执行上述请求

例如,您可以使用 curl 执行此操作:

curl 'https://app.{platform_domain}/1.0/users/authentication/rest/signin' -d "login={your_email}&password={your_password}"

接下来,您可以使用此请求创建流量分发器:

http://appstore.{platform_domain}/InstallApp?envName=[env_name]&session=[your_session]&jps=traffic-distributor&displayName=[disp_env_name]&settings={"extip":true,"balancerCount":1,"routingMethod":"round-robin","range":50,"backend1":"{environment_1}","backend2":"{environment_2}"}

,其中

  • [env_name] - 环境名称。

  • [disp_env_name] - 仪表板中可见的环境名称。

  • [your_session] - 您的会话,可以从上一个请求的响应中获取。

可以在 JSON:

中指定 Traffic Distributor 的必要设置
  • extip - 为流量分配器启用外部 IP(强烈推荐!)。
  • balancerCount - 流量分配器内的平衡器计数。 (默认 = 1
  • routingMethod - 定义流量路由的必要方法。

您可以指定下一个可能的值:round-robinsticky-sessionsfailover

  • 范围 - 定义将被路由到第一个环境的流量百分比。

例如: 0 - 所有请求都将路由到 {environment_2}, 100 - 所有请求都将路由到 {environment_1}, 50 - 所有请求将在环境之间平均平衡。

  • {environment_1} - URL 第一个环境如 env-XXXXXXX.{platform_domain}
  • {environment_2} - URL 到第二个环境,如 env-XXXXXXX.{platform_domain}

执行此方法后 - Traffic Distributor 将出现在 Jelastic Dashboard 中。

请执行下一个 API 请求以从响应中获取“uniqueName”值(在 Addons 部分中):

https://app.{Platform_domain}/1.0/environment/control/rest/getenvinfo?envname=[env_name]&session=[your_session]

,其中 [env_name] - 使用 Traffic Distributor 插件创建的环境的名称。

现在您可以通过下一个API:

来控制创建的Traffic Distributor的设置
https://appstore.{Platform_domain}/ExecuteAppAction?session=[your_session]&appUniqueName=[app_unique_name]&action=configure&params={"extip":1,"balancerCount":1,"routingMethod":"sticky-sessions","range":50,"backend1":"{environment_1}","backend2":"{environment_2}"}

,其中

[app_unique_name] - 来自上一个请求的响应的值“uniqueName”。

JSON 中的设置与 InstallApp API 请求完全相同。