2

流量分配器 ( https://docs.jelastic.com/traffic-distributor ) 是一个很酷的功能,它可以为您的应用程序添加负载平衡并启用蓝/绿部署。但是,似乎没有 API 来控制流量分配器,因此不可能自动推出新版本。

有没有办法做到这一点?

4

1 回答 1

1

可以通过API创建和控制 Traffic Distributor 。

让我们解释一下流程...

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

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

如果您使用 Jelastic 平台 v 5.1+,则应将上述请求作为 POST 执行。

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

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

接下来,您可以使用此请求创建 Traffic Distributor:

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-sessions故障转移

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

例如: 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 请求完全相同。

于 2017-08-30T11:24:38.103 回答