如何通过 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-robin、sticky-sessions 或 failover
- 范围 - 定义将被路由到第一个环境的流量百分比。
例如:
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¶ms={"extip":1,"balancerCount":1,"routingMethod":"sticky-sessions","range":50,"backend1":"{environment_1}","backend2":"{environment_2}"}
,其中
[app_unique_name] - 来自上一个请求的响应的值“uniqueName”。
JSON 中的设置与 InstallApp 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-robin、sticky-sessions 或 failover
- 范围 - 定义将被路由到第一个环境的流量百分比。
例如: 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¶ms={"extip":1,"balancerCount":1,"routingMethod":"sticky-sessions","range":50,"backend1":"{environment_1}","backend2":"{environment_2}"}
,其中
[app_unique_name] - 来自上一个请求的响应的值“uniqueName”。
JSON 中的设置与 InstallApp API 请求完全相同。