如何通过API控制Jelastic Traffic Distributor

时间:2017-08-29 20:00:50

标签: load-balancing jelastic blue-green-deployment

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

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:1)

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

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

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

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

如果您使用的是Jelastic platform v 5.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 - 定义流量路由的必要方法。

您可以指定下一个可能的值:循环粘性会话故障转移

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

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

  • {environment_1} - 第一个环境的网址,例如env-XXXXXXX。{platform_domain}
  • {environment_2} - 第二个环境的网址,如env-XXXXXXX。{platform_domain}

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

请执行下一个API请求,以获取响应中的“ uniqueName ”值(在插件部分内):

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