创建转发策略
接口格式
方法 |
URI |
说明 |
---|---|---|
POST |
/v2.0/lbaas/l7policies |
创建转发策略。 |
应用场景
应用转发策略并结合转发规则,可以实现将不同请求转发到特定后端云服务器(或云服务器组)的功能。
举例来说,云平台的某用户部署的若干服务器都向互联网提供服务。提供的资源主要有音乐类(/music/{music_id})、图片类(/pic/{pic_id})、文件类(/file/{file_id})。如果没有特定的转发策略,那么每台后端云服务器上都有所有资源的副本文件。但一个来自客户端的请求,永远只会被分发到一台后端云服务器,所以只会有一个副本被调用,用户在存储上的成本随着后端云服务器的增多而成倍增长。
ELB服务提供的转发策略和转发规则特性可以很好地解决这个问题,达到节约存储成本的目的,使客户获得更好的经济利益。
接口约束
- L7policy只支持创建在PROTOCOL为HTTP或TERMINATED_HTTPS的listener上。
- L7policy的redirect_pool不能是listener的default_pool。
- L7policy的redirect_pool不能已经被其他listener的l7policy所使用。
场景假设
假设客户的弹性负载均衡器loadbalancer_1内有listener_1和3个后端云服务器组pool_1、pool_2和pool_3,其中pool_1作为listener_1的默认转发pool,pool_2和pool_3仅关联在loadbalancer_1上。现在需要将URI 以“/music”开头的HTTP请求到pool_2,将“/pic”开头的HTTP请求转发到pool_3。
具体步骤
由于对URI匹配,需要进行HTTP消息解析,所以创建的listener_1、pool_2和pool_3的监听协议都应该选择HTTP或HTTPS。
- 创建后端协议为HTTP的listener_1。
POST https://elb.cn-east-2.myhuaweicloud.com/v2.0/lbaas/listeners { "listener": { "protocol_port": "80", "protocol": "HTTP", "loadbalancer_id": "abe3ee34-1882-408f-a2ba-1ce7e428d6e3", "name": "listener_1", "admin_state_up": true } }
- 创建后端协议为HTTP的pool_1。
POST https://elb.cn-east-2.myhuaweicloud.com/v2.0/lbaas/pools/ { "pool": { "name":"pool_1", "lb_algorithm": "ROUND_ROBIN", "listener_id": "a7b996cf-23ec-4c0b-b310-45495d29f80c", "protocol": "HTTP", "admin_state_up": true } }
- 创建后端协议为HTTP的pool_2。
POST https://elb.cn-east-2.myhuaweicloud.com/v2.0/lbaas/pools/ { "pool": { "name":"pool_2", "lb_algorithm": "ROUND_ROBIN", "listener_id": "a7b996cf-23ec-4c0b-b310-45495d29f80c", "protocol": "HTTP", "admin_state_up": true } }
- 创建后端协议为HTTP的pool_3。
POST https://elb.cn-east-2.myhuaweicloud.com/v2.0/lbaas/pools/ { "pool": { "name":"pool_3", "lb_algorithm": "ROUND_ROBIN", "listener_id": "a7b996cf-23ec-4c0b-b310-45495d29f80c", "protocol": "HTTP", "admin_state_up": true } }
- 创建到pool_2的转发策略。
POST https://elb.cn-east-2.myhuaweicloud.com/v2.0/lbaas/l7policies { "l7policy": { "action": "REDIRECT_TO_POOL", "listener_id": "a7b996cf-23ec-4c0b-b310-45495d29f80c", "redirect_pool_id": "b9a01911-8364-44d8-ab5a-4f635820edb2", "name": "l7policy_music", "admin_state_up": true } }
- 创建的到pool_3的转发策略。
POST https://elb.cn-east-2.myhuaweicloud.com/v2.0/lbaas/l7policies { "l7policy": { "action": "REDIRECT_TO_POOL", "listener_id": "a7b996cf-23ec-4c0b-b310-45495d29f80c", "redirect_pool_id": "3a9b8338-3086-4acc-92e6-83c5e750e44a", "name": "l7policy_pic", "admin_state_up": true } }
- 查看创建的转发策略。此时的转发策略并不会匹配任何请求,因为没有具体的转发规则,需要结合转发规则来实现对不同URI请求的转发。