流量分配器(https://docs.jelastic.com/traffic-distributor)是一项很酷的功能,它可以为您的应用添加负载均衡功能,并支持蓝/绿部署。 但是,似乎没有API来控制流量分配器,因此无法自动化新版本的推出。
有办法做到这一点吗?
答案 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] - 信息中心内环境的可见名称。
可以在JSON中指定Traffic Distributor的必要设置:
您可以指定下一个可能的值:循环,粘性会话或故障转移
例如: 0 - 所有请求都将路由到{environment_2}, 100 - 所有请求都将路由到{environment_1}, 50 - 所有请求将在不同环境之间平衡。
执行此方法后 - 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¶ms={"extip":1,"balancerCount":1,"routingMethod":"sticky-sessions","range":50,"backend1":"{environment_1}","backend2":"{environment_2}"}
,其中
[app_unique_name] - 上一次请求的回复中的值“ uniqueName ”。
JSON 中的设置与 InstallApp API请求完全相同。