更新时间:2023-12-18 GMT+08:00

创建转发策略

接口格式

方法

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。

  1. 创建后端协议为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
        }
    }

  2. 创建后端协议为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 
      } 
    }

  3. 创建后端协议为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 
      } 
    }

  4. 创建后端协议为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 
      } 
    }

  5. 创建到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 
        } 
    }

  6. 创建的到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 
        } 
    }

  7. 查看创建的转发策略。此时的转发策略并不会匹配任何请求,因为没有具体的转发规则,需要结合转发规则来实现对不同URI请求的转发。